Skip to content

Commit a1bf1a9

Browse files
committed
[NDR-344] Use the global environment to get SSM param.
1 parent d73459a commit a1bf1a9

File tree

3 files changed

+66
-1
lines changed

3 files changed

+66
-1
lines changed

lambdas/enums/environment.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import os
2+
from enum import Enum
3+
4+
5+
class Environment(str, Enum):
6+
PROD = "prod"
7+
PRE_PROD = "pre-prod"
8+
NDR_TEST = "ndr-test"
9+
NDR_DEV = "ndr-dev"
10+
11+
@classmethod
12+
def from_env(cls) -> "Environment":
13+
value = os.getenv("WORKSPACE")
14+
if not value:
15+
return cls.NDR_DEV
16+
17+
return cls._value2member_map_.get(value.lower(), cls.NDR_DEV)

lambdas/enums/mtls.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from functools import lru_cache
66

77
from enums.lambda_error import LambdaError
8+
from enums.environment import Environment
89
from utils.audit_logging_setup import LoggingService
910
from utils.lambda_exceptions import InvalidDocTypeException
1011

@@ -31,8 +32,9 @@ def from_common_name(cls, common_name: str) -> "MtlsCommonNames | None":
3132
@lru_cache(maxsize=1)
3233
def _get_mtls_common_names(cls) -> dict[str, list[str]]:
3334
ssm = boto3.client("ssm")
35+
environment = Environment.from_env().value
3436
response = ssm.get_parameter(
35-
Name="/ndr/ndr344/mtls_common_names",
37+
Name=f"/ndr/{environment}/mtls_common_names",
3638
WithDecryption=True,
3739
)
3840
return json.loads(response["Parameter"]["Value"])
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import pytest
2+
3+
from enums.environment import Environment
4+
5+
6+
@pytest.mark.parametrize(
7+
"env_value, expected",
8+
[
9+
("prod", Environment.PROD),
10+
("pre-prod", Environment.PRE_PROD),
11+
("ndr-test", Environment.NDR_TEST),
12+
("ndr-dev", Environment.NDR_DEV),
13+
],
14+
)
15+
def test_valid_workspace_values(monkeypatch, env_value, expected):
16+
monkeypatch.setenv("WORKSPACE", env_value)
17+
assert Environment.from_env() == expected
18+
19+
20+
@pytest.mark.parametrize(
21+
"env_value",
22+
[
23+
"abcd1",
24+
"ndr000",
25+
"prmp000",
26+
"foobar",
27+
],
28+
)
29+
def test_invalid_workspace_defaults_to_ndr_dev(monkeypatch, env_value):
30+
monkeypatch.setenv("WORKSPACE", env_value)
31+
assert Environment.from_env() == Environment.NDR_DEV
32+
33+
34+
def test_workspace_is_case_insensitive(monkeypatch):
35+
monkeypatch.setenv("WORKSPACE", "PRE-PROD")
36+
assert Environment.from_env() == Environment.PRE_PROD
37+
38+
39+
def test_workspace_not_set_defaults_to_ndr_dev(monkeypatch):
40+
monkeypatch.delenv("WORKSPACE", raising=False)
41+
assert Environment.from_env() == Environment.NDR_DEV
42+
43+
44+
def test_workspace_empty_string_defaults_to_ndr_dev(monkeypatch):
45+
monkeypatch.setenv("WORKSPACE", "")
46+
assert Environment.from_env() == Environment.NDR_DEV

0 commit comments

Comments
 (0)