summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-heat-lib/pom.xml
blob: a7b77fa6b2ee324802479d1c3516732db9a95ac6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<!--
  ~ Copyright © 2016-2018 European Support Limited
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.openecomp.sdc.core</groupId>
    <name>openecomp-heat-lib</name>
    <artifactId>openecomp-heat-lib</artifactId>

    <parent>
        <artifactId>openecomp-sdc-lib</artifactId>
        <groupId>org.openecomp.sdc</groupId>
        <version>1.6.6-SNAPSHOT</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.sdc.common</groupId>
            <artifactId>onap-configuration-management-core</artifactId>
            <version>${project.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.onap.sdc.common</groupId>
            <artifactId>onap-tosca-datatype</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openecomp.sdc.core</groupId>
            <artifactId>openecomp-utilities-lib</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openecomp.sdc</groupId>
            <artifactId>openecomp-sdc-datatypes-lib</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openecomp.sdc.core</groupId>
            <artifactId>openecomp-common-lib</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.openecomp.sdc</groupId>
            <artifactId>openecomp-sdc-validation-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>



</project>
("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", " ")) def check_duplicate_keys(yaml_path): import yaml as normal_yaml try: with open(yaml_path) as fh: normal_yaml.load(fh, yaml_custom_utils.UniqueKeyLoader) # nosec except ConstructorError as e: pytest.fail("{} {}".format(e.problem, e.problem_mark)) @pytest.mark.base @validates("R-92635") def test_02_no_duplicate_keys_in_file(yaml_file): check_duplicate_keys(yaml_file) @pytest.mark.base @validates("R-92635") def test_02a_no_duplicate_keys_in_env(env_file): check_duplicate_keys(env_file) @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.safe_load(fh) # skip if resources are not defined if "resources" not in yml: pytest.skip("No resources specified in the yaml file") resources = yml.get("resources") if resources: resource_ids = resources.keys() referenced_resource_ids = find_all_get_resource_in_yml(yml) missing_referenced_resources = set() for referenced_resource_id in referenced_resource_ids: if referenced_resource_id not in resource_ids: missing_referenced_resources.add(referenced_resource_id) assert not missing_referenced_resources, ( "Unable to resolve get_resource for the following " "resource IDS: {}. Please ensure the resource ID is defined and " "nested under the resources section of the template".format( ", ".join(missing_referenced_resources) ) ) @pytest.mark.base @validates("R-92635") def test_04_valid_nesting(yaml_file): """ Check that the nesting is following the proper format and that all nested files exists and are parsable """ invalid_nesting = [] with open(yaml_file) as fh: yml = yaml.load(fh) if "resources" in yml: try: invalid_nesting.extend( check_for_invalid_nesting( yml["resources"], yaml_file, path.dirname(yaml_file) ) ) except Exception: invalid_nesting.append(yaml_file) assert not invalid_nesting, "invalid nested file detected in file {}\n\n".format( invalid_nesting ) @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 as parameters """ invalid_get_params = [] with open(yaml_file) as fh: yml = yaml.load(fh) resource_params = find_all_get_param_in_yml(yml) parameters = set(yml.get("parameters", {}).keys()) if not parameters: pytest.skip("no parameters detected") for rp in resource_params: if rp not in parameters: invalid_get_params.append(rp) assert ( not invalid_get_params ), "get_param reference detected without corresponding parameter defined {}".format( invalid_get_params ) @validates("R-90152") @pytest.mark.base def test_06_heat_template_resource_section_has_resources(yaml_file): template = load_yaml(yaml_file) if "resources" not in template: pytest.skip("No resources section") assert ( len(template["resources"]) > 0 ), "If resources section present, then there must be at least 1 resource defined."