diff options
-rw-r--r-- | heatclient/common/environment_format.py | 5 | ||||
-rw-r--r-- | heatclient/tests/test_environment_format.py | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/heatclient/common/environment_format.py b/heatclient/common/environment_format.py index 136c0ae..d3c002e 100644 --- a/heatclient/common/environment_format.py +++ b/heatclient/common/environment_format.py @@ -26,7 +26,7 @@ def parse(env_str): '''Takes a string and returns a dict containing the parsed structure. This includes determination of whether the string is using the - JSON or YAML format. + YAML format. ''' try: env = yaml.load(env_str, Loader=yaml_loader) @@ -35,6 +35,9 @@ def parse(env_str): else: if env is None: env = {} + elif not isinstance(env, dict): + raise ValueError('The environment is not a valid ' + 'YAML mapping data type.') for param in env: if param not in SECTIONS: diff --git a/heatclient/tests/test_environment_format.py b/heatclient/tests/test_environment_format.py index 0df52d1..bc694d4 100644 --- a/heatclient/tests/test_environment_format.py +++ b/heatclient/tests/test_environment_format.py @@ -49,6 +49,18 @@ parameters: } ''' self.assertRaises(ValueError, environment_format.parse, env) + def test_parse_string_environment(self): + env = 'just string' + expect = 'The environment is not a valid YAML mapping data type.' + msg = self.assertRaises(ValueError, environment_format.parse, env) + self.assertIn(expect, msg) + + def test_parse_document(self): + env = '["foo" , "bar"]' + expect = 'The environment is not a valid YAML mapping data type.' + msg = self.assertRaises(ValueError, environment_format.parse, env) + self.assertIn(expect, msg) + class YamlParseExceptions(testtools.TestCase): |