Skip to content

Commit 4994349

Browse files
ran-isenbergRan Isenbergheitorlessa
authored
fix(parameters): appconfig transform and return types (#877)
Co-authored-by: Ran Isenberg <[email protected]> Co-authored-by: Heitor Lessa <[email protected]>
1 parent de3cf28 commit 4994349

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

Diff for: aws_lambda_powertools/utilities/parameters/base.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -93,14 +93,16 @@ def get(
9393
raise GetParameterError(str(exc))
9494

9595
if transform is not None:
96+
if isinstance(value, bytes):
97+
value = value.decode("utf-8")
9698
value = transform_value(value, transform)
9799

98100
self.store[key] = ExpirableValue(value, datetime.now() + timedelta(seconds=max_age))
99101

100102
return value
101103

102104
@abstractmethod
103-
def _get(self, name: str, **sdk_options) -> str:
105+
def _get(self, name: str, **sdk_options) -> Union[str, bytes]:
104106
"""
105107
Retrieve parameter value from the underlying parameter store
106108
"""

Diff for: tests/functional/test_utilities_parameters.py

+28-3
Original file line numberDiff line numberDiff line change
@@ -1503,7 +1503,7 @@ def test_appconf_provider_get_configuration_no_transform(mock_name, config):
15031503
stubber.activate()
15041504

15051505
try:
1506-
value = provider.get(mock_name)
1506+
value: str = provider.get(mock_name)
15071507
str_value = value.decode("utf-8")
15081508
assert str_value == json.dumps(mock_body_json)
15091509
stubber.assert_no_pending_responses()
@@ -1516,11 +1516,12 @@ def test_appconf_get_app_config_no_transform(monkeypatch, mock_name):
15161516
Test get_app_config()
15171517
"""
15181518
mock_body_json = {"myenvvar1": "Black Panther", "myenvvar2": 3}
1519+
mock_body_bytes = str.encode(json.dumps(mock_body_json))
15191520

15201521
class TestProvider(BaseProvider):
1521-
def _get(self, name: str, **kwargs) -> str:
1522+
def _get(self, name: str, **kwargs) -> bytes:
15221523
assert name == mock_name
1523-
return json.dumps(mock_body_json).encode("utf-8")
1524+
return mock_body_bytes
15241525

15251526
def _get_multiple(self, path: str, **kwargs) -> Dict[str, str]:
15261527
raise NotImplementedError()
@@ -1532,6 +1533,30 @@ def _get_multiple(self, path: str, **kwargs) -> Dict[str, str]:
15321533
value = parameters.get_app_config(mock_name, environment=environment, application=application)
15331534
str_value = value.decode("utf-8")
15341535
assert str_value == json.dumps(mock_body_json)
1536+
assert value == mock_body_bytes
1537+
1538+
1539+
def test_appconf_get_app_config_transform_json(monkeypatch, mock_name):
1540+
"""
1541+
Test get_app_config()
1542+
"""
1543+
mock_body_json = {"myenvvar1": "Black Panther", "myenvvar2": 3}
1544+
mock_body_bytes = str.encode(json.dumps(mock_body_json))
1545+
1546+
class TestProvider(BaseProvider):
1547+
def _get(self, name: str, **kwargs) -> str:
1548+
assert name == mock_name
1549+
return mock_body_bytes
1550+
1551+
def _get_multiple(self, path: str, **kwargs) -> Dict[str, str]:
1552+
raise NotImplementedError()
1553+
1554+
monkeypatch.setitem(parameters.base.DEFAULT_PROVIDERS, "appconfig", TestProvider())
1555+
1556+
environment = "dev"
1557+
application = "myapp"
1558+
value = parameters.get_app_config(mock_name, environment=environment, application=application, transform="json")
1559+
assert value == mock_body_json
15351560

15361561

15371562
def test_appconf_get_app_config_new(monkeypatch, mock_name, mock_value):

0 commit comments

Comments
 (0)