diff options
author | stark, steven <steven.stark@att.com> | 2018-12-17 12:43:02 -0800 |
---|---|---|
committer | stark, steven <steven.stark@att.com> | 2018-12-17 13:04:00 -0800 |
commit | 1f4df7c7ad27b23773ad9cdbe4db1632ce388cf1 (patch) | |
tree | 8092104f8be23051ff81c9f71ee34116df4d33ba /ice_validator/tests/test_nested_parameters.py | |
parent | ca9085f0f77d442d3741a8c754e65cc45b6a318d (diff) |
[VVP] updating validation scripts in dublin
- adding backlog of new validation scripts for dublin
- updating existing tests
- removing outdated tests
Issue-ID: VVP-123
Change-Id: Ib8260889ac957c1dd28d8ede450fc8edc6fb0ec0
Signed-off-by: stark, steven <steven.stark@att.com>
Diffstat (limited to 'ice_validator/tests/test_nested_parameters.py')
-rw-r--r-- | ice_validator/tests/test_nested_parameters.py | 113 |
1 files changed, 87 insertions, 26 deletions
diff --git a/ice_validator/tests/test_nested_parameters.py b/ice_validator/tests/test_nested_parameters.py index a1af4bd..3e3bb06 100644 --- a/ice_validator/tests/test_nested_parameters.py +++ b/ice_validator/tests/test_nested_parameters.py @@ -41,40 +41,101 @@ """heat parameters """ -import os - import pytest from tests import cached_yaml as yaml +from tests.structures import Resource from .helpers import validates -from .utils.nested_files import get_list_of_nested_files -VERSION = '1.0.0' +VERSION = "1.0.0" -@validates('R-00011') -def test_nested_parameter(yaml_file): - ''' - A VNF's Heat Orchestration Template's Nested YAML file's - parameter's **MUST NOT** have a parameter constraint defined. +def check_nested_parameter_doesnt_change(yaml_file, parameter): - ''' with open(yaml_file) as fh: yml = yaml.load(fh) - dirname = os.path.dirname(yaml_file) - nested_files = get_list_of_nested_files(yml, dirname) - if nested_files: - for filename in nested_files: - with open(filename) as fh: - template = yaml.load(fh) - parameters = template.get('parameters') - if parameters and isinstance(parameters, dict): - for param, value in parameters.items(): - if isinstance(value, dict): - assert 'constraints' not in value, ( - '%s parameter "%s" has "constraints"' % ( - filename, - param)) - else: - pytest.skip('No nested files') + # skip if resources are not defined + if "resources" not in yml: + pytest.skip("No resources specified in the heat template") + + invalid_parameters = [] + + """ + checking if property: { get_param: <parameter> }, then property == <parameter> + + resource_id: + type: nested.yaml + properties: + property: { get_param: <parameter> } + + resource_id: + type: OS::Heat::ResourceGroup + properties: + resource_def: + properties: + property: { get_param: <parameter> } + """ + for resource_id, resource in yml.get("resources", {}).items(): + r = Resource(resource_id=resource_id, resource=resource) + properties = r.get_nested_properties() + for k1, v1 in properties.items(): + if ( + isinstance(v1, dict) + and "get_param" in v1 + and parameter == v1.get("get_param") + ): + if k1 != parameter: + invalid_parameters.append( + { + "resource": r.resource_id, + "nested parameter": k1, + "parameter": parameter, + } + ) + + assert ( + not invalid_parameters + ), "Invalid parameter name change detected in nested template {}".format( + invalid_parameters + ) + + +@validates("R-70757") +def test_vm_role_doesnt_change_in_nested_template(yaml_file): + check_nested_parameter_doesnt_change(yaml_file, "vm_role") + + +@validates("R-44491") +def test_vnf_id_doesnt_change_in_nested_template(yaml_file): + check_nested_parameter_doesnt_change(yaml_file, "vnf_id") + + +@validates("R-86237") +def test_vf_module_id_doesnt_change_in_nested_template(yaml_file): + check_nested_parameter_doesnt_change(yaml_file, "vf_module_id") + + +@validates("R-16576") +def test_vnf_name_doesnt_change_in_nested_template(yaml_file): + check_nested_parameter_doesnt_change(yaml_file, "vnf_name") + + +@validates("R-49177") +def test_vf_module_name_doesnt_change_in_nested_template(yaml_file): + check_nested_parameter_doesnt_change(yaml_file, "vf_module_name") + + +@validates("R-22441") +def test_vf_module_index_name_doesnt_change_in_nested_template(yaml_file): + check_nested_parameter_doesnt_change(yaml_file, "vf_module_index") + + +@validates("R-62954") +def test_environment_context_name_doesnt_change_in_nested_template(yaml_file): + check_nested_parameter_doesnt_change(yaml_file, "environment_context") + + +@validates("R-75202") +def test_workload_context_name_doesnt_change_in_nested_template(yaml_file): + check_nested_parameter_doesnt_change(yaml_file, "workload_context") |