@@ -3282,6 +3282,42 @@ def test_secrets_provider_get_multiple_empty_names(config):
3282
3282
provider .get_multiple ([])
3283
3283
3284
3284
3285
+ def test_secrets_provider_non_existing_key (config ):
3286
+ """
3287
+ Test SecretsProvider.get_multiple() with additional filters
3288
+ """
3289
+ # GIVEN a SecretsProvider instance
3290
+ provider = parameters .SecretsProvider (boto_config = config )
3291
+
3292
+ # WHEN calling get_multiple with additional filters that doesnt
3293
+ secret_names = ["filtered-secret" ]
3294
+ additional_filters = [{"Key" : "error-region" , "Values" : ["us-east-1" ]}]
3295
+
3296
+ # Stub the boto3 client
3297
+ stubber = stub .Stubber (provider .client )
3298
+ response = {
3299
+ "SecretValues" : [
3300
+ {
3301
+ "ARN" : "arn:aws:secretsmanager:us-east-1:132456789012:secret/filtered-secret" ,
3302
+ "Name" : "filtered-secret" ,
3303
+ "VersionId" : "7a9155b8-2dc9-466e-b4f6-5bc46516c84d" ,
3304
+ "SecretString" : "filtered-value" ,
3305
+ "CreatedDate" : datetime (2015 , 1 , 1 ),
3306
+ },
3307
+ ],
3308
+ "Errors" : [],
3309
+ }
3310
+ expected_params = {
3311
+ "Filters" : [{"Key" : "primary-region" , "Values" : ["us-east-1" ]}, {"Key" : "name" , "Values" : secret_names }],
3312
+ }
3313
+ stubber .add_response ("batch_get_secret_value" , response , expected_params )
3314
+ stubber .activate ()
3315
+
3316
+ # THEN it should raise an exception
3317
+ with pytest .raises (GetSecretError , match = "Failed to retrieve secrets*" ):
3318
+ provider .get_multiple (secret_names , Filters = additional_filters )
3319
+
3320
+
3285
3321
def test_secrets_provider_get_multiple_caching (config ):
3286
3322
"""
3287
3323
Test SecretsProvider.get_multiple() caching behavior
@@ -3382,3 +3418,42 @@ def test_secrets_provider_get_multiple_no_secrets_found(config):
3382
3418
stubber .assert_no_pending_responses ()
3383
3419
finally :
3384
3420
stubber .deactivate ()
3421
+
3422
+
3423
+ def test_secrets_provider_get_multiple_with_json_transform_error (config ):
3424
+ """
3425
+ Test SecretsProvider.get_multiple() with JSON transformation
3426
+ """
3427
+ # GIVEN a SecretsProvider instance
3428
+ provider = parameters .SecretsProvider (boto_config = config )
3429
+
3430
+ # WHEN calling get_multiple with JSON transform
3431
+ secret_names = ["json-secret" , "plain-secret" ]
3432
+
3433
+ # Stub the boto3 client
3434
+ stubber = stub .Stubber (provider .client )
3435
+ response = {
3436
+ "SecretValues" : [
3437
+ {
3438
+ "ARN" : "arn:aws:secretsmanager:us-east-1:132456789012:secret/json-secret" ,
3439
+ "Name" : "json-secret" ,
3440
+ "VersionId" : "7a9155b8-2dc9-466e-b4f6-5bc46516c84d" ,
3441
+ "SecretString" : '{"key": "value", "number": 42}' ,
3442
+ "CreatedDate" : datetime (2015 , 1 , 1 ),
3443
+ },
3444
+ {
3445
+ "ARN" : "arn:aws:secretsmanager:us-east-1:132456789012:secret/plain-secret" ,
3446
+ "Name" : "plain-secret" ,
3447
+ "VersionId" : "8b9266c9-3ed0-577f-c5g7-6cd57627d95e" ,
3448
+ "SecretString" : "plain-text" ,
3449
+ "CreatedDate" : datetime (2015 , 1 , 1 ),
3450
+ },
3451
+ ],
3452
+ "Errors" : [],
3453
+ }
3454
+ expected_params = {"Filters" : [{"Key" : "name" , "Values" : secret_names }]}
3455
+ stubber .add_response ("batch_get_secret_value" , response , expected_params )
3456
+ stubber .activate ()
3457
+
3458
+ with pytest .raises (parameters .TransformParameterError ):
3459
+ provider .get_multiple (secret_names , transform = "binary" , raise_on_transform_error = True )
0 commit comments