def test_mac_keychain_error(): from msal_extensions.osx import Keychain, KeychainError with mock.patch.object(Keychain, "get_generic_password", side_effect=KeychainError(-1)): credential = VSCodeCredential() with pytest.raises(CredentialUnavailableError): token = credential.get_token("scope")
def test_user_agent(): transport = validating_transport( requests=[Request(required_headers={"User-Agent": USER_AGENT})], responses=[mock_response(json_payload=build_aad_response(access_token="**"))], ) with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value="VALUE"): credential = VSCodeCredential(transport=transport) credential.get_token("scope")
def test_policies_configurable(): policy = mock.Mock(spec_set=SansIOHTTPPolicy, on_request=mock.Mock()) def send(*_, **__): return mock_response(json_payload=build_aad_response(access_token="**")) with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value="VALUE"): credential = VSCodeCredential(policies=[policy], transport=mock.Mock(send=send)) credential.get_token("scope") assert policy.on_request.called
def test_no_obtain_token_if_cached(): expected_token = AccessToken("token", 42) mock_client = mock.Mock(spec=object) mock_client.obtain_token_by_refresh_token = mock.Mock(return_value=expected_token) mock_client.get_cached_access_token = mock.Mock(return_value="VALUE") with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value="VALUE"): credential = VSCodeCredential(_client=mock_client) token = credential.get_token("scope") assert mock_client.obtain_token_by_refresh_token.call_count == 0
def test_redeem_token(): expected_token = AccessToken("token", 42) expected_value = "value" mock_client = mock.Mock(spec=object) mock_client.obtain_token_by_refresh_token = mock.Mock(return_value=expected_token) mock_client.get_cached_access_token = mock.Mock(return_value=None) with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value=expected_value): credential = VSCodeCredential(_client=mock_client) token = credential.get_token("scope") assert token is expected_token mock_client.obtain_token_by_refresh_token.assert_called_with(("scope",), expected_value) assert mock_client.obtain_token_by_refresh_token.call_count == 1
def test_credential_unavailable_error(): with mock.patch(VSCodeCredential.__module__ + ".get_credentials", return_value=None): credential = VSCodeCredential() with pytest.raises(CredentialUnavailableError): token = credential.get_token("scope")
def test_no_scopes(): """The credential should raise ValueError when get_token is called with no scopes""" credential = VSCodeCredential() with pytest.raises(ValueError): credential.get_token()