X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ice_validator%2Ftests%2Ftest_initial_configuration.py;h=654d75d95ed9874161bbcc7b7904283c3f7ee424;hb=b395eb5bb6c79558202a3d414982a56fac7c9e1d;hp=6a9156782ced2c0c9c9110d05b1dc38ffa0b2153;hpb=1f4df7c7ad27b23773ad9cdbe4db1632ce388cf1;p=vvp%2Fvalidation-scripts.git diff --git a/ice_validator/tests/test_initial_configuration.py b/ice_validator/tests/test_initial_configuration.py index 6a91567..654d75d 100644 --- a/ice_validator/tests/test_initial_configuration.py +++ b/ice_validator/tests/test_initial_configuration.py @@ -35,53 +35,34 @@ # # ============LICENSE_END============================================ # -# ECOMP is a trademark and service mark of AT&T Intellectual Property. -# -import os -from os import listdir from os import path import pytest +from yaml import YAMLError from yaml.constructor import ConstructorError from tests import cached_yaml as yaml from tests.utils import yaml_custom_utils -from .helpers import validates -from yamllint.config import YamlLintConfig -from yamllint import linter -from .utils.nested_files import check_for_invalid_nesting -from .utils.nested_files import get_list_of_nested_files -from .utils.nested_iterables import find_all_get_resource_in_yml -from .utils.nested_iterables import find_all_get_param_in_yml - -""" -Order tests by number so they execute in order for base tests -""" +from tests.helpers import validates, load_yaml +from tests.utils.nested_files import check_for_invalid_nesting +from tests.utils.nested_iterables import find_all_get_resource_in_yml +from tests.utils.nested_iterables import find_all_get_param_in_yml @pytest.mark.base @validates("R-95303") def test_00_valid_yaml(filename): - """ - Read in each .yaml or .env file. If it is successfully parsed as yaml, save - contents, else add filename to list of bad yaml files. Log the result of - parse attempt. - """ - conf = YamlLintConfig("rules: {}") - - if path.splitext(filename)[-1] in [".yml", ".yaml", ".env"]: - gen = linter.run(open(filename), conf) - errors = list(gen) - - assert not errors, "Error parsing file {} with error {}".format( - filename, errors - ) - else: - pytest.skip( - "The file does not have any of the extensions .yml,\ - .yaml, or .env" - ) + if path.splitext(filename)[-1].lower() not in (".yml", ".yaml", ".env"): + pytest.skip("Not a YAML file") + try: + load_yaml(filename) + except YAMLError as e: + assert False, ( + "Invalid YAML detected: {} " + "NOTE: Online YAML checkers such as yamllint.com " + "can helpful in diagnosing errors in YAML" + ).format(str(e).replace("\n", " ")) @pytest.mark.base @@ -99,19 +80,20 @@ def test_02_no_duplicate_keys_in_file(yaml_file): try: with open(yaml_file) as fh: - normal_yaml.load(fh) + normal_yaml.safe_load(fh) except ConstructorError as e: pytest.fail("{} {}".format(e.problem, e.problem_mark)) @pytest.mark.base +@validates("R-92635") def test_03_all_referenced_resources_exists(yaml_file): """ Check that all resources referenced by get_resource actually exists in all yaml files """ with open(yaml_file) as fh: - yml = yaml.load(fh) + yml = yaml.safe_load(fh) # skip if resources are not defined if "resources" not in yml: @@ -137,6 +119,7 @@ def test_03_all_referenced_resources_exists(yaml_file): @pytest.mark.base +@validates("R-92635") def test_04_valid_nesting(yaml_file): """ Check that the nesting is following the proper format and @@ -162,6 +145,7 @@ def test_04_valid_nesting(yaml_file): @pytest.mark.base +@validates("R-92635") def test_05_all_get_param_have_defined_parameter(yaml_file): """ Check that all referenced parameters are actually defined @@ -207,29 +191,3 @@ def test_06_heat_template_resource_section_has_resources(heat_template): break assert found_resource, "Heat templates must contain at least one resource" - - -@validates("R-52530") -@pytest.mark.base -def test_07_nested_template_in_same_directory(yaml_file): - - missing_files = [] - - with open(yaml_file) as fh: - yml = yaml.load(fh) - - # skip if resources are not defined - if "resources" not in yml: - pytest.skip("No resources specified in the heat template") - - dirname = os.path.dirname(yaml_file) - list_of_files = get_list_of_nested_files(yml, dirname) - dir_files = listdir(dirname) - for file in list_of_files: - base_name = path.basename(file) - if base_name not in dir_files: - missing_files.append(base_name) - - assert ( - not missing_files - ), "Missing nested files in heat template directory {}".format(missing_files)