def test_credscache_new_token_added_by_adal(self, mock_adal_auth_context, _, mock_open_for_write, mock_read_file): # pylint: disable=line-too-long token_entry2 = { "accessToken": "new token", "tokenType": "Bearer", "userId": self.user1 } def acquire_token_side_effect(*args): # pylint: disable=unused-argument creds_cache.adal_token_cache.has_state_changed = True return token_entry2 def get_auth_context(authority, **kwargs): # pylint: disable=unused-argument mock_adal_auth_context.cache = kwargs['cache'] return mock_adal_auth_context mock_adal_auth_context.acquire_token.side_effect = acquire_token_side_effect mock_open_for_write.return_value = FileHandleStub() mock_read_file.return_value = [self.token_entry1] creds_cache = CredsCache(auth_ctx_factory=get_auth_context) #action mgmt_resource = 'https://management.core.windows.net/' token_type, token = creds_cache.retrieve_token_for_user( self.user1, self.tenant_id, mgmt_resource) mock_adal_auth_context.acquire_token.assert_called_once_with( 'https://management.core.windows.net/', self.user1, mock.ANY) #assert mock_open_for_write.assert_called_with(mock.ANY, 'w+') self.assertEqual(token, 'new token') self.assertEqual(token_type, token_entry2['tokenType'])
def test_credscache_add_new_sp_creds(self, _, mock_open_for_write, mock_read_file): test_sp = { "servicePrincipalId": "myapp", "servicePrincipalTenant": "mytenant", "accessToken": "Secret" } test_sp2 = { "servicePrincipalId": "myapp2", "servicePrincipalTenant": "mytenant2", "accessToken": "Secret2" } mock_open_for_write.return_value = FileHandleStub() mock_read_file.return_value = [self.token_entry1, test_sp] creds_cache = CredsCache() #action creds_cache.save_service_principal_cred( test_sp2['servicePrincipalId'], test_sp2['accessToken'], test_sp2['servicePrincipalTenant']) #assert token_entries = [ entry for _, entry in creds_cache.adal_token_cache.read_items() ] self.assertEqual(token_entries, [self.token_entry1]) self.assertEqual(creds_cache._service_principal_creds, [test_sp, test_sp2]) mock_open_for_write.assert_called_with(mock.ANY, 'w+')
def test_credscache_remove_creds(self, _, mock_open_for_write, mock_read_file): test_sp = { "servicePrincipalId": "myapp", "servicePrincipalTenant": "mytenant", "accessToken": "Secret" } mock_open_for_write.return_value = FileHandleStub() mock_read_file.return_value = [self.token_entry1, test_sp] creds_cache = CredsCache() #action #1, logout a user creds_cache.remove_cached_creds(self.user1) #assert #1 token_entries = [entry for _, entry in creds_cache.adal_token_cache.read_items()] self.assertEqual(token_entries, []) #action #2 logout a service principal creds_cache.remove_cached_creds('myapp') #assert #2 self.assertEqual(creds_cache._service_principal_creds, []) mock_open_for_write.assert_called_with(mock.ANY, 'w+') self.assertEqual(mock_open_for_write.call_count, 2)
def test_credscache_new_token_added_by_adal(self, mock_adal_auth_context, _, mock_open_for_write, mock_read_file): # pylint: disable=line-too-long token_entry2 = { "accessToken": "new token", "tokenType": "Bearer", "userId": self.user1 } def acquire_token_side_effect(*args): # pylint: disable=unused-argument creds_cache.adal_token_cache.has_state_changed = True return token_entry2 def get_auth_context(authority, **kwargs): # pylint: disable=unused-argument mock_adal_auth_context.cache = kwargs['cache'] return mock_adal_auth_context mock_adal_auth_context.acquire_token.side_effect = acquire_token_side_effect mock_open_for_write.return_value = FileHandleStub() mock_read_file.return_value = [self.token_entry1] creds_cache = CredsCache(auth_ctx_factory=get_auth_context) #action mgmt_resource = 'https://management.core.windows.net/' token_type, token = creds_cache.retrieve_token_for_user(self.user1, self.tenant_id, mgmt_resource) mock_adal_auth_context.acquire_token.assert_called_once_with( 'https://management.core.windows.net/', self.user1, mock.ANY) #assert mock_open_for_write.assert_called_with(mock.ANY, 'w+') self.assertEqual(token, 'new token') self.assertEqual(token_type, token_entry2['tokenType'])
def test_credscache_add_new_sp_creds(self, _, mock_open_for_write, mock_read_file): test_sp = { "servicePrincipalId": "myapp", "servicePrincipalTenant": "mytenant", "accessToken": "Secret" } test_sp2 = { "servicePrincipalId": "myapp2", "servicePrincipalTenant": "mytenant2", "accessToken": "Secret2" } mock_open_for_write.return_value = FileHandleStub() mock_read_file.return_value = [self.token_entry1, test_sp] creds_cache = CredsCache() #action creds_cache.save_service_principal_cred( test_sp2['servicePrincipalId'], test_sp2['accessToken'], test_sp2['servicePrincipalTenant']) #assert token_entries = [entry for _, entry in creds_cache.adal_token_cache.read_items()] self.assertEqual(token_entries, [self.token_entry1]) self.assertEqual(creds_cache._service_principal_creds, [test_sp, test_sp2]) mock_open_for_write.assert_called_with(mock.ANY, 'w+')
def _get_service_token(): profile = Profile() credsCache = CredsCache() account = profile.get_subscription() user_name = account['user']['name'] tenant = account['tenantId'] scheme, token = credsCache.retrieve_token_for_user(user_name, tenant, SERVICE_RESOURCE_ID) service_token = "{} {}".format(scheme, token) return service_token
def test_credscache_load_tokens_and_sp_creds_with_cert(self, mock_read_file): test_sp = { "servicePrincipalId": "myapp", "servicePrincipalTenant": "mytenant", "certificateFile": 'junkcert.pem' } mock_read_file.return_value = [test_sp] # action creds_cache = CredsCache(async_persist=False) creds_cache.load_adal_token_cache() # assert self.assertEqual(creds_cache._service_principal_creds, [test_sp])
def test_credscache_add_preexisting_sp_creds(self, _, mock_open_for_write, mock_read_file): test_sp = { "servicePrincipalId": "myapp", "servicePrincipalTenant": "mytenant", "accessToken": "Secret" } mock_open_for_write.return_value = FileHandleStub() mock_read_file.return_value = [test_sp] creds_cache = CredsCache(async_persist=False) # action creds_cache.save_service_principal_cred(test_sp) # assert self.assertEqual(creds_cache._service_principal_creds, [test_sp])
def test_credscache_load_tokens_and_sp_creds_with_secret(self, mock_read_file): test_sp = { "servicePrincipalId": "myapp", "servicePrincipalTenant": "mytenant", "accessToken": "Secret" } mock_read_file.return_value = [self.token_entry1, test_sp] # action creds_cache = CredsCache(async_persist=False) # assert token_entries = [entry for _, entry in creds_cache.load_adal_token_cache().read_items()] self.assertEqual(token_entries, [self.token_entry1]) self.assertEqual(creds_cache._service_principal_creds, [test_sp])
def _get_service_token(): profile = Profile() credsCache = CredsCache() account = profile.get_subscription() user_name = account['user']['name'] tenant = account['tenantId'] if account['user']['type'] == _SERVICE_PRINCIPAL: scheme, token = credsCache.retrieve_token_for_service_principal(user_name, SERVICE_RESOURCE_ID) else: scheme, token = credsCache.retrieve_token_for_user(user_name, tenant, SERVICE_RESOURCE_ID) service_token = "{} {}".format(scheme, token) return service_token
def test_credscache_add_preexisting_sp_creds(self, _, mock_open_for_write, mock_read_file): test_sp = { "servicePrincipalId": "myapp", "servicePrincipalTenant": "mytenant", "accessToken": "Secret" } mock_open_for_write.return_value = FileHandleStub() mock_read_file.return_value = [test_sp] creds_cache = CredsCache() # action creds_cache.save_service_principal_cred(test_sp) # assert self.assertEqual(creds_cache._service_principal_creds, [test_sp])
def test_credscache_remove_creds(self, _, mock_open_for_write, mock_read_file): test_sp = { "servicePrincipalId": "myapp", "servicePrincipalTenant": "mytenant", "accessToken": "Secret" } mock_open_for_write.return_value = FileHandleStub() mock_read_file.return_value = [self.token_entry1, test_sp] creds_cache = CredsCache() #action #1, logout a user creds_cache.remove_cached_creds(self.user1) #assert #1 token_entries = [ entry for _, entry in creds_cache.adal_token_cache.read_items() ] self.assertEqual(token_entries, []) #action #2 logout a service principal creds_cache.remove_cached_creds('myapp') #assert #2 self.assertEqual(creds_cache._service_principal_creds, []) mock_open_for_write.assert_called_with(mock.ANY, 'w+') self.assertEqual(mock_open_for_write.call_count, 2)