From 3dcfe7014e13fa327631a60d8b891fb11103a04e Mon Sep 17 00:00:00 2001 From: Jack Michaud Date: Mon, 2 Jan 2023 21:06:00 -0500 Subject: [PATCH] test: add test for unhandled api error --- oasst-shared/oasst_shared/api_client.py | 2 +- oasst-shared/tests/test_oasst_api_client.py | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/oasst-shared/oasst_shared/api_client.py b/oasst-shared/oasst_shared/api_client.py index e8439517..404521db 100644 --- a/oasst-shared/oasst_shared/api_client.py +++ b/oasst-shared/oasst_shared/api_client.py @@ -70,7 +70,7 @@ class OasstApiClient: if response.status >= 300: data = await response.json() try: - oasst_error = protocol_schema.OasstErrorResponse(**data) + oasst_error = protocol_schema.OasstErrorResponse(**(data or {})) raise OasstError( error_code=oasst_error.error_code, message=oasst_error.message, diff --git a/oasst-shared/tests/test_oasst_api_client.py b/oasst-shared/tests/test_oasst_api_client.py index 8649d891..fdb743ce 100644 --- a/oasst-shared/tests/test_oasst_api_client.py +++ b/oasst-shared/tests/test_oasst_api_client.py @@ -106,3 +106,23 @@ async def test_can_handle_oasst_error_from_api( with pytest.raises(OasstError): await oasst_api_client_fake_http.post("/some-path", data={}) + + +@pytest.mark.asyncio +async def test_can_handle_unknown_error_from_api( + oasst_api_client_fake_http: OasstApiClient, + mock_http_session: MockClientSession, +): + response_body = "Internal Server Error" + status_code = 500 + + mock_http_session.set_response( + mock.AsyncMock( + status=status_code, + text=mock.AsyncMock(return_value=response_body), + json=mock.AsyncMock(return_value=None), + ) + ) + + with pytest.raises(OasstError): + await oasst_api_client_fake_http.post("/some-path", data={})