From bfbd80d537c8728578d67e15b006e0630dd52cd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20F=C3=B6rster?= Date: Wed, 26 Feb 2025 13:41:53 +0100 Subject: [PATCH] change known error codes --- src/delta_barth/api/common.py | 38 ++++++++++++++++++----------------- src/delta_barth/constants.py | 3 +-- tests/api/test_common.py | 9 ++++++++- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/delta_barth/api/common.py b/src/delta_barth/api/common.py index a99c9f8..2c22131 100644 --- a/src/delta_barth/api/common.py +++ b/src/delta_barth/api/common.py @@ -21,22 +21,6 @@ class DelBarApiError(BaseModel): hints: str | None -class LoginRequest(BaseModel): - userName: str - password: str - databaseName: str - mandantName: str - - -class LoginResponse(BaseModel): - token: str - error: DelBarApiError | None = None - - -class LogoutResponse(BaseModel): - error: DelBarApiError | None = None - - def _raise_for_unknown_error( resp: Response, ) -> Never: @@ -76,6 +60,19 @@ def ping( return resp +# ** login +class LoginRequest(BaseModel): + userName: str + password: str + databaseName: str + mandantName: str + + +class LoginResponse(BaseModel): + token: str + error: DelBarApiError | None = None + + def login( base_url: str, user_name: str, @@ -104,7 +101,7 @@ def login( # success response = LoginResponse(**resp.json()) HTTP_CONTENT_HEADERS.add_session_token(response.token) - elif resp.status_code in KnownApiErrorCodes.LOGIN.value: + elif resp.status_code in KnownApiErrorCodes.COMMON.value: err = DelBarApiError(status_code=resp.status_code, **resp.json()) response = LoginResponse(token="", error=err) else: # pragma: no cover @@ -113,6 +110,11 @@ def login( return response +# ** logout +class LogoutResponse(BaseModel): + error: DelBarApiError | None = None + + def logout( base_url: str, ) -> LogoutResponse: @@ -130,7 +132,7 @@ def logout( # success response = LogoutResponse() HTTP_CONTENT_HEADERS.remove_session_token() - elif resp.status_code in KnownApiErrorCodes.LOGOUT.value: + elif resp.status_code in KnownApiErrorCodes.COMMON.value: err = DelBarApiError(status_code=resp.status_code, **resp.json()) response = LogoutResponse(error=err) else: # pragma: no cover diff --git a/src/delta_barth/constants.py b/src/delta_barth/constants.py index 744ae0f..776e3f3 100644 --- a/src/delta_barth/constants.py +++ b/src/delta_barth/constants.py @@ -14,5 +14,4 @@ HTTP_CONTENT_HEADERS: Final[CurrentContentHeaders] = CurrentContentHeaders( class KnownApiErrorCodes(enum.Enum): - LOGIN = frozenset((400, 401, 409, 500)) - LOGOUT = frozenset((400, 401, 409, 500)) + COMMON = frozenset((400, 401, 409, 500)) diff --git a/tests/api/test_common.py b/tests/api/test_common.py index 85fd620..4943f56 100644 --- a/tests/api/test_common.py +++ b/tests/api/test_common.py @@ -2,7 +2,7 @@ import pytest from delta_barth.api import common from delta_barth.constants import HTTP_CONTENT_HEADERS -from delta_barth.errors import UnspecifiedRequestType +from delta_barth.errors import UnknownApiErrorCode, UnspecifiedRequestType from delta_barth.types import HttpRequestTypes "http://test.com/ " @@ -57,6 +57,13 @@ def test_ping(api_base_url): resp = common.ping(api_base_url, HttpRequestTypes.POST) +@pytest.mark.api_con_required +def test_raise_unknown_error(api_base_url): + resp = common.ping(api_base_url, HttpRequestTypes.GET) + with pytest.raises(UnknownApiErrorCode): + common._raise_for_unknown_error(resp) + + @pytest.mark.api_con_required def test_login_logout(credentials, api_base_url): assert HTTP_CONTENT_HEADERS.session_token is None