Spaces:
Running
Running
| """Tests for the Modal backend client (no network).""" | |
| import base64 | |
| import pytest | |
| import requests | |
| from buglens import backend | |
| class _FakeResp: | |
| def __init__(self, status_code=200, json_data=None, text=""): | |
| self.status_code = status_code | |
| self._json = json_data or {} | |
| self.text = text | |
| def json(self): | |
| return self._json | |
| def test_requires_endpoint() -> None: | |
| with pytest.raises(backend.BackendError): | |
| backend.analyze_via_modal("", b"img") | |
| def test_posts_base64_payload(monkeypatch) -> None: | |
| captured = {} | |
| def fake_post(url, json=None, timeout=None): | |
| captured["url"] = url | |
| captured["json"] = json | |
| captured["timeout"] = timeout | |
| return _FakeResp(json_data={"title": "ok"}) | |
| monkeypatch.setattr(requests, "post", fake_post) | |
| out = backend.analyze_via_modal("https://x.modal.run", b"PNGDATA", "note") | |
| assert out == {"title": "ok"} | |
| assert captured["url"] == "https://x.modal.run" | |
| assert captured["json"]["note"] == "note" | |
| assert base64.b64decode(captured["json"]["image_b64"]) == b"PNGDATA" | |
| def test_http_error_raises(monkeypatch) -> None: | |
| monkeypatch.setattr(requests, "post", lambda *a, **k: _FakeResp(status_code=422, text="bad")) | |
| with pytest.raises(backend.BackendError, match="422"): | |
| backend.analyze_via_modal("https://x.modal.run", b"img") | |
| def test_network_error_raises(monkeypatch) -> None: | |
| def boom(*a, **k): | |
| raise requests.ConnectionError("down") | |
| monkeypatch.setattr(requests, "post", boom) | |
| with pytest.raises(backend.BackendError, match="reach"): | |
| backend.analyze_via_modal("https://x.modal.run", b"img") | |