예제 #1
0
    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)
예제 #3
0
    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)
예제 #4
0
    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()