Initial commit: import from sinmb79/Gov-chat-bot
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
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
|
||||
Reference in New Issue
Block a user