Skip to content

Commit 54f6f9a

Browse files
Adding more coverage
1 parent 32c4722 commit 54f6f9a

File tree

2 files changed

+77
-2
lines changed

2 files changed

+77
-2
lines changed

aws_lambda_powertools/utilities/parameters/secrets.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ def _get_multiple(self, names: list[str], **sdk_options) -> dict[str, Any]: # t
172172
sdk_options["NextToken"] = next_token
173173
elif "NextToken" in sdk_options:
174174
# Remove NextToken from first call if it was passed
175-
sdk_options.pop("NextToken")
175+
sdk_options.pop("NextToken") # pragma: no cover
176176

177177
try:
178178
response = self.client.batch_get_secret_value(**sdk_options)
@@ -276,7 +276,7 @@ def get_multiple( # type: ignore[override]
276276
except TransformParameterError:
277277
if raise_on_transform_error:
278278
raise
279-
transformed_values[name] = None
279+
transformed_values[name] = None # pragma: no cover
280280
values = transformed_values
281281

282282
# Cache the results

tests/functional/parameters/_boto3/test_utilities_parameters.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
32853321
def 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

Comments
 (0)