Merge "Remove unnecessary check for pytest.skip"
[vvp/validation-scripts.git] / ice_validator / tests / test_nova_servers_workload_context.py
index 9daa45d..dc4c437 100644 (file)
 import pytest
 from tests import cached_yaml as yaml
 
-from .helpers import validates
+from .helpers import validates, get_param
 
 VERSION = "1.0.0"
 
 
 @validates("R-74978")
-def test_workload_context(heat_template):
+def test_workload_context(yaml_file):
     """
     A VNF's Heat Orchestration Template's OS::Nova::Server Resource
     **MUST**
@@ -59,7 +59,7 @@ def test_workload_context(heat_template):
     metadata map value parameter 'workload_context' **MUST**
     be declared as type: 'string'.
     """
-    with open(heat_template) as fh:
+    with open(yaml_file) as fh:
         yml = yaml.load(fh)
 
     if "parameters" not in yml:
@@ -79,7 +79,7 @@ def test_workload_context(heat_template):
             continue
         error = validate_metadata(metadata, yml["parameters"])
         if error:
-            assert False, '%s resource "%s" %s' % (heat_template, resource, error)
+            assert False, '%s resource "%s" %s' % (yaml_file, resource, error)
 
 
 def validate_metadata(metadata, parameters):
@@ -89,16 +89,7 @@ def validate_metadata(metadata, parameters):
     Return error message string or None if no errors.
     """
     for value in metadata.values():
-        if isinstance(value, dict):
-            if "get_param" in value:
-                if value["get_param"] == "workload_context":
-                    wc = parameters.get("workload_context", {})
-                    if wc.get("type") == "string":
-                        break
-                    else:
-                        return (
-                            'must have parameter "workload_context"' ' of type "string"'
-                        )
-                    break
-    else:
-        return None
+        if get_param(value) == "workload_context" and parameters.get("workload_context", {}).get("type", "") != "string":
+            return 'must have parameter "workload_context" of type "string"'
+        else:
+            return None