개선관리 요구사항과 Google 로그인을 완료
This commit is contained in:
parent
cc0a15b7c6
commit
2a39636163
112 changed files with 10166 additions and 527 deletions
50
apps/api/app/test_engine_health_contract.py
Normal file
50
apps/api/app/test_engine_health_contract.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
"""실시간 내담자 공급자 준비상태의 API health 계약."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
from unittest.mock import AsyncMock, patch
|
||||
|
||||
from . import main
|
||||
|
||||
|
||||
class EngineHealthContractTest(unittest.IsolatedAsyncioTestCase):
|
||||
async def test_health_is_degraded_when_live_client_lane_is_unready(self) -> None:
|
||||
engine_detail = {
|
||||
"ok": False,
|
||||
"detail": "실시간 내담자 공급자 claude_cli: login required",
|
||||
"default_engine": {
|
||||
"provider": "agy_cli",
|
||||
"ok": True,
|
||||
"detail": "ready",
|
||||
},
|
||||
"live_client_engine": {
|
||||
"provider": "claude_cli",
|
||||
"ok": False,
|
||||
"detail": "login required",
|
||||
},
|
||||
}
|
||||
with (
|
||||
patch.object(main, "healthcheck", AsyncMock(return_value=True)),
|
||||
patch.object(
|
||||
main.engine_client,
|
||||
"health_detail",
|
||||
AsyncMock(return_value=engine_detail),
|
||||
),
|
||||
patch.object(main.engine_client, "engine_mode", "agy_cli"),
|
||||
patch.object(main.engine_client, "live_client_provider", "claude_cli"),
|
||||
):
|
||||
response = await main.health()
|
||||
|
||||
self.assertEqual(response["status"], "degraded")
|
||||
self.assertFalse(response["engine"])
|
||||
self.assertEqual(response["engine_mode"], "agy_cli")
|
||||
self.assertEqual(response["live_client_provider"], "claude_cli")
|
||||
self.assertEqual(
|
||||
response["live_client_engine"],
|
||||
engine_detail["live_client_engine"],
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue