- shared/ = portable Android-origin sources vendored from deferred/desktop-server (app/build.gradle.kts srcDir repointed; PlaybackController.kt excluded as Android-only) - backend/ = bundled-lite engine (SQLite + inline queue); .venv symlinked from the old checkout, PYTHONPATH pins THIS backend's code over any editable install - repoRoot() resolves this project dir (env SHONAR_REPO still wins); desktop-dev.sh watches shared/ + backend/ - Verified: :app:compileKotlin + :app:test green (23 tests); engine boots on :8010, self-migrates, /healthz ok
29 lines
986 B
Python
29 lines
986 B
Python
"""Health-check and system-status tests."""
|
|
|
|
|
|
async def test_healthz(client):
|
|
r = await client.get("/api/v1/healthz")
|
|
assert r.status_code == 200
|
|
body = r.json()
|
|
assert body["status"] == "ok"
|
|
assert body["uptime_seconds"] >= 0
|
|
|
|
|
|
async def test_readyz_with_db(client):
|
|
r = await client.get("/api/v1/readyz")
|
|
assert r.status_code == 200
|
|
assert r.json() == {"status": "ok", "database": True}
|
|
|
|
|
|
async def test_system_status_reports_ai_state_honestly(client):
|
|
r = await client.get("/api/v1/system/status")
|
|
assert r.status_code == 200
|
|
body = r.json()
|
|
# Default test config: AI disabled, no external calls.
|
|
assert body["ai"]["transcription_enabled"] is False
|
|
assert body["ai"]["llm_enabled"] is False
|
|
assert body["ai"]["external_ai_in_use"] is False
|
|
# No secrets ever present in the public status payload.
|
|
body_text = r.text.lower()
|
|
for leak in ("api_key", "password", "secret_key"):
|
|
assert leak not in body_text
|