summaryrefslogtreecommitdiffstats
path: root/app/tests/test_value_templates.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/tests/test_value_templates.py')
-rw-r--r--app/tests/test_value_templates.py227
1 files changed, 227 insertions, 0 deletions
diff --git a/app/tests/test_value_templates.py b/app/tests/test_value_templates.py
new file mode 100644
index 0000000..bc98fa8
--- /dev/null
+++ b/app/tests/test_value_templates.py
@@ -0,0 +1,227 @@
+import unittest
+from toscalib.templates.value import _is_function
+from tests.utils.test_utils import init_template
+
+
+class TestValueMethods(unittest.TestCase):
+
+ def test_value_is_get_input_function(self):
+ value = {'get_input': 'some_input_param'}
+ res = _is_function(value)
+ self.assertEqual(res.target_property, 'some_input_param')
+ self.assertEqual(res.type, 'get_input')
+
+ def test_value_is_simple_string(self):
+ value = 'not_a_function'
+ res = _is_function(value)
+ self.assertIsNone(res)
+
+ def test_value_is_not_valid_function(self):
+ value = {'function': 'unknown'}
+ res = _is_function(value)
+ self.assertIsNone(res)
+
+ def test_value_too_many_functions(self):
+ value = {'get_input': 'some_input_param', 'get_property': 'some_value'}
+ res = _is_function(value)
+ self.assertIsNone(res)
+
+ def test_value_is_concat_function(self):
+ value = {'concat': ['first', 'second']}
+ res = _is_function(value)
+ self.assertEqual(res.type, 'concat')
+ self.assertEqual(res.extra_data[0].raw_value, 'first')
+ self.assertEqual(res.extra_data[0].type, 'string')
+ self.assertEqual(res.extra_data[0].value, 'first')
+ self.assertEqual(res.extra_data[1].raw_value, 'second')
+ self.assertEqual(res.extra_data[1].type, 'string')
+ self.assertEqual(res.extra_data[1].value, 'second')
+
+ def test_invalid_function_values_not_list(self):
+ value = {'concat': {'first': 'one', 'second': 'two'}}
+ res = _is_function(value)
+ self.assertIsNone(res)
+
+ def test_value_is_valid_function(self):
+ value = {'get_property': ['first', 'second']}
+ res = _is_function(value)
+ self.assertEqual(res.type, 'get_property')
+ self.assertListEqual(res.extra_data, value['get_property'])
+
+ def test_update_get_input_value_prefix(self):
+ value = {'get_input': 'some_input_param'}
+ res = _is_function(value)
+ self.assertEqual(res.target_property, 'some_input_param')
+ res._update_prefix('PREFIX_')
+ self.assertEqual(res.target_property, 'PREFIX_some_input_param')
+
+ def test_update_get_property_value_no_prefix(self):
+ value = {'get_property': ['NO_PREFIX', 'some_property']}
+ res = _is_function(value)
+ self.assertEqual(res.extra_data[0], 'NO_PREFIX')
+ res._update_prefix('PREFIX_')
+ self.assertEqual(res.extra_data[0], 'PREFIX')
+
+ def test_update_concat_get_input_value_prefix(self):
+ value = {'concat': [{'get_input': 'some_input_param'}, 'second']}
+ res = _is_function(value)
+ self.assertEqual(res.extra_data[0].function.target_property, 'some_input_param')
+ self.assertEqual(res.extra_data[1].value, 'second')
+ res._update_prefix('PREFIX_')
+ self.assertEqual(res.extra_data[0].function.target_property, 'PREFIX_some_input_param')
+ self.assertEqual(res.extra_data[1].value, 'second')
+
+ def test_update_get_input_function_reference(self):
+ template = init_template()
+ value = {'get_input': 'inputName'}
+ res = _is_function(value)
+ self.assertIsNone(res.value_from_item)
+ res._update_function_reference(template)
+ self.assertEqual(res.value_from_item, template.inputs.get('inputName'))
+
+ # TODO uncomment after merging latest ecomp code
+ # def test_update_get_input_function_reference_auto_generate_input(self):
+ # template = init_template()
+ # node = template.node_dict.get('nodeName')
+ # value = {'get_input': 'propertyName'}
+ # res = _is_function(value)
+ # self.assertIsNone(res.value_from_item)
+ # self.assertIsNone(template.inputs.get('nodeName_propertyName'))
+ # self.assertEqual(res.target_property, 'propertyName')
+ # res._update_function_reference(template, node, node.properties.get('propertyName'))
+ # self.assertIsNotNone(res.value_from_item)
+ # self.assertEqual(res.value_from_item, template.inputs.get('nodeName_propertyName'))
+
+ def test_update_get_property_function_reference_node_not_found(self):
+ value = {'get_property': ['node_name', 'property_name']}
+ res = _is_function(value)
+ self.assertIsNone(res.value_from_item)
+ res._update_function_reference(init_template())
+ self.assertIsNone(res.value_from_item)
+
+ def test_update_get_property_function_reference_self_property(self):
+ template = init_template()
+ node = template.node_dict.get('nodeName')
+ value = {'get_property': ['SELF', 'propertyName']}
+ res = _is_function(value)
+ self.assertIsNone(res.value_from_node)
+ self.assertIsNone(res.value_from_item)
+ res._update_function_reference(template, node)
+ self.assertEqual(res.value_from_node, node)
+ self.assertEqual(res.value_from_item, node.properties.get('propertyName'))
+
+ def test_update_get_property_function_reference_other_node_property(self):
+ template = init_template()
+ node = template.node_dict.get('nodeName')
+ value = {'get_property': ['nodeName', 'propertyName']}
+ res = _is_function(value)
+ self.assertIsNone(res.value_from_node)
+ self.assertIsNone(res.value_from_item)
+ res._update_function_reference(template)
+ self.assertIsNotNone(res.value_from_node)
+ self.assertIsNotNone(res.value_from_item)
+ self.assertEqual(res.value_from_node, node)
+ self.assertEqual(res.value_from_item, node._get_property_item('propertyName'))
+
+ def test_update_get_property_function_reference_capability_property(self):
+ template = init_template()
+ value = {'get_property': ['nodeName', 'capabilityName', 'capabilityProperty']}
+ res = _is_function(value)
+ self.assertIsNone(res.value_from_node)
+ self.assertIsNone(res.value_from_item)
+ res._update_function_reference(template)
+ self.assertIsNotNone(res.value_from_node)
+ self.assertIsNotNone(res.value_from_item)
+ node = template.node_dict.get('nodeName')
+ self.assertEqual(res.value_from_node, node)
+ self.assertEqual(res.value_from_item, node._get_capability_property('capabilityName', 'capabilityProperty'))
+
+ def test_update_get_property_function_reference_requirement_capability_property(self):
+ template = init_template()
+ value = {'get_property': ['node2', 'dummyRequirement', 'capabilityProperty']}
+ res = _is_function(value)
+ self.assertIsNone(res.value_from_node)
+ self.assertIsNone(res.value_from_item)
+ res._update_function_reference(template)
+ self.assertIsNotNone(res.value_from_node)
+ self.assertIsNotNone(res.value_from_item)
+ node = template.node_dict.get('nodeName')
+ self.assertEqual(res.value_from_node, node)
+ self.assertEqual(res.value_from_item, node._get_capability_property('capabilityName', 'capabilityProperty'))
+
+ def test_update_get_property_function_reference_requirement_target_property(self):
+ template = init_template()
+ value = {'get_property': ['node2', 'dummyRequirement', 'propertyName']}
+ res = _is_function(value)
+ self.assertIsNone(res.value_from_node)
+ self.assertIsNone(res.value_from_item)
+ res._update_function_reference(template)
+ self.assertIsNotNone(res.value_from_node)
+ self.assertIsNotNone(res.value_from_item)
+ node = template.node_dict.get('nodeName')
+ self.assertEqual(res.value_from_node, node)
+ self.assertEqual(res.value_from_item, node._get_property_item('propertyName'))
+
+ def test_update_get_attribute_function_reference_invalid_params(self):
+ value = {'get_attribute': ['no_such_node', 'some_attribute']}
+ res = _is_function(value)
+ res._update_function_reference(init_template())
+ self.assertIsNone(res.value_from_node)
+ self.assertIsNone(res.value_from_item)
+
+ def test_update_get_attribute_function_self_attribute(self):
+ template = init_template()
+ node = template.node_dict.get('nodeName')
+ value = {'get_attribute': ['SELF', 'attributeName']}
+ res = _is_function(value)
+ self.assertIsNone(res.value_from_node)
+ self.assertIsNone(res.value_from_item)
+ res._update_function_reference(template, node)
+ self.assertEqual(res.value_from_node, node)
+ self.assertEqual(res.value_from_item, node.attributes.get('attributeName'))
+
+ def test_update_get_attribute_function_node_id_attribute(self):
+ template = init_template()
+ node = template.node_dict.get('nodeName')
+ value = {'get_attribute': ['SELF', 'id']}
+ res = _is_function(value)
+ self.assertIsNone(res.value_from_node)
+ self.assertIsNone(res.value_from_item)
+ res._update_function_reference(template, node)
+ self.assertEqual(res.value_from_node, node)
+ self.assertEqual(res.value_from_item, node.id)
+
+ def test_update_get_attribute_function_other_node_id_attribute(self):
+ template = init_template()
+ node = template.node_dict.get('nodeName')
+ value = {'get_attribute': ['nodeName', 'id']}
+ res = _is_function(value)
+ self.assertIsNone(res.value_from_node)
+ self.assertIsNone(res.value_from_item)
+ res._update_function_reference(template)
+ self.assertEqual(res.value_from_node, node)
+ self.assertEqual(res.value_from_item, node.id)
+
+ def test_update_get_attribute_function_requirement_target_attribute(self):
+ template = init_template()
+ node = template.node_dict.get('nodeName')
+ value = {'get_attribute': ['node2', 'dummyRequirement', 'attributeName']}
+ res = _is_function(value)
+ self.assertIsNone(res.value_from_node)
+ self.assertIsNone(res.value_from_item)
+ res._update_function_reference(template)
+ self.assertEqual(res.value_from_node, node)
+ self.assertEqual(res.value_from_item, node.attributes.get('attributeName'))
+
+ def test_update_concat_function_reference(self):
+ template = init_template()
+ node = template.node_dict.get('nodeName')
+ value = {'concat': [{'get_attribute': ['nodeName', 'id']}, 'second']}
+ res = _is_function(value)
+ self.assertIsNone(res.extra_data[0].function.value_from_node)
+ res._update_function_reference(template)
+ self.assertIsNotNone(res.extra_data[0].function.value_from_node)
+ self.assertIsNotNone(res.extra_data[0].function.value_from_item)
+ self.assertEqual(res.extra_data[0].function.value_from_node, node)
+ self.assertEqual(res.extra_data[0].function.value_from_item, node.id)
+