def make_me_one_with_everything(self): return rsrc_defn.ResourceDefinition( 'rsrc', 'SomeType', properties={'Foo': cfn_funcs.Join(None, 'Fn::Join', ['a', ['b', 'r']]), 'Blarg': 'wibble'}, metadata={'Baz': cfn_funcs.Join(None, 'Fn::Join', ['u', ['q', '', 'x']])}, depends=['other_resource'], deletion_policy='Retain', update_policy={'SomePolicy': {}})
def test_resolve_rule_other_with_function(self): client_plugin, schema = self._test_resolve_rule() join_func = cfn_funcs.Join(None, 'Fn::Join', ['.', ['bar', 'baz']]) data = {'far': join_func} props = properties.Properties(schema, data) rule = translation.TranslationRule(props, translation.TranslationRule.RESOLVE, ['far'], client_plugin=client_plugin, finder='find_name_id') rule.execute_rule() self.assertEqual(data, props.data)
def test_resolve_rule_other_with_function(self): client_plugin, schema = self._test_resolve_rule() join_func = cfn_funcs.Join(None, 'Fn::Join', ['.', ['bar', 'baz']]) data = {'far': join_func} props = properties.Properties(schema, data) rule = translation.TranslationRule(props, translation.TranslationRule.RESOLVE, ['far'], client_plugin=client_plugin, finder='find_name_id') tran = translation.Translation(props) tran.set_rules([rule]) self.assertTrue(tran.has_translation('far')) result = tran.translate('far', data['far']) self.assertEqual('yellow', result) self.assertEqual('yellow', tran.resolved_translations['far'])
def test_resource_facade_function(self): deletion_policy_snippet = {'Fn::ResourceFacade': 'DeletionPolicy'} parent_resource = DummyClass() parent_resource.metadata_set({"foo": "bar"}) parent_resource.stack = stack.Stack(self.ctx, 'toplevel_stack', template.Template(empty_template)) del_policy = cfn_funcs.Join(parent_resource.stack, 'Fn::Join', ['eta', ['R', 'in']]) parent_resource.t = rsrc_defn.ResourceDefinition( 'parent', 'SomeType', deletion_policy=del_policy) stk = stack.Stack(self.ctx, 'test_stack', template.Template(empty_template), parent_resource='parent') stk._parent_stack = dict(parent=parent_resource) self.assertEqual('Retain', self.resolve(deletion_policy_snippet, stk.t, stk))
def test_resolve_rule_list_with_function(self): client_plugin, schema = self._test_resolve_rule(is_list=True) join_func = cfn_funcs.Join(None, 'Fn::Join', ['.', ['bar', 'baz']]) data = { 'far': [{'red': 'blue'}, {'red': join_func}], } props = properties.Properties(schema, data) rule = translation.TranslationRule( props, translation.TranslationRule.RESOLVE, ['far', 'red'], client_plugin=client_plugin, finder='find_name_id' ) rule.execute_rule() self.assertEqual([{'red': 'yellow'}, {'red': 'yellow'}], props.get('far'))