@@ -177,14 +177,22 @@ def test_get_child_device(mock_rest: Mock, client: BlueapiClient):
177177 assert x == "foo.x"
178178
179179
180- def test_get_state (client : BlueapiClient ):
180+ def test_state_property (client : BlueapiClient ):
181181 assert client .state == WorkerState .IDLE
182182
183183
184- def test_get_active_task (client : BlueapiClient ):
184+ def test_get_state (client : BlueapiClient ):
185+ assert client .get_state () == WorkerState .IDLE
186+
187+
188+ def test_active_task_property (client : BlueapiClient ):
185189 assert client .active_task == ACTIVE_TASK
186190
187191
192+ def test_get_active_task (client : BlueapiClient ):
193+ assert client .get_active_task () == ACTIVE_TASK
194+
195+
188196def test_create_and_start_task_calls_both_creating_and_starting_endpoints (
189197 client : BlueapiClient ,
190198 mock_rest : Mock ,
@@ -235,10 +243,14 @@ def test_create_and_start_task_fails_if_task_start_fails(
235243 )
236244
237245
238- def test_get_environment (client : BlueapiClient ):
246+ def test_environment_property (client : BlueapiClient ):
239247 assert client .environment == ENV
240248
241249
250+ def test_get_environment (client : BlueapiClient ):
251+ assert client .get_environment () == ENV
252+
253+
242254def test_reload_environment (
243255 client : BlueapiClient ,
244256 mock_rest : Mock ,
@@ -491,10 +503,14 @@ def callback(on_event: Callable[[AnyEvent, MessageContext], None]):
491503 mock_on_event .assert_called_once_with (COMPLETE_EVENT )
492504
493505
494- def test_get_oidc_config (client , mock_rest ):
506+ def test_oidc_config_property (client , mock_rest ):
495507 assert client .oidc_config == mock_rest .get_oidc_config ()
496508
497509
510+ def test_get_oidc_config (client , mock_rest ):
511+ assert client .get_oidc_config () == mock_rest .get_oidc_config ()
512+
513+
498514def test_get_plans_span_ok (exporter : JsonObjectSpanExporter , client : BlueapiClient ):
499515 with asserting_span_exporter (exporter , "plans" ):
500516 _ = client .plans
@@ -849,3 +865,38 @@ def subscribe(on_event: Callable[[AnyEvent, MessageContext], None]):
849865
850866 assert failing_callback .mock_calls == [call (evt ), call (COMPLETE_EVENT )]
851867 assert callback .mock_calls == [call (evt ), call (COMPLETE_EVENT )]
868+
869+
870+ @patch ("blueapi.client.client.SessionManager" )
871+ def test_client_login_existing_login (mock_session_manager : Mock , client : BlueapiClient ):
872+ client .login ()
873+
874+ mock_session_manager .from_cache .assert_called_once ()
875+ mock_session_manager .from_cache ().get_valid_access_token .assert_called_once ()
876+
877+
878+ @patch ("blueapi.client.client.SessionManager" )
879+ def test_client_new_login (mock_session_manager : Mock , client : BlueapiClient ):
880+ manager = Mock ()
881+ manager .get_valid_access_token .side_effect = ValueError ("No existing token" )
882+
883+ mock_session_manager .from_cache .return_value = manager
884+
885+ client .login ()
886+
887+ mock_session_manager .assert_called_once ()
888+ mock_session_manager .return_value .start_device_flow .assert_called_once ()
889+
890+
891+ @patch ("blueapi.client.client.SessionManager" )
892+ def test_client_login_no_oidc (
893+ mock_session_manager : Mock , mock_rest : Mock , client : BlueapiClient
894+ ):
895+ mock_rest .get_oidc_config .return_value = None
896+ mock_session_manager .from_cache .return_value .get_valid_access_token .side_effect = (
897+ ValueError ("No existing token" )
898+ )
899+
900+ client .login ()
901+
902+ mock_session_manager .assert_not_called ()
0 commit comments