diff --git a/stacker/lookups/handlers/file.py b/stacker/lookups/handlers/file.py index e8bd91fde..7a3d6fffa 100644 --- a/stacker/lookups/handlers/file.py +++ b/stacker/lookups/handlers/file.py @@ -92,7 +92,7 @@ def handler(value, **kwargs): def parameterized_codec(raw, b64): - pattern = re.compile(r'{{(\w+)}}') + pattern = re.compile(r'{{([::|\w]+)}}') parts = [] s_index = 0 diff --git a/stacker/tests/lookups/handlers/test_file.py b/stacker/tests/lookups/handlers/test_file.py index bf7074b40..ba2997785 100644 --- a/stacker/tests/lookups/handlers/test_file.py +++ b/stacker/tests/lookups/handlers/test_file.py @@ -58,11 +58,24 @@ def test_handler_parameterized(self): self.assertEqual(troposphere.GenericHelperFn, type(out)) def test_handler_parameterized_b64(self): - expected = 'Hello, world' + expected = 'Regular text {{Psuedo::Var}} {{RegVar}} {{Non-Var}}' + processed = { + 'Fn::Base64': { + 'Fn::Join': [ + '', + ['Regular text ', + {'Ref': 'Psuedo::Var'}, + ' ', + {'Ref': 'RegVar'}, + ' {{Non-Var}}'] + ] + } + } with mock.patch('stacker.lookups.handlers.file.read_value_from_path', return_value=expected): out = handler('parameterized-b64:file://tmp/test') self.assertEqual(troposphere.Base64, type(out)) + self.assertEqual(processed, out.data) def test_unknown_codec(self): expected = 'Hello, world'