def test_service_principal(self): creds = mock.create_autospec(ServicePrincipalCredentials) session = mock.create_autospec(OAuth2Session) creds._setup_session.return_value = session session.fetch_token.return_value = { 'expires_at':'1', 'expires_in':'2'} creds.token_uri = "token_uri" creds.verify = True creds.id = 123 creds.secret = 'secret' creds.resource = 'resource' ServicePrincipalCredentials.set_token(creds) self.assertEqual(creds.token, session.fetch_token.return_value) session.fetch_token.assert_called_with( "token_uri", client_id=123, client_secret='secret', resource='resource', response_type="client_credentials", verify=True) session.fetch_token.side_effect = oauthlib.oauth2.OAuth2Error with self.assertRaises(AuthenticationError): ServicePrincipalCredentials.set_token(creds) session = mock.create_autospec(OAuth2Session) with mock.patch.object( ServicePrincipalCredentials, '_setup_session', return_value=session): creds = ServicePrincipalCredentials("client_id", "secret", verify=False, tenant="private") session.fetch_token.assert_called_with( "https://login.microsoftonline.com/private/oauth2/token", client_id="client_id", client_secret='secret', resource='https://management.core.windows.net/', response_type="client_credentials", verify=False) with mock.patch.object( ServicePrincipalCredentials, '_setup_session', return_value=session): creds = ServicePrincipalCredentials("client_id", "secret", china=True, verify=False, tenant="private") session.fetch_token.assert_called_with( "https://login.chinacloudapi.cn/private/oauth2/token", client_id="client_id", client_secret='secret', resource='https://management.core.chinacloudapi.cn/', response_type="client_credentials", verify=False)
def configure_advisor_threshold(): creds = ServicePrincipalCredentials(client_id=client_id, secret=secret, tenant=tenant) creds.set_token() client = AdvisorManagementClient(credentials=creds, subscription_id=subscription_id) # create a new configuration to update low CPU threshold to 20 cfg = ConfigData() cfg.properties = ConfigDataProperties(low_cpu_threshold=20, exclude=False) # update the configuration client.configurations.create_in_subscription(cfg)
def test_property(self, adal_context): adal_context.acquire_token_with_client_credentials = mock.Mock() creds = ServicePrincipalCredentials( 123, 'secret', tenant="private") # Implicit set_token call adal_context.assert_called_with( "https://login.microsoftonline.com/private", timeout=None, verify_ssl=None, proxies=None, validate_authority=True, cache=None, api_version=None) creds.timeout = 12 assert creds._context is None creds.set_token() adal_context.assert_called_with( "https://login.microsoftonline.com/private", timeout=12, verify_ssl=None, proxies=None, validate_authority=True, cache=None, api_version=None) creds.verify = True assert creds._context is None creds.set_token() adal_context.assert_called_with( "https://login.microsoftonline.com/private", timeout=12, verify_ssl=True, proxies=None, validate_authority=True, cache=None, api_version=None) creds.proxies = {} assert creds._context is None creds.set_token() adal_context.assert_called_with( "https://login.microsoftonline.com/private", timeout=12, verify_ssl=True, proxies={}, validate_authority=True, cache=None, api_version=None) creds.cloud_environment = AZURE_CHINA_CLOUD assert creds._context is None creds.set_token() adal_context.assert_called_with( "https://login.chinacloudapi.cn/private", timeout=12, verify_ssl=True, proxies={}, validate_authority=True, cache=None, api_version=None)
def test_service_principal(self, adal_context): adal_context.acquire_token_with_client_credentials = mock.Mock() # Basic with parameters mock_proxies = { 'http': 'http://myproxy:8080', 'https': 'https://myproxy:8080', } creds = ServicePrincipalCredentials(123, 'secret', resource="resource", timeout=12, verify=True, proxies=mock_proxies) adal_context.assert_called_with( "https://login.microsoftonline.com/common", timeout=12, verify_ssl=True, proxies=mock_proxies, validate_authority=True, cache=None, api_version=None) creds.set_token() creds._context.acquire_token_with_client_credentials.assert_called_with( "resource", 123, "secret") # Using default creds = ServicePrincipalCredentials(123, 'secret', tenant="private") adal_context.assert_called_with( "https://login.microsoftonline.com/private", timeout=None, verify_ssl=None, proxies=None, validate_authority=True, cache=None, api_version=None) creds.set_token() creds._context.acquire_token_with_client_credentials.assert_called_with( "https://management.core.windows.net/", 123, "secret") # Testing cloud_environment creds = ServicePrincipalCredentials( 123, 'secret', cloud_environment=AZURE_CHINA_CLOUD) adal_context.assert_called_with( "https://login.chinacloudapi.cn/common", timeout=None, verify_ssl=None, proxies=None, validate_authority=True, cache=None, api_version=None) creds.set_token() creds._context.acquire_token_with_client_credentials.assert_called_with( "https://management.core.chinacloudapi.cn/", 123, "secret") # Testing china=True creds = ServicePrincipalCredentials(123, 'secret', china=True) adal_context.assert_called_with( "https://login.chinacloudapi.cn/common", timeout=None, verify_ssl=None, proxies=None, validate_authority=True, cache=None, api_version=None) creds.set_token() creds._context.acquire_token_with_client_credentials.assert_called_with( "https://management.core.chinacloudapi.cn/", 123, "secret") # ADAL boom creds._context.acquire_token_with_client_credentials.side_effect = adal.AdalError( "Boom") with self.assertRaises(AuthenticationError): creds.set_token()