[VVP] Allow base templates to not have resources 21/100421/1
authorLovett, Trevor <trevor.lovett@att.com>
Fri, 17 Jan 2020 18:26:18 +0000 (12:26 -0600)
committerLovett, Trevor (tl2972) <tl2972@att.com>
Fri, 17 Jan 2020 18:27:39 +0000 (12:27 -0600)
Change-Id: I44232d58697ff95b418e9594451cda3c3a90c798
Issue-ID: VVP-361
Signed-off-by: Lovett, Trevor <trevor.lovett@att.com>
ice_validator/tests/fixtures/test_heat_template_structure/fail/resources/no_resources.yaml [new file with mode: 0644]
ice_validator/tests/fixtures/test_heat_template_structure/fail/structure/non_heat_template_invalid_keys.yaml [moved from ice_validator/tests/fixtures/test_heat_template_structure/fail/non_heat_template_invalid_keys.yaml with 100% similarity]
ice_validator/tests/fixtures/test_heat_template_structure/fail/structure/non_heat_template_invalid_keys.yml [moved from ice_validator/tests/fixtures/test_heat_template_structure/fail/non_heat_template_invalid_keys.yml with 100% similarity]
ice_validator/tests/fixtures/test_heat_template_structure/fail/structure/non_heat_template_no_valid_keys.yaml [moved from ice_validator/tests/fixtures/test_heat_template_structure/fail/non_heat_template_no_valid_keys.yaml with 100% similarity]
ice_validator/tests/fixtures/test_heat_template_structure/pass/base.yaml [new file with mode: 0644]
ice_validator/tests/test_heat_template_structure.py
ice_validator/tests/test_initial_configuration.py

diff --git a/ice_validator/tests/fixtures/test_heat_template_structure/fail/resources/no_resources.yaml b/ice_validator/tests/fixtures/test_heat_template_structure/fail/resources/no_resources.yaml
new file mode 100644 (file)
index 0000000..2737b4b
--- /dev/null
@@ -0,0 +1,49 @@
+# -*- coding: utf8 -*-
+# ============LICENSE_START=======================================================
+# org.onap.vvp/validation-scripts
+# ===================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ===================================================================
+#
+# Unless otherwise specified, all software contained herein is licensed
+# 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
+#
+#             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.
+#
+#
+#
+# Unless otherwise specified, all documentation contained herein is licensed
+# 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
+#
+#             https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# 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.
+#
+# ============LICENSE_END============================================
+heat_template_version: 2015-04-30
+
+description: test
+
+parameters:
+  a:
+    type: string
+    description: Name of key-pair to be used for compute instance
+
+outputs:
+  a:
+    description: a value
+    value: { get_param: a }
diff --git a/ice_validator/tests/fixtures/test_heat_template_structure/pass/base.yaml b/ice_validator/tests/fixtures/test_heat_template_structure/pass/base.yaml
new file mode 100644 (file)
index 0000000..2737b4b
--- /dev/null
@@ -0,0 +1,49 @@
+# -*- coding: utf8 -*-
+# ============LICENSE_START=======================================================
+# org.onap.vvp/validation-scripts
+# ===================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ===================================================================
+#
+# Unless otherwise specified, all software contained herein is licensed
+# 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
+#
+#             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.
+#
+#
+#
+# Unless otherwise specified, all documentation contained herein is licensed
+# 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
+#
+#             https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# 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.
+#
+# ============LICENSE_END============================================
+heat_template_version: 2015-04-30
+
+description: test
+
+parameters:
+  a:
+    type: string
+    description: Name of key-pair to be used for compute instance
+
+outputs:
+  a:
+    description: a value
+    value: { get_param: a }
index 192f45a..da2de5e 100644 (file)
 
 """Test heat template structure
 """
+import pytest
 
 from tests import cached_yaml as yaml
-from .helpers import validates
+from .helpers import validates, is_base_module, load_yaml
 
 VERSION = "1.2.0"
 
@@ -101,15 +102,10 @@ def test_heat_template_structure_contains_resources(heat_template):
     """
     Check that all heat templates have the required sections
     """
-    required_key_values = ["resources"]
-
-    with open(heat_template) as fh:
-        yml = yaml.load(fh)
-    assert all(
-        [k in yml for k in required_key_values]
-    ), "{} doesn't contain the {} section, but it is required".format(
-        heat_template, required_key_values[0]
-    )
+    if is_base_module(heat_template):
+        pytest.skip("Not applicable to base modules")
+    template = load_yaml(heat_template)
+    assert "resources" in template, "This template must contain a resources section"
 
 
 @validates("R-11441")
index e4d8b01..13cc2c7 100644 (file)
@@ -176,20 +176,10 @@ def test_05_all_get_param_have_defined_parameter(yaml_file):
 
 @validates("R-90152")
 @pytest.mark.base
-def test_06_heat_template_resource_section_has_resources(heat_template):
-
-    found_resource = False
-
-    with open(heat_template) as fh:
-        yml = yaml.load(fh)
-
-    resources = yml.get("resources")
-    if resources:
-        for k1, v1 in yml["resources"].items():
-            if not isinstance(v1, dict):
-                continue
-
-            found_resource = True
-            break
-
-    assert found_resource, "Heat templates must contain at least one resource"
+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."