@@ -3282,6 +3282,42 @@ def test_secrets_provider_get_multiple_empty_names(config):
32823282 provider .get_multiple ([])
32833283
32843284
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+
32853321def test_secrets_provider_get_multiple_caching (config ):
32863322 """
32873323 Test SecretsProvider.get_multiple() caching behavior
@@ -3382,3 +3418,42 @@ def test_secrets_provider_get_multiple_no_secrets_found(config):
33823418 stubber .assert_no_pending_responses ()
33833419 finally :
33843420 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