import requests from mnemocore.mcp.adapters.api_adapter import MnemoCoreAPIAdapter, MnemoCoreAPIError class DummyResponse: def __init__(self, status_code=200, data=None, text=""): self.status_code = status_code self._data = data if data is not None else {} self.text = text def json(self): return self._data def test_adapter_success(monkeypatch): def fake_request(method, url, json, headers, timeout): assert method == "GET" assert url.endswith("/health") assert headers["X-API-Key"] == "key" assert timeout == 5 return DummyResponse(status_code=200, data={"status": "healthy"}) monkeypatch.setattr(requests, "request", fake_request) adapter = MnemoCoreAPIAdapter("http://localhost:8100", "key", timeout_seconds=5) result = adapter.health() assert result["status"] == "healthy" def test_adapter_http_error(monkeypatch): def fake_request(method, url, json, headers, timeout): return DummyResponse(status_code=404, data={"detail": "not found"}) monkeypatch.setattr(requests, "request", fake_request) adapter = MnemoCoreAPIAdapter("http://localhost:8100", "key") try: adapter.get_memory("missing") assert False, "Expected MnemoCoreAPIError" except MnemoCoreAPIError as exc: assert exc.status_code == 404 def test_adapter_network_error(monkeypatch): def fake_request(method, url, json, headers, timeout): raise requests.RequestException("timeout") monkeypatch.setattr(requests, "request", fake_request) adapter = MnemoCoreAPIAdapter("http://localhost:8100", "key") try: adapter.stats() assert False, "Expected MnemoCoreAPIError" except MnemoCoreAPIError as exc: assert "Upstream request failed" in str(exc)