1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
# -------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
import pytest
from devtools_testutils import recorded_by_proxy
from azure.core.exceptions import ClientAuthenticationError, HttpResponseError
from azure.ai.metricsadvisor import MetricsAdvisorClient, MetricsAdvisorKeyCredential
from base_testcase import TestMetricsAdvisorClientBase
class TestMetricsAdvisorCredential(TestMetricsAdvisorClientBase):
@recorded_by_proxy
def test_credential_rotate_both_keys(self):
credential = MetricsAdvisorKeyCredential(self.subscription_key, self.api_key)
client = MetricsAdvisorClient(self.service_endpoint, credential)
# make successful call
result = client.get_feedback(feedback_id=self.feedback_id)
assert result
# rotate both keys
credential.update_key(subscription_key="xxx")
assert credential.subscription_key == "xxx"
credential.update_key(api_key="xxx")
assert credential.api_key == "xxx"
# call fails
with pytest.raises(ClientAuthenticationError):
result = client.get_feedback(feedback_id=self.feedback_id)
# rotate back to valid credentials
credential.update_key(subscription_key=self.subscription_key)
assert credential.subscription_key == self.subscription_key
credential.update_key(api_key=self.api_key)
assert credential.api_key == self.api_key
# make successful call
result = client.get_feedback(feedback_id=self.feedback_id)
assert result
@recorded_by_proxy
def test_credential_rotate_sub_key_only(self):
credential = MetricsAdvisorKeyCredential(self.subscription_key, self.api_key)
client = MetricsAdvisorClient(self.service_endpoint, credential)
# make successful call
result = client.get_feedback(feedback_id=self.feedback_id)
assert result
# rotate one key
credential.update_key(subscription_key="xxx")
assert credential.subscription_key == "xxx"
assert credential.api_key == self.api_key
# call fails
with pytest.raises(ClientAuthenticationError):
result = client.get_feedback(feedback_id=self.feedback_id)
# rotate back to valid credentials
credential.update_key(subscription_key=self.subscription_key)
assert credential.subscription_key == self.subscription_key
assert credential.api_key == self.api_key
# make successful call
result = client.get_feedback(feedback_id=self.feedback_id)
assert result
@recorded_by_proxy
def test_credential_rotate_api_key_only(self):
credential = MetricsAdvisorKeyCredential(self.subscription_key, self.api_key)
client = MetricsAdvisorClient(self.service_endpoint, credential)
# make successful call
result = client.get_feedback(feedback_id=self.feedback_id)
assert result
# rotate one key
credential.update_key(api_key="xxx")
assert credential.subscription_key == self.subscription_key
assert credential.api_key == "xxx"
# call fails
with pytest.raises(HttpResponseError):
result = client.get_feedback(feedback_id=self.feedback_id)
# rotate back to valid credentials
credential.update_key(api_key=self.api_key)
assert credential.subscription_key == self.subscription_key
assert credential.api_key == self.api_key
# make successful call
result = client.get_feedback(feedback_id=self.feedback_id)
assert result
def test_credential_bad_input(self):
credential = MetricsAdvisorKeyCredential(self.subscription_key, self.api_key)
with pytest.raises(TypeError):
credential.update_key(subscription_key=34)
with pytest.raises(TypeError):
credential.update_key(api_key=34)
|