test(ariadne): cover Metis watch edges
This commit is contained in:
parent
40c1a3652b
commit
03f9118f21
@ -111,3 +111,90 @@ def test_watch_sentinel_handles_http_error(monkeypatch) -> None:
|
|||||||
assert summary.status == "error"
|
assert summary.status == "error"
|
||||||
assert summary.detail == "upstream fail"
|
assert summary.detail == "upstream fail"
|
||||||
assert summary.result["detail"] == "upstream fail"
|
assert summary.result["detail"] == "upstream fail"
|
||||||
|
|
||||||
|
|
||||||
|
def test_normalize_payload_and_ready(monkeypatch) -> None:
|
||||||
|
monkeypatch.setattr(
|
||||||
|
"ariadne.services.metis.settings",
|
||||||
|
SimpleNamespace(metis_base_url="http://metis", metis_watch_url="", metis_timeout_sec=10.0),
|
||||||
|
)
|
||||||
|
service = metis_module.MetisService()
|
||||||
|
|
||||||
|
assert service.ready() is True
|
||||||
|
assert metis_module._normalize_payload(None) == {}
|
||||||
|
assert metis_module._normalize_payload(["watched"]) == {"result": ["watched"]}
|
||||||
|
|
||||||
|
monkeypatch.setattr(
|
||||||
|
"ariadne.services.metis.settings",
|
||||||
|
SimpleNamespace(metis_base_url="", metis_watch_url="", metis_timeout_sec=10.0),
|
||||||
|
)
|
||||||
|
assert service.ready() is False
|
||||||
|
|
||||||
|
|
||||||
|
def test_watch_sentinel_handles_non_json_success(monkeypatch) -> None:
|
||||||
|
monkeypatch.setattr(
|
||||||
|
"ariadne.services.metis.settings",
|
||||||
|
SimpleNamespace(metis_base_url="http://metis", metis_watch_url="", metis_timeout_sec=10.0),
|
||||||
|
)
|
||||||
|
client = DummyClient(DummyResponse(payload=ValueError("not json")))
|
||||||
|
monkeypatch.setattr(metis_module.httpx, "Client", lambda **kwargs: client)
|
||||||
|
|
||||||
|
summary = metis_module.MetisService().watch_sentinel()
|
||||||
|
|
||||||
|
assert summary.status == "ok"
|
||||||
|
assert summary.result == {}
|
||||||
|
|
||||||
|
|
||||||
|
def test_watch_sentinel_handles_http_error_without_json(monkeypatch) -> None:
|
||||||
|
monkeypatch.setattr(
|
||||||
|
"ariadne.services.metis.settings",
|
||||||
|
SimpleNamespace(metis_base_url="http://metis", metis_watch_url="", metis_timeout_sec=10.0),
|
||||||
|
)
|
||||||
|
client = DummyClient(DummyResponse(status_code=503, payload=ValueError("not json")))
|
||||||
|
monkeypatch.setattr(metis_module.httpx, "Client", lambda **kwargs: client)
|
||||||
|
|
||||||
|
summary = metis_module.MetisService().watch_sentinel()
|
||||||
|
|
||||||
|
assert summary.status == "error"
|
||||||
|
assert summary.detail == "metis watch failed with HTTP 503"
|
||||||
|
|
||||||
|
|
||||||
|
def test_watch_sentinel_handles_client_exception(monkeypatch) -> None:
|
||||||
|
monkeypatch.setattr(
|
||||||
|
"ariadne.services.metis.settings",
|
||||||
|
SimpleNamespace(metis_base_url="http://metis", metis_watch_url="", metis_timeout_sec=10.0),
|
||||||
|
)
|
||||||
|
|
||||||
|
class FailingClient:
|
||||||
|
def __enter__(self):
|
||||||
|
raise RuntimeError("network down")
|
||||||
|
|
||||||
|
def __exit__(self, exc_type, exc, tb):
|
||||||
|
return False
|
||||||
|
|
||||||
|
monkeypatch.setattr(metis_module.httpx, "Client", lambda **kwargs: FailingClient())
|
||||||
|
|
||||||
|
summary = metis_module.MetisService().watch_sentinel()
|
||||||
|
|
||||||
|
assert summary.status == "error"
|
||||||
|
assert summary.detail == "network down"
|
||||||
|
|
||||||
|
|
||||||
|
def test_watch_sentinel_normalizes_message_and_unknown_status(monkeypatch) -> None:
|
||||||
|
monkeypatch.setattr(
|
||||||
|
"ariadne.services.metis.settings",
|
||||||
|
SimpleNamespace(metis_base_url="http://metis", metis_watch_url="", metis_timeout_sec=10.0),
|
||||||
|
)
|
||||||
|
client = DummyClient(DummyResponse(payload={"status": "warning", "message": " watched with warnings "}))
|
||||||
|
monkeypatch.setattr(metis_module.httpx, "Client", lambda **kwargs: client)
|
||||||
|
|
||||||
|
summary = metis_module.MetisService().watch_sentinel()
|
||||||
|
|
||||||
|
assert summary.status == "ok"
|
||||||
|
assert summary.detail == "watched with warnings"
|
||||||
|
|
||||||
|
client.response = DummyResponse(payload={"status": "paused"})
|
||||||
|
summary = metis_module.MetisService().watch_sentinel()
|
||||||
|
|
||||||
|
assert summary.status == "ok"
|
||||||
|
assert summary.detail == "metis watch returned paused"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user