fix(agent): wrap transport errors in FireflyError
This commit is contained in:
@@ -27,7 +27,12 @@ class FireflyClient:
|
||||
)
|
||||
|
||||
def _get(self, path: str, params: dict | None = None) -> dict:
|
||||
response = self._http.get(path, params=params)
|
||||
try:
|
||||
response = self._http.get(path, params=params)
|
||||
except httpx.HTTPError as exc:
|
||||
raise FireflyError(
|
||||
f"GET {path} failed: {type(exc).__name__}: {exc}"
|
||||
) from exc
|
||||
if response.status_code != 200:
|
||||
raise FireflyError(
|
||||
f"GET {path} -> {response.status_code}: {response.text[:200]}"
|
||||
|
||||
@@ -47,3 +47,11 @@ def test_accounts_walks_all_pages():
|
||||
|
||||
accounts = make_client(handler).accounts()
|
||||
assert [a["attributes"]["name"] for a in accounts] == ["NFCU Checking", "Venmo"]
|
||||
|
||||
|
||||
def test_transport_errors_wrapped_in_firefly_error():
|
||||
def handler(request: httpx.Request) -> httpx.Response:
|
||||
raise httpx.ConnectError("connection refused")
|
||||
|
||||
with pytest.raises(FireflyError, match="ConnectError"):
|
||||
make_client(handler).about()
|
||||
|
||||
Reference in New Issue
Block a user