diff options
author | huangtianhua <huangtianhua@huawei.com> | 2016-07-27 13:02:39 +0800 |
---|---|---|
committer | huangtianhua <huangtianhua@huawei.com> | 2016-08-25 01:14:34 +0000 |
commit | aeb15bf818cecf6a1a8a2719ea869b67ec8a93ce (patch) | |
tree | 886665492ed83972f7fbac96c916acd7d3a3fc18 /heat/tests/test_template.py | |
parent | 4c4d790c62f0517cda70aa2ab82fdd257de3ef43 (diff) | |
download | heat-aeb15bf818cecf6a1a8a2719ea869b67ec8a93ce.tar.gz |
Provides 'not' condition function
Support 'not' and 'Fn::Not' for templates:
AWSTemplateFormatVersion.2010-09-09
heat_template_version.2016-10-14
Change-Id: I6a9c89a23160a2cf06c37677871bcfbfab9599be
Blueprint: support-conditions-function
Diffstat (limited to 'heat/tests/test_template.py')
-rw-r--r-- | heat/tests/test_template.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/heat/tests/test_template.py b/heat/tests/test_template.py index c3af2076e..c2ab40038 100644 --- a/heat/tests/test_template.py +++ b/heat/tests/test_template.py @@ -950,6 +950,55 @@ class TemplateTest(common.HeatTestCase): self.resolve_condition, snippet, tmpl) self.assertIn(error_msg, six.text_type(exc)) + def test_not(self): + tpl = template_format.parse(''' + AWSTemplateFormatVersion: 2010-09-09 + Parameters: + env_type: + Type: String + Default: 'test' + ''') + snippet = {'Fn::Not': [{'Fn::Equals': [{'Ref': 'env_type'}, 'prod']}]} + # when param 'env_type' is 'test', not function resolve to true + tmpl = template.Template(tpl) + stk = stack.Stack(utils.dummy_context(), + 'test_not_true', tmpl) + resolved = self.resolve_condition(snippet, tmpl, stk) + self.assertTrue(resolved) + # when param 'env_type' is 'prod', not function resolve to false + tmpl = template.Template(tpl, + env=environment.Environment( + {'env_type': 'prod'})) + stk = stack.Stack(utils.dummy_context(), + 'test_not_false', tmpl) + resolved = self.resolve_condition(snippet, tmpl, stk) + self.assertFalse(resolved) + + def test_not_invalid_args(self): + tmpl = template.Template(aws_empty_template) + + snippet = {'Fn::Not': ['invalid_arg']} + exc = self.assertRaises(ValueError, + self.resolve_condition, snippet, tmpl) + + error_msg = ('The condition value should be boolean, ' + 'after resolved the value is: invalid_arg') + self.assertIn(error_msg, six.text_type(exc)) + # test invalid type + snippet = {'Fn::Not': 'invalid'} + exc = self.assertRaises(exception.StackValidationFailed, + self.resolve_condition, snippet, tmpl) + error_msg = ('.Fn::Not: Arguments to "Fn::Not" must be ' + 'of the form: [condition]') + self.assertIn(error_msg, six.text_type(exc)) + + snippet = {'Fn::Not': ['cd1', 'cd2']} + exc = self.assertRaises(exception.StackValidationFailed, + self.resolve_condition, snippet, tmpl) + error_msg = ('.Fn::Not: Arguments to "Fn::Not" must be ' + 'of the form: [condition]') + self.assertIn(error_msg, six.text_type(exc)) + def test_join(self): tmpl = template.Template(empty_template) join = {"Fn::Join": [" ", ["foo", "bar"]]} |