diff --git a/CHANGELOG.md b/CHANGELOG.md index 0024c839d..a1b899499 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ ## Upcoming release +- Ensure that base64 lookup codec encodes the bytes object as a string [GH-742] + ## 1.7.0 (2019-04-07) - Additional ECS unit tests [GH-696] diff --git a/stacker/lookups/handlers/file.py b/stacker/lookups/handlers/file.py index 0eb87e74c..8c3e74eef 100644 --- a/stacker/lookups/handlers/file.py +++ b/stacker/lookups/handlers/file.py @@ -218,7 +218,7 @@ def json_codec(raw, parameterized=False): CODECS = { "plain": lambda x: x, - "base64": lambda x: base64.b64encode(x.encode('utf8')), + "base64": lambda x: base64.b64encode(x.encode('utf8')).decode('utf-8'), "parameterized": lambda x: parameterized_codec(x, False), "parameterized-b64": lambda x: parameterized_codec(x, True), "yaml": lambda x: yaml_codec(x, parameterized=False), diff --git a/stacker/tests/lookups/handlers/test_file.py b/stacker/tests/lookups/handlers/test_file.py index 5fb27b809..157aa122d 100644 --- a/stacker/tests/lookups/handlers/test_file.py +++ b/stacker/tests/lookups/handlers/test_file.py @@ -125,7 +125,7 @@ def test_handler_plain(self, _): @mock.patch('stacker.lookups.handlers.file.read_value_from_path') def test_handler_b64(self, content_mock): plain = u'Hello, world' - encoded = base64.b64encode(plain.encode('utf8')) + encoded = base64.b64encode(plain.encode('utf8')).decode('utf-8') content_mock.return_value = plain out = FileLookup.handle(u'base64:file://tmp/test')