Files
Gov-chat-bot/backend/tests/test_ready.py
2026-03-26 12:49:43 +09:00

41 lines
1.4 KiB
Python

import pytest
from unittest.mock import AsyncMock, patch, MagicMock
@pytest.mark.asyncio
async def test_ready_ok_when_all_services_up(client):
"""DB/Redis mock 정상 → GET /ready → 200, ready=True."""
mock_redis = AsyncMock()
mock_redis.ping = AsyncMock(return_value=True)
mock_redis.aclose = AsyncMock()
with patch("app.routers.health.aioredis.from_url", return_value=mock_redis):
response = await client.get("/ready")
assert response.status_code == 200
data = response.json()
assert data["ready"] is True
assert data["checks"]["db"] == "ok"
@pytest.mark.asyncio
async def test_ready_503_when_db_down(client):
"""DB mock 오류 → GET /ready → 503, ready=False."""
mock_redis = AsyncMock()
mock_redis.ping = AsyncMock(return_value=True)
mock_redis.aclose = AsyncMock()
# DB 연결 실패 시뮬레이션
mock_session = AsyncMock()
mock_session.__aenter__ = AsyncMock(return_value=mock_session)
mock_session.__aexit__ = AsyncMock(return_value=None)
mock_session.execute = AsyncMock(side_effect=Exception("DB connection failed"))
with patch("app.routers.health.aioredis.from_url", return_value=mock_redis), \
patch("app.routers.health.AsyncSessionLocal", return_value=mock_session):
response = await client.get("/ready")
assert response.status_code == 503
data = response.json()
assert data["ready"] is False