@@ -1307,6 +1307,36 @@ def test_store_instance_error_with_retries(httpserver, client, cache_dir):
1307
1307
)
1308
1308
1309
1309
1310
+ def test_store_instance_error_with_retries_and_additional_params (
1311
+ httpserver , client , cache_dir
1312
+ ):
1313
+ dataset = pydicom .Dataset .from_json ({})
1314
+ dataset .is_little_endian = True
1315
+ dataset .is_implicit_VR = True
1316
+ max_attempts = 2
1317
+ client .set_http_retry_params (
1318
+ retry = True ,
1319
+ max_attempts = max_attempts ,
1320
+ wait_exponential_multiplier = 10
1321
+ )
1322
+ httpserver .serve_content (
1323
+ content = '' ,
1324
+ code = HTTPStatus .REQUEST_TIMEOUT ,
1325
+ headers = ''
1326
+ )
1327
+ params = {"key1" : ["value1" , "value2" ], "key2" : "value3" }
1328
+ with pytest .raises (RetryError ):
1329
+ client .store_instances ([dataset ], additional_params = params )
1330
+ assert len (httpserver .requests ) == max_attempts
1331
+ request = httpserver .requests [0 ]
1332
+ assert request .headers ['Content-Type' ].startswith (
1333
+ 'multipart/related; type="application/dicom"'
1334
+ )
1335
+ assert request .query_string .decode () == (
1336
+ 'key1=value1&key1=value2&key2=value3'
1337
+ )
1338
+
1339
+
1310
1340
def test_store_instance_error_with_no_retries (httpserver , client , cache_dir ):
1311
1341
dataset = pydicom .Dataset .from_json ({})
1312
1342
dataset .is_little_endian = True
@@ -1326,6 +1356,31 @@ def test_store_instance_error_with_no_retries(httpserver, client, cache_dir):
1326
1356
)
1327
1357
1328
1358
1359
+ def test_store_instance_error_with_no_retries_and_additional_params (
1360
+ httpserver , client , cache_dir
1361
+ ):
1362
+ dataset = pydicom .Dataset .from_json ({})
1363
+ dataset .is_little_endian = True
1364
+ dataset .is_implicit_VR = True
1365
+ client .set_http_retry_params (retry = False )
1366
+ httpserver .serve_content (
1367
+ content = '' ,
1368
+ code = HTTPStatus .REQUEST_TIMEOUT ,
1369
+ headers = ''
1370
+ )
1371
+ params = {"key1" : ["value1" , "value2" ], "key2" : "value3" }
1372
+ with pytest .raises (HTTPError ):
1373
+ client .store_instances ([dataset ], additional_params = params )
1374
+ assert len (httpserver .requests ) == 1
1375
+ request = httpserver .requests [0 ]
1376
+ assert request .headers ['Content-Type' ].startswith (
1377
+ 'multipart/related; type="application/dicom"'
1378
+ )
1379
+ assert request .query_string .decode () == (
1380
+ 'key1=value1&key1=value2&key2=value3'
1381
+ )
1382
+
1383
+
1329
1384
def test_delete_study_error (httpserver , client , cache_dir ):
1330
1385
study_instance_uid = '1.2.3'
1331
1386
httpserver .serve_content (
0 commit comments