change known error codes

This commit is contained in:
Florian Förster 2025-02-26 13:41:53 +01:00
parent ffbe63d1a5
commit bfbd80d537
3 changed files with 29 additions and 21 deletions

View File

@ -21,22 +21,6 @@ class DelBarApiError(BaseModel):
hints: str | None 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( def _raise_for_unknown_error(
resp: Response, resp: Response,
) -> Never: ) -> Never:
@ -76,6 +60,19 @@ def ping(
return resp 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( def login(
base_url: str, base_url: str,
user_name: str, user_name: str,
@ -104,7 +101,7 @@ def login(
# success # success
response = LoginResponse(**resp.json()) response = LoginResponse(**resp.json())
HTTP_CONTENT_HEADERS.add_session_token(response.token) 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()) err = DelBarApiError(status_code=resp.status_code, **resp.json())
response = LoginResponse(token="", error=err) response = LoginResponse(token="", error=err)
else: # pragma: no cover else: # pragma: no cover
@ -113,6 +110,11 @@ def login(
return response return response
# ** logout
class LogoutResponse(BaseModel):
error: DelBarApiError | None = None
def logout( def logout(
base_url: str, base_url: str,
) -> LogoutResponse: ) -> LogoutResponse:
@ -130,7 +132,7 @@ def logout(
# success # success
response = LogoutResponse() response = LogoutResponse()
HTTP_CONTENT_HEADERS.remove_session_token() 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()) err = DelBarApiError(status_code=resp.status_code, **resp.json())
response = LogoutResponse(error=err) response = LogoutResponse(error=err)
else: # pragma: no cover else: # pragma: no cover

View File

@ -14,5 +14,4 @@ HTTP_CONTENT_HEADERS: Final[CurrentContentHeaders] = CurrentContentHeaders(
class KnownApiErrorCodes(enum.Enum): class KnownApiErrorCodes(enum.Enum):
LOGIN = frozenset((400, 401, 409, 500)) COMMON = frozenset((400, 401, 409, 500))
LOGOUT = frozenset((400, 401, 409, 500))

View File

@ -2,7 +2,7 @@ import pytest
from delta_barth.api import common from delta_barth.api import common
from delta_barth.constants import HTTP_CONTENT_HEADERS 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 from delta_barth.types import HttpRequestTypes
"http://test.com/ " "http://test.com/ "
@ -57,6 +57,13 @@ def test_ping(api_base_url):
resp = common.ping(api_base_url, HttpRequestTypes.POST) 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 @pytest.mark.api_con_required
def test_login_logout(credentials, api_base_url): def test_login_logout(credentials, api_base_url):
assert HTTP_CONTENT_HEADERS.session_token is None assert HTTP_CONTENT_HEADERS.session_token is None