from fastapi.testclient import TestClient from pipu_rec.api.app import create_app from pipu_rec.settings import Settings async def ok() -> None: return None async def down() -> None: raise ConnectionError("connection refused") def client(checks=None) -> TestClient: # type: ignore[no-untyped-def] settings = Settings(internal_token="secret", PIPU_VERSION="1.2.3") return TestClient(create_app(settings, checks)) def test_healthz() -> None: r = client().get("/healthz") assert r.status_code == 200 assert r.json() == {"status": "ok"} def test_readyz_all_up() -> None: r = client({"postgres": ok, "redis": ok}).get("/readyz") assert r.status_code == 200 assert r.json() == {"status": "ok", "checks": {"postgres": "ok", "redis": "ok"}} def test_readyz_dependency_down() -> None: r = client({"postgres": ok, "redis": down}).get("/readyz") assert r.status_code == 503 assert r.json()["checks"]["redis"] == "connection refused" def test_internal_status_requires_token() -> None: c = client() assert c.get("/internal/status").status_code == 401 assert c.get("/internal/status", headers={"Authorization": "Bearer wrong"}).status_code == 401 r = c.get("/internal/status", headers={"Authorization": "Bearer secret"}) assert r.status_code == 200 assert r.json()["version"] == "1.2.3"