52 lines
1.4 KiB
Python
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
|