@@ -53,3 +53,93 @@ def test_passes_authority_argument(credential_name, environment_variables):
5353 assert mock_credential .call_count == 1
5454 _ , kwargs = mock_credential .call_args
5555 assert kwargs ["authority" ] == authority
56+
57+
58+ def test_client_secret_configuration ():
59+ """the credential should pass expected values and any keyword arguments to its inner credential"""
60+
61+ client_id = "client-id"
62+ client_secret = "..."
63+ tenant_id = "tenant_id"
64+ bar = "bar"
65+
66+ environment = {
67+ EnvironmentVariables .AZURE_CLIENT_ID : client_id ,
68+ EnvironmentVariables .AZURE_CLIENT_SECRET : client_secret ,
69+ EnvironmentVariables .AZURE_TENANT_ID : tenant_id ,
70+ }
71+ with mock .patch (EnvironmentCredential .__module__ + ".ClientSecretCredential" ) as mock_credential :
72+ with mock .patch .dict ("os.environ" , environment , clear = True ):
73+ EnvironmentCredential (foo = bar )
74+
75+ assert mock_credential .call_count == 1
76+ _ , kwargs = mock_credential .call_args
77+ assert kwargs ["client_id" ] == client_id
78+ assert kwargs ["client_secret" ] == client_secret
79+ assert kwargs ["tenant_id" ] == tenant_id
80+ assert kwargs ["foo" ] == bar
81+
82+
83+ def test_certificate_configuration ():
84+ """the credential should pass expected values and any keyword arguments to its inner credential"""
85+
86+ client_id = "client-id"
87+ certificate_path = "..."
88+ tenant_id = "tenant_id"
89+ bar = "bar"
90+
91+ environment = {
92+ EnvironmentVariables .AZURE_CLIENT_ID : client_id ,
93+ EnvironmentVariables .AZURE_CLIENT_CERTIFICATE_PATH : certificate_path ,
94+ EnvironmentVariables .AZURE_TENANT_ID : tenant_id ,
95+ }
96+ with mock .patch (EnvironmentCredential .__module__ + ".CertificateCredential" ) as mock_credential :
97+ with mock .patch .dict ("os.environ" , environment , clear = True ):
98+ EnvironmentCredential (foo = bar )
99+
100+ assert mock_credential .call_count == 1
101+ _ , kwargs = mock_credential .call_args
102+ assert kwargs ["client_id" ] == client_id
103+ assert kwargs ["certificate_path" ] == certificate_path
104+ assert kwargs ["tenant_id" ] == tenant_id
105+ assert kwargs ["foo" ] == bar
106+
107+
108+ def test_username_password_configuration ():
109+ """the credential should pass expected values and any keyword arguments to its inner credential"""
110+
111+ client_id = "client-id"
112+ username = "me@work.com"
113+ password = "password"
114+ bar = "bar"
115+
116+ environment = {
117+ EnvironmentVariables .AZURE_CLIENT_ID : client_id ,
118+ EnvironmentVariables .AZURE_USERNAME : username ,
119+ EnvironmentVariables .AZURE_PASSWORD : password ,
120+ }
121+ with mock .patch (EnvironmentCredential .__module__ + ".UsernamePasswordCredential" ) as mock_credential :
122+ with mock .patch .dict ("os.environ" , environment , clear = True ):
123+ EnvironmentCredential (foo = bar )
124+
125+ assert mock_credential .call_count == 1
126+ _ , kwargs = mock_credential .call_args
127+ assert kwargs ["client_id" ] == client_id
128+ assert kwargs ["username" ] == username
129+ assert kwargs ["password" ] == password
130+ assert kwargs ["foo" ] == bar
131+
132+ # optional tenant id should be used when set
133+ tenant_id = "tenant-id"
134+ environment = dict (environment , ** {EnvironmentVariables .AZURE_TENANT_ID : tenant_id })
135+ with mock .patch (EnvironmentCredential .__module__ + ".UsernamePasswordCredential" ) as mock_credential :
136+ with mock .patch .dict ("os.environ" , environment , clear = True ):
137+ EnvironmentCredential (foo = bar )
138+
139+ assert mock_credential .call_count == 1
140+ _ , kwargs = mock_credential .call_args
141+ assert kwargs ["client_id" ] == client_id
142+ assert kwargs ["username" ] == username
143+ assert kwargs ["password" ] == password
144+ assert kwargs ["tenant_id" ] == tenant_id
145+ assert kwargs ["foo" ] == bar
0 commit comments