backend/tests/test_health.py
Rama master · réplica de lectura del repositorio original.
"""Tests for health check endpoints."""
import pytest
def test_health_returns_503_when_ollama_down(client, mocker):
"""GET /health must return 503 when Ollama reports unhealthy."""
mocker.patch(
"routes.system.health._health_check_ollama",
return_value=({"ollama": "unreachable"}, False),
)
mocker.patch(
"routes.system.health._health_check_providers",
return_value=({"providers": "healthy"}, None),
)
mocker.patch(
"routes.system.health._health_check_sonarr",
return_value=({"sonarr": "ok"}, None),
)
mocker.patch(
"routes.system.health._health_check_radarr",
return_value=({"radarr": "ok"}, None),
)
mocker.patch(
"routes.system.health._health_check_media_servers",
return_value=({"media_servers": "1/1 healthy"}, None),
)
resp = client.get("/api/v1/health")
assert resp.status_code == 503
assert resp.json["status"] == "unhealthy"
def test_health_returns_200_when_ollama_healthy(client, mocker):
"""GET /health must return 200 when Ollama is healthy."""
mocker.patch(
"routes.system.health._health_check_ollama",
return_value=({"ollama": "ok"}, True),
)
mocker.patch(
"routes.system.health._health_check_providers",
return_value=({"providers": "healthy"}, None),
)
mocker.patch(
"routes.system.health._health_check_sonarr",
return_value=({"sonarr": "ok"}, None),
)
mocker.patch(
"routes.system.health._health_check_radarr",
return_value=({"radarr": "ok"}, None),
)
mocker.patch(
"routes.system.health._health_check_media_servers",
return_value=({"media_servers": "1/1 healthy"}, None),
)
resp = client.get("/api/v1/health")
assert resp.status_code == 200
assert resp.json["status"] == "healthy"