Skip to content

Commit c4f31cc

Browse files
committed
add test for secrets_manager.py
1 parent ac1e0f1 commit c4f31cc

File tree

2 files changed

+94
-2
lines changed

2 files changed

+94
-2
lines changed

aws_lambda_powertools/event_handler/async_execution/routes/secrets_manager.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,14 @@ def match(self, event: dict[str, Any]) -> tuple[Callable, SecretsManagerEvent] |
2929

3030
if not secret_id:
3131
return None
32-
elif self.secret_id and self.secret_id == secret_id:
33-
return self.func, SecretsManagerEvent(event)
32+
elif self.secret_id and self.secret_name_prefix:
33+
part = secret_id.split(":")
34+
secret_name = part[-1]
35+
if self.secret_id == secret_id and secret_name.find(self.secret_name_prefix) == 0:
36+
return self.func, SecretsManagerEvent(event)
37+
elif self.secret_id:
38+
if self.secret_id == secret_id:
39+
return self.func, SecretsManagerEvent(event)
3440
elif self.secret_name_prefix:
3541
part = secret_id.split(":")
3642
secret_name = part[-1]

tests/unit/event_handler/_async_execution/_routes/test_secrets_manager.py

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,96 @@
11
import pytest
22

33
from aws_lambda_powertools.event_handler.async_execution.routes.secrets_manager import SecretsManagerRoute
4+
from aws_lambda_powertools.utilities.data_classes.secrets_manager_event import SecretsManagerEvent
45
from tests.functional.utils import load_event
56

67

78
class TestSecretsManagerRoute:
9+
def test_constructor_error(self):
10+
with pytest.raises(ValueError):
11+
SecretsManagerRoute(func=lambda _: None)
12+
13+
@pytest.mark.parametrize(
14+
"event_name, option_constructor, is_match",
15+
[
16+
# with secret_id and secret_name_prefix
17+
# match all
18+
(
19+
"secretsManagerEvent.json",
20+
{
21+
"func": lambda *_: None,
22+
"secret_id": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-a1b2c3",
23+
"secret_name_prefix": "MyTestDatabaseSecret",
24+
},
25+
True,
26+
),
27+
# with secret_id and secret_name_prefix
28+
# match 1, unmatch 1
29+
(
30+
"secretsManagerEvent.json",
31+
{
32+
"func": lambda *_: None,
33+
"secret_id": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-a1b2c3",
34+
"secret_name_prefix": "MyTestDatabaseSecretV2",
35+
},
36+
False,
37+
),
38+
(
39+
"secretsManagerEvent.json",
40+
{
41+
"func": lambda *_: None,
42+
"secret_id": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-999999",
43+
"secret_name_prefix": "MyTestDatabaseSecret",
44+
},
45+
False,
46+
),
47+
# with secret_id and secret_name_prefix
48+
# unmatch all
49+
(
50+
"secretsManagerEvent.json",
51+
{
52+
"func": lambda *_: None,
53+
"secret_id": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-999999",
54+
"secret_name_prefix": "MyTestDatabaseSecretV2",
55+
},
56+
False,
57+
),
58+
# with secret_id
59+
(
60+
"secretsManagerEvent.json",
61+
{
62+
"func": lambda *_: None,
63+
"secret_id": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-a1b2c3",
64+
},
65+
True,
66+
),
67+
(
68+
"secretsManagerEvent.json",
69+
{
70+
"func": lambda *_: None,
71+
"secret_id": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-999999",
72+
},
73+
False,
74+
),
75+
# with secret_name_prefix
76+
("secretsManagerEvent.json", {"func": lambda *_: None, "secret_name_prefix": "MyTestDatabaseSecret"}, True),
77+
(
78+
"secretsManagerEvent.json",
79+
{"func": lambda *_: None, "secret_name_prefix": "MyTestDatabaseSecretV2"},
80+
False,
81+
),
82+
],
83+
)
84+
def test_match(self, event_name, option_constructor, is_match):
85+
event = load_event(file_name=event_name)
86+
route = SecretsManagerRoute(**option_constructor)
87+
actual = route.match(event=event)
88+
if is_match:
89+
expected = (route.func, SecretsManagerEvent(event))
90+
assert actual == expected
91+
else:
92+
assert actual is None
93+
894
@pytest.mark.parametrize(
995
"event_name",
1096
[

0 commit comments

Comments
 (0)