@@ -110,16 +110,37 @@ def timeout_factor(uamqp_transport):
110
110
def fake_span ():
111
111
return FakeSpan
112
112
113
+
114
+ @pytest .fixture (scope = "session" )
115
+ def get_credential ():
116
+ use_pwsh = os .environ .get ("AZURE_TEST_USE_PWSH_AUTH" , "false" )
117
+ use_cli = os .environ .get ("AZURE_TEST_USE_CLI_AUTH" , "false" )
118
+
119
+ # User-based authentication through Azure PowerShell, if requested
120
+ if use_pwsh .lower () == "true" :
121
+ log .info (
122
+ "Environment variable AZURE_TEST_USE_PWSH_AUTH set to 'true'. Using AzurePowerShellCredential."
123
+ )
124
+ from azure .identity import AzurePowerShellCredential
125
+ return AzurePowerShellCredential ()
126
+ # User-based authentication through Azure CLI, if requested
127
+ elif use_cli .lower () == "true" :
128
+ log .info ("Environment variable AZURE_TEST_USE_CLI_AUTH set to 'true'. Using AzureCliCredential." )
129
+ from azure .identity import AzureCliCredential
130
+ return AzureCliCredential ()
131
+ return EnvironmentCredential ()
132
+
133
+
113
134
@pytest .fixture (scope = "session" )
114
- def resource_group ():
135
+ def resource_group (get_credential ):
115
136
try :
116
137
SUBSCRIPTION_ID = os .environ ["AZURE_SUBSCRIPTION_ID" ]
117
138
except KeyError :
118
139
pytest .skip ('AZURE_SUBSCRIPTION_ID undefined' )
119
140
return
120
141
base_url = os .environ .get ("EVENTHUB_RESOURCE_MANAGER_URL" , "https://management.azure.com/" )
121
142
credential_scopes = ["{}.default" .format (base_url )]
122
- resource_client = ResourceManagementClient (EnvironmentCredential () , SUBSCRIPTION_ID , base_url = base_url , credential_scopes = credential_scopes )
143
+ resource_client = ResourceManagementClient (get_credential , SUBSCRIPTION_ID , base_url = base_url , credential_scopes = credential_scopes )
123
144
resource_group_name = RES_GROUP_PREFIX + str (uuid .uuid4 ())
124
145
parameters = {"location" : LOCATION }
125
146
expiry = datetime .datetime .now (datetime .timezone .utc ) + datetime .timedelta (days = 1 )
@@ -138,15 +159,15 @@ def resource_group():
138
159
139
160
140
161
@pytest .fixture (scope = "session" )
141
- def eventhub_namespace (resource_group ):
162
+ def eventhub_namespace (resource_group , get_credential ):
142
163
try :
143
164
SUBSCRIPTION_ID = os .environ ["AZURE_SUBSCRIPTION_ID" ]
144
165
except KeyError :
145
166
pytest .skip ('AZURE_SUBSCRIPTION_ID defined' )
146
167
return
147
168
base_url = os .environ .get ("EVENTHUB_RESOURCE_MANAGER_URL" , "https://management.azure.com/" )
148
169
credential_scopes = ["{}.default" .format (base_url )]
149
- resource_client = EventHubManagementClient (EnvironmentCredential () , SUBSCRIPTION_ID , base_url = base_url , credential_scopes = credential_scopes )
170
+ resource_client = EventHubManagementClient (get_credential , SUBSCRIPTION_ID , base_url = base_url , credential_scopes = credential_scopes )
150
171
namespace_name = NAMESPACE_PREFIX + str (uuid .uuid4 ())
151
172
try :
152
173
namespace = resource_client .namespaces .begin_create_or_update (
@@ -165,15 +186,15 @@ def eventhub_namespace(resource_group):
165
186
166
187
167
188
@pytest .fixture ()
168
- def live_eventhub (resource_group , eventhub_namespace ): # pylint: disable=redefined-outer-name
189
+ def live_eventhub (resource_group , eventhub_namespace , get_credential ): # pylint: disable=redefined-outer-name
169
190
try :
170
191
SUBSCRIPTION_ID = os .environ ["AZURE_SUBSCRIPTION_ID" ]
171
192
except KeyError :
172
193
pytest .skip ('AZURE_SUBSCRIPTION_ID defined' )
173
194
return
174
195
base_url = os .environ .get ("EVENTHUB_RESOURCE_MANAGER_URL" , "https://management.azure.com/" )
175
196
credential_scopes = ["{}.default" .format (base_url )]
176
- resource_client = EventHubManagementClient (EnvironmentCredential () , SUBSCRIPTION_ID , base_url = base_url , credential_scopes = credential_scopes )
197
+ resource_client = EventHubManagementClient (get_credential , SUBSCRIPTION_ID , base_url = base_url , credential_scopes = credential_scopes )
177
198
eventhub_name = EVENTHUB_PREFIX + str (uuid .uuid4 ())
178
199
eventhub_ns_name , connection_string , key_name , primary_key = eventhub_namespace
179
200
eventhub_endpoint_suffix = os .environ .get ("EVENT_HUB_ENDPOINT_SUFFIX" , ".servicebus.windows.net" )
@@ -200,15 +221,15 @@ def live_eventhub(resource_group, eventhub_namespace): # pylint: disable=redefi
200
221
warnings .warn (UserWarning ("eventhub teardown failed" ))
201
222
202
223
@pytest .fixture ()
203
- def resource_mgmt_client ():
224
+ def resource_mgmt_client (get_credential ):
204
225
try :
205
226
SUBSCRIPTION_ID = os .environ ["AZURE_SUBSCRIPTION_ID" ]
206
227
except KeyError :
207
228
pytest .skip ('AZURE_SUBSCRIPTION_ID defined' )
208
229
return
209
230
base_url = os .environ .get ("EVENTHUB_RESOURCE_MANAGER_URL" , "https://management.azure.com/" )
210
231
credential_scopes = ["{}.default" .format (base_url )]
211
- resource_client = EventHubManagementClient (EnvironmentCredential () , SUBSCRIPTION_ID , base_url = base_url , credential_scopes = credential_scopes )
232
+ resource_client = EventHubManagementClient (get_credential , SUBSCRIPTION_ID , base_url = base_url , credential_scopes = credential_scopes )
212
233
yield resource_client
213
234
214
235
@pytest .fixture ()
0 commit comments