diff --git a/src/delta_barth/api/common.py b/src/delta_barth/api/common.py index 6f0d2de..6a02173 100644 --- a/src/delta_barth/api/common.py +++ b/src/delta_barth/api/common.py @@ -44,6 +44,8 @@ class Session: database: str, mandant: str, ) -> None: + if self.logged_in: + self.logout() self._creds = validate_credentials( username=username, password=password, @@ -60,6 +62,8 @@ class Session: self, base_url: str, ) -> None: + if self.logged_in: + self.logout() self._base_url = base_url @property diff --git a/tests/api/test_common.py b/tests/api/test_common.py index 2dde937..cf52814 100644 --- a/tests/api/test_common.py +++ b/tests/api/test_common.py @@ -54,7 +54,7 @@ def test_ping(api_base_url): resp = common.ping(api_base_url, HttpRequestTypes.POST) -def test_session(credentials, api_base_url): +def test_session_set_ApiInfo_LoggedOut(credentials, api_base_url): session = common.Session(HTTP_BASE_CONTENT_HEADERS) assert session.session_token is None @@ -75,6 +75,42 @@ def test_session(credentials, api_base_url): assert not session.logged_in +@pytest.mark.api_con_required +def test_session_set_ApiInfo_LoggedIn(credentials, api_base_url): + session = common.Session(HTTP_BASE_CONTENT_HEADERS) + # prepare login + assert session.session_token is None + assert session._creds is None + assert session._base_url is None + session.set_base_url(api_base_url) + session.set_credentials( + username=credentials["user"], + password=credentials["pwd"], + database=credentials["db"], + mandant=credentials["mandant"], + ) + session.login() + assert session._base_url is not None + assert session.logged_in + # reset base URL + session.set_base_url(api_base_url) + assert session._base_url is not None + assert not session.logged_in + assert session.session_token is None + # reset credentials + session.login() + assert session.logged_in + session.set_credentials( + username=credentials["user"], + password=credentials["pwd"], + database=credentials["db"], + mandant=credentials["mandant"], + ) + assert session._creds is not None + assert not session.logged_in + assert session.session_token is None + + @pytest.mark.api_con_required def test_login_logout_Success(session, credentials): assert not session.logged_in