Миграции вынесены из команды api в one-shot сервис migrate, api и worker стартуют после него. /health отвечает 503 при недоступной БД. Отчёт больше MAX_UPLOAD_BYTES (25 МиБ) получает 413, Caddy режет на 30 МБ раньше. Том uploads убран, секреты env_file передаются сервисам явно. В CI добавлена сборка образа бэкенда без push, test_migrations сверяет модели с историей Alembic.
24 lines
703 B
Python
24 lines
703 B
Python
async def test_health_reports_db(client):
|
|
r = await client.get("/api/v1/health")
|
|
assert r.status_code == 200
|
|
body = r.json()
|
|
assert body["status"] == "ok"
|
|
assert body["database"] == "ok"
|
|
|
|
|
|
async def test_health_is_503_when_the_database_is_down(app, client):
|
|
from fintracker.api.deps import get_session
|
|
|
|
class _Broken:
|
|
async def execute(self, *_a, **_k):
|
|
raise ConnectionRefusedError
|
|
|
|
async def broken():
|
|
yield _Broken()
|
|
|
|
app.dependency_overrides[get_session] = broken
|
|
r = await client.get("/api/v1/health")
|
|
assert r.status_code == 503
|
|
assert r.json()["status"] == "degraded"
|
|
assert r.json()["database"].startswith("error")
|