Files
birdcam/tests/test_camera.py

52 lines
1.4 KiB
Python

from collections.abc import Generator
from typing import Any
import pytest
from flask.testing import FlaskClient
from src.app import app
@pytest.fixture
def client() -> Generator[FlaskClient, Any, Any]:
app.config["TESTING"] = True
with app.test_client() as client:
yield client
def test_heartbeat_status_code(client: FlaskClient) -> None:
response = client.get("/heartbeat")
assert response.status_code == 200
def test_camera_start(client: FlaskClient) -> None:
response = client.post("/camera/start")
assert response.status_code == 200
assert response.get_json()["status"] == "started"
def test_camera_stop(client: FlaskClient) -> None:
client.post("/camera/start")
response = client.post("/camera/stop")
assert response.status_code == 200
assert response.get_json()["status"] == "stopped"
def test_camera_status(client: FlaskClient) -> None:
response = client.get("/camera/status")
assert response.status_code == 200
data = response.get_json()
assert "running" in data
assert "ready" in data
def test_hls_404_when_not_running(client: FlaskClient) -> None:
response = client.get("/camera/hls/stream.m3u8")
assert response.status_code == 404
def test_index_page(client: FlaskClient) -> None:
response = client.get("/")
assert response.status_code == 200
assert b"Pi Camera" in response.data