X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ice_validator%2Ftests%2Ftest_heat_template_parameters_contain_required_fields.py;h=c6f170ad59e15c5d754127e03303dbd0fd33ab24;hb=9c7ab065e6477c035ffc6addf384abcef2e9588a;hp=31684a5c6a10d1edd5ba76f1ac78b90c0a355b0a;hpb=c42086a36bbfaf9286e1c08330f25d1b06a35f4b;p=vvp%2Fvalidation-scripts.git diff --git a/ice_validator/tests/test_heat_template_parameters_contain_required_fields.py b/ice_validator/tests/test_heat_template_parameters_contain_required_fields.py index 31684a5..c6f170a 100644 --- a/ice_validator/tests/test_heat_template_parameters_contain_required_fields.py +++ b/ice_validator/tests/test_heat_template_parameters_contain_required_fields.py @@ -6,7 +6,7 @@ # =================================================================== # # Unless otherwise specified, all software contained herein is licensed -# under the Apache License, Version 2.0 (the “License”); +# under the Apache License, Version 2.0 (the "License"); # you may not use this software except in compliance with the License. # You may obtain a copy of the License at # @@ -21,7 +21,7 @@ # # # Unless otherwise specified, all documentation contained herein is licensed -# under the Creative Commons License, Attribution 4.0 Intl. (the “License”); +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); # you may not use this documentation except in compliance with the License. # You may obtain a copy of the License at # @@ -35,20 +35,22 @@ # # ============LICENSE_END============================================ # -# ECOMP is a trademark and service mark of AT&T Intellectual Property. # -from .helpers import validates -import yaml +from collections import defaultdict + import pytest +from tests import cached_yaml as yaml + +from .helpers import validates -@validates('R-36772', 'R-44001') +@validates("R-36772", "R-44001") def test_heat_template_parameters_contain_required_fields(yaml_file): - ''' + """ Check that all parameters in the environment file have the required fields - ''' - required_keys = ["type", "description"] + """ + required_keys = {"type", "description"} with open(yaml_file) as fh: yml = yaml.load(fh) @@ -57,11 +59,17 @@ def test_heat_template_parameters_contain_required_fields(yaml_file): if "parameters" not in yml: pytest.skip("No parameters specified in the heat template") - invalid_parameters = [] - for k1, v1 in yml["parameters"].items(): - if not isinstance(v1, dict): + invalid_params = defaultdict(list) + for param, param_attrs in yml["parameters"].items(): + if not isinstance(param_attrs, dict): continue - if not all(map(lambda v: v in v1, required_keys)): - invalid_parameters.append(k1) + for key in required_keys: + if key not in param_attrs: + invalid_params[param].append(key) - assert not set(invalid_parameters) + msg = [ + "Parameter {} is missing required attribute(s): {}".format(k, ", ".join(v)) + for k, v in invalid_params.items() + ] + msg = ". ".join(msg) + assert not invalid_params, msg