42
42
AsyncioRequestsTransport ,
43
43
TrioRequestsTransport ,
44
44
AioHttpTransport ,
45
+ HttpRequest ,
45
46
)
46
47
47
48
from azure .core .polling .async_base_polling import AsyncLROBasePolling
58
59
from utils import HTTP_REQUESTS
59
60
60
61
62
+ try :
63
+ from unittest .mock import AsyncMock , PropertyMock
64
+ except ImportError :
65
+ pass
66
+
67
+
61
68
@pytest .mark .asyncio
62
69
@pytest .mark .parametrize ("http_request" , HTTP_REQUESTS )
63
70
async def test_sans_io_exception (http_request ):
@@ -272,7 +279,10 @@ def send(*args):
272
279
assert pos_boo > pos_retry
273
280
274
281
client = AsyncPipelineClient (
275
- base_url = "test" , config = config , per_call_policies = boo_policy , per_retry_policies = foo_policy
282
+ base_url = "test" ,
283
+ config = config ,
284
+ per_call_policies = boo_policy ,
285
+ per_retry_policies = foo_policy ,
276
286
)
277
287
policies = client ._pipeline ._impl_policies
278
288
assert boo_policy in policies
@@ -284,7 +294,10 @@ def send(*args):
284
294
assert pos_foo > pos_retry
285
295
286
296
client = AsyncPipelineClient (
287
- base_url = "test" , config = config , per_call_policies = [boo_policy ], per_retry_policies = [foo_policy ]
297
+ base_url = "test" ,
298
+ config = config ,
299
+ per_call_policies = [boo_policy ],
300
+ per_retry_policies = [foo_policy ],
288
301
)
289
302
policies = client ._pipeline ._impl_policies
290
303
assert boo_policy in policies
@@ -311,13 +324,19 @@ def send(*args):
311
324
assert foo_policy == actual_policies [2 ]
312
325
313
326
client = AsyncPipelineClient (
314
- base_url = "test" , policies = policies , per_call_policies = boo_policy , per_retry_policies = [foo_policy ]
327
+ base_url = "test" ,
328
+ policies = policies ,
329
+ per_call_policies = boo_policy ,
330
+ per_retry_policies = [foo_policy ],
315
331
)
316
332
actual_policies = client ._pipeline ._impl_policies
317
333
assert boo_policy == actual_policies [0 ]
318
334
assert foo_policy == actual_policies [3 ]
319
335
client = AsyncPipelineClient (
320
- base_url = "test" , policies = policies , per_call_policies = [boo_policy ], per_retry_policies = [foo_policy ]
336
+ base_url = "test" ,
337
+ policies = policies ,
338
+ per_call_policies = [boo_policy ],
339
+ per_retry_policies = [foo_policy ],
321
340
)
322
341
actual_policies = client ._pipeline ._impl_policies
323
342
assert boo_policy == actual_policies [0 ]
@@ -337,3 +356,32 @@ def test_no_cleanup_policy_when_redirect_policy_is_empty():
337
356
for policy in policies :
338
357
if isinstance (policy , SensitiveHeaderCleanupPolicy ):
339
358
assert False
359
+
360
+
361
+ @pytest .mark .skipif (sys .version_info < (3 , 8 ), reason = "Python 3.7 does not support AsyncMock" )
362
+ @pytest .mark .asyncio
363
+ async def test_default_ssl_context ():
364
+ class MockAiohttpSession :
365
+ async def __aenter__ (self ):
366
+ pass
367
+
368
+ async def __aexit__ (self , exc_type , exc_val , exc_tb ):
369
+ pass
370
+
371
+ async def close (self ):
372
+ pass
373
+
374
+ async def open (self ):
375
+ pass
376
+
377
+ async def request (self , method : str , url : str , ** kwargs ):
378
+ assert "ssl" not in kwargs
379
+ mock_response = AsyncMock (spec = aiohttp .ClientResponse )
380
+ type(mock_response ).status = PropertyMock (return_value = 200 )
381
+ return mock_response
382
+
383
+ transport = AioHttpTransport (session = MockAiohttpSession (), session_owner = False )
384
+ pipeline = AsyncPipeline (transport = transport )
385
+
386
+ req = HttpRequest ("GET" , "https://bing.com" )
387
+ await pipeline .run (req )
0 commit comments