apply new state handling to API functions
This commit is contained in:
@@ -3,10 +3,9 @@ from datetime import datetime as Datetime
|
||||
import pytest
|
||||
|
||||
from delta_barth.api import common
|
||||
from delta_barth.constants import HTTP_CURRENT_CONNECTION
|
||||
from delta_barth.constants import DEFAULT_API_ERR_CODE, HTTP_CURRENT_CONNECTION
|
||||
from delta_barth.errors import (
|
||||
ApiConnectionError,
|
||||
UnknownApiErrorCode,
|
||||
UnspecifiedRequestType,
|
||||
)
|
||||
from delta_barth.types import HttpRequestTypes
|
||||
@@ -68,46 +67,43 @@ 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_CURRENT_CONNECTION.session_token is None
|
||||
resp = common.login(
|
||||
resp, state = common.login(
|
||||
base_url=api_base_url,
|
||||
user_name=credentials["user"],
|
||||
password=credentials["pwd"],
|
||||
database=credentials["db"],
|
||||
mandant=credentials["mandant"],
|
||||
)
|
||||
assert resp.error is None
|
||||
assert state.code == 0
|
||||
assert HTTP_CURRENT_CONNECTION.session_token is not None
|
||||
resp = common.logout(
|
||||
resp, state = common.logout(
|
||||
base_url=api_base_url,
|
||||
)
|
||||
assert resp.error is None
|
||||
assert resp is None
|
||||
assert state.code == 0
|
||||
assert HTTP_CURRENT_CONNECTION.session_token is None
|
||||
assert "DelecoToken" not in HTTP_CURRENT_CONNECTION.headers
|
||||
resp = common.login(
|
||||
|
||||
resp, state = common.login(
|
||||
base_url=api_base_url,
|
||||
user_name=credentials["user"],
|
||||
password="WRONG_PASSWORD",
|
||||
database=credentials["db"],
|
||||
mandant=credentials["mandant"],
|
||||
)
|
||||
assert resp.error is not None
|
||||
assert resp.error.status_code == 409
|
||||
assert resp.error.message == "Nutzer oder Passwort falsch."
|
||||
assert resp is not None
|
||||
assert state.code == DEFAULT_API_ERR_CODE
|
||||
assert state.api_server_error is not None
|
||||
assert state.api_server_error.status_code == 409
|
||||
assert state.api_server_error.message == "Nutzer oder Passwort falsch."
|
||||
|
||||
|
||||
@pytest.mark.api_con_required
|
||||
def test_get_sales_prognosis_data(credentials, api_base_url):
|
||||
resp = common.login(
|
||||
resp, state = common.login(
|
||||
base_url=api_base_url,
|
||||
user_name=credentials["user"],
|
||||
password=credentials["pwd"],
|
||||
@@ -115,35 +111,45 @@ def test_get_sales_prognosis_data(credentials, api_base_url):
|
||||
mandant=credentials["mandant"],
|
||||
)
|
||||
# test without company ID
|
||||
assert resp.error is None
|
||||
assert state.code == 0
|
||||
date = Datetime(2022, 6, 1)
|
||||
resp = common.get_sales_prognosis_data(api_base_url, None, date)
|
||||
assert resp.error is None
|
||||
resp, state = common.get_sales_prognosis_data(api_base_url, None, date)
|
||||
assert state.code == 0
|
||||
assert len(resp.daten) > 0
|
||||
date = Datetime(2030, 1, 1)
|
||||
resp = common.get_sales_prognosis_data(api_base_url, None, date)
|
||||
assert resp.error is None
|
||||
resp, state = common.get_sales_prognosis_data(api_base_url, None, date)
|
||||
assert state.code == 0
|
||||
assert len(resp.daten) == 0
|
||||
# test with company ID
|
||||
assert resp.error is None
|
||||
assert state.code == 0
|
||||
date = Datetime(2022, 6, 1)
|
||||
company_id = 1024
|
||||
resp = common.get_sales_prognosis_data(api_base_url, company_id, date)
|
||||
assert resp.error is None
|
||||
resp, state = common.get_sales_prognosis_data(api_base_url, company_id, date)
|
||||
assert state.code == 0
|
||||
assert len(resp.daten) > 0
|
||||
date = Datetime(2030, 1, 1)
|
||||
resp = common.get_sales_prognosis_data(api_base_url, company_id, date)
|
||||
assert resp.error is None
|
||||
resp, state = common.get_sales_prognosis_data(api_base_url, company_id, date)
|
||||
assert state.code == 0
|
||||
assert len(resp.daten) == 0
|
||||
# test with non-existent company ID
|
||||
assert resp.error is None
|
||||
assert state.code == 0
|
||||
date = Datetime(2022, 6, 1)
|
||||
company_id = 1000024
|
||||
resp = common.get_sales_prognosis_data(api_base_url, company_id, date)
|
||||
assert resp.error is None
|
||||
resp, state = common.get_sales_prognosis_data(api_base_url, company_id, date)
|
||||
# TODO check if this behaviour is still considered "successful"
|
||||
assert state.code == 0
|
||||
assert len(resp.daten) == 0
|
||||
# test without date
|
||||
company_id = 1024
|
||||
resp, state = common.get_sales_prognosis_data(api_base_url, company_id, None)
|
||||
assert state.code == 0
|
||||
assert len(resp.daten) > 0
|
||||
# test without filters
|
||||
resp, state = common.get_sales_prognosis_data(api_base_url, None, None)
|
||||
assert state.code == 0
|
||||
assert len(resp.daten) > 0
|
||||
# close connection
|
||||
resp = common.logout(
|
||||
resp, state = common.logout(
|
||||
base_url=api_base_url,
|
||||
)
|
||||
assert resp.error is None
|
||||
assert state.code == 0
|
||||
|
||||
Reference in New Issue
Block a user