diff --git a/src/blueapi/client/client.py b/src/blueapi/client/client.py index ce5ec30016..8f72e085f1 100644 --- a/src/blueapi/client/client.py +++ b/src/blueapi/client/client.py @@ -775,6 +775,11 @@ def login(self, token_path: Path | None = None): else: print("Server is not configured to use authentication!") + def logout(self): + if sm := self._rest.session_manager: + sm.logout() + self._rest.session_manager = None + class PlanFailedError(Exception): def __init__(self, typ: str, message: str): diff --git a/tests/unit_tests/client/test_client.py b/tests/unit_tests/client/test_client.py index eaf96a3b2d..2a768c56af 100644 --- a/tests/unit_tests/client/test_client.py +++ b/tests/unit_tests/client/test_client.py @@ -1000,3 +1000,13 @@ def test_client_login_no_oidc( client.login() mock_session_manager.assert_not_called() + + +def test_client_logout(mock_rest: Mock, client: BlueapiClient): + mock_session_manager = Mock() + mock_rest.session_manager = mock_session_manager + + client.logout() + + mock_session_manager.logout.assert_called_once() + assert mock_rest.session_manager is None