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'))
def test_update_prefix(self): template = init_template() node = template.node_dict.get('nodeName') prop_sec = { 'properties': { 'propertyName': { 'get_input': 'inputName' } }, 'capabilities': { 'capabilityName': { 'properties': { 'capabilityProperty': { 'get_property': ['nodeName', 'propertyName'] } } } } } node._parse_pre_defined_content(prop_sec) node._update_prefix('PREFIX_') self.assertEqual('PREFIX_nodeName', node.name) self.assertEqual('PREFIX_nodeName', node.id.value.function.extra_data[0]) self.assertEqual( 'PREFIX_inputName', node.properties.get('propertyName').value.function.target_property) self.assertEqual( 'PREFIX_nodeName', node._get_capability_property( 'capabilityName', 'capabilityProperty').value.function.extra_data[0])
def test_instantiate_with_type(self): template = init_template() node = Node(template, 'myNode', template.db.NODE_TYPES.get('nodeTypeName')) self.assertEqual(1, len(node.attributes)) node._instatiateWithType( template.db.NODE_TYPES.get('substituteNodeType')) self.assertEqual(0, len(node.attributes))
def test_parse_pre_defined_content(self): template = init_template() node = Node(template, 'myNode', template.db.NODE_TYPES.get('nodeTypeName')) self.assertIsNone(node.properties.get('propertyName').value) prop_sec = {'properties': {'propertyName': 'template_value'}} node._parse_pre_defined_content(prop_sec) self.assertEqual('template_value', node.properties.get('propertyName').value.value)
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_calculate_property_function_result(self): template = init_template() value = {'get_property': ['node2', 'dummyRequirement', 'propertyName']} func = _is_function(value) res = func._calculate_function_result() self.assertEqual(res, (value, 2)) func._update_function_reference(template) res = func._calculate_function_result() expected = ({'get_property': ['nodeName', 'propertyName']}, 2) self.assertEqual(res, expected)
def test_update_get_node_name_property_value(self): template = init_template() node = Node(template, 'myNode', template.db.NODE_TYPES.get('nodeTypeName')) prop_sec = {'properties': {'propertyName': '__GET_NODE_NAME__'}} node._parse_pre_defined_content(prop_sec) self.assertEqual('__GET_NODE_NAME__', node.properties.get('propertyName').value.value) node._update_get_node_name() self.assertEqual('myNode', node.properties.get('propertyName').value.value)
def test_get_id_attribute_function_representation(self): template = init_template() node = template.node_dict.get('nodeName') value = {'get_attribute': ['SELF', 'id']} func = _is_function(value) func._update_function_reference(template, node) self.assertIsNotNone(func.value_from_node) res = func._get_function_representation() self.assertEqual(res, {'get_attribute': ['nodeName', 'id']}) res = func._get_function_representation('heat') self.assertEqual(res, {'get_id': 'nodeName'})
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)
def test_verify_functions(self): template = init_template() node = template.node_dict.get('nodeName') prop_sec = { 'properties': { 'propertyName': { 'get_input': 'inputName' } }, 'capabilities': { 'capabilityName': { 'properties': { 'capabilityProperty': { 'get_property': ['nodeName', 'propertyName'] } } } } } node._parse_pre_defined_content(prop_sec) self.assertIsNone( node.properties.get('propertyName').value.function.value_from_item) self.assertIsNone( node._get_capability_property( 'capabilityName', 'capabilityProperty').value.function.value_from_item) self.assertIsNone( node._get_capability_property( 'capabilityName', 'capabilityProperty').value.function.value_from_node) node._verify_functions() self.assertIsNotNone( node.properties.get('propertyName').value.function.value_from_item) self.assertIsNotNone( node._get_capability_property( 'capabilityName', 'capabilityProperty').value.function.value_from_item) self.assertIsNotNone( node._get_capability_property( 'capabilityName', 'capabilityProperty').value.function.value_from_node) self.assertEqual( template.inputs.get('inputName'), node.properties.get('propertyName').value.function.value_from_item) self.assertEqual( node.properties.get('propertyName'), node._get_capability_property( 'capabilityName', 'capabilityProperty').value.function.value_from_item) self.assertEqual( node, node._get_capability_property( 'capabilityName', 'capabilityProperty').value.function.value_from_node)
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_calculate_concat_function_result(self): template = init_template() node = template.node_dict.get('nodeName') value = {'concat': [{'get_attribute': ['SELF', 'id']}, {'concat': [{'get_property': ['SELF', 'propertyName']}, 'third', '4']}]} func = _is_function(value) res = func._calculate_function_result() self.assertEqual(res, (value, 2)) func._update_function_reference(template, node) res = func._calculate_function_result() expected = {'concat': [{'get_attribute': ['nodeName', 'id']}, {'concat': [{'get_property': ['nodeName', 'propertyName']}, 'third', '4']}]} self.assertEqual(res, (expected, 2))
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_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_mapping_template_pointer(self): template = init_template() sub_sec = { 'node_type': 'substituteNodeType', 'capabilities': { 'substituteCapability': ['nodeName', 'capabilityName'] } } sub_type = template.db.NODE_TYPES.get('substituteNodeType') self.assertIsNone(sub_type.mapping_template) template._parse_substitution(template.db, sub_sec) self.assertIsNotNone(sub_type.mapping_template) self.assertEqual(sub_type.mapping_template, template)
def test_get_self_property_function_representation(self): value = {'get_property': ['SELF', 'propertyName']} func = _is_function(value) self.assertIsNotNone(func.extra_data) self.assertIsNone(func.value_from_node) res = func._get_function_representation() self.assertEqual(res, value) template = init_template() node = template.node_dict.get('nodeName') func._update_function_reference(template, node) self.assertIsNotNone(func.value_from_node) res = func._get_function_representation() self.assertEqual(res, {'get_property': ['nodeName', 'propertyName']})
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_parse_substitution(self): template = init_template() sub_sec = { 'node_type': 'substituteNodeType', 'requirements': { 'substituteRequirement': ['node2', 'dummyRequirement'] }, 'capabilities': { 'substituteCapability': ['nodeName', 'capabilityName'] } } self.assertIsNone(template.sub_type) self.assertEqual(len(template.sub_rules), 0) template._parse_substitution(template.db, sub_sec) self.assertEqual(template.sub_type, 'substituteNodeType') self.assertEqual(len(template.sub_rules), 3)
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_prepare_output(self): template = ToscaTopology('topoName') res = template._prepare_output() self.assertEqual( res, { '00_YAMLORDER_tosca_definitions_version': 'tosca_simple_yaml_1_0_0', '14_YAMLORDER_topology_template': {} }) template = init_template() res = template._prepare_output() self.assertEqual( res, { '00_YAMLORDER_tosca_definitions_version': 'tosca_simple_yaml_1_0_0', '14_YAMLORDER_topology_template': { '11_YAMLORDER_inputs': { 'inputName': { '00_YAMLORDER_type': 'string' } }, '13_YAMLORDER_node_templates': { 'node2': { '00_YAMLORDER_type': 'nodeTypeName', '01_YAMLORDER_properties': { 'propertyName': None }, '05_YAMLORDER_requirements': [{ 'dummyRequirement': 'nodeName' }] }, 'nodeName': { '00_YAMLORDER_type': 'nodeTypeName', '01_YAMLORDER_properties': { 'propertyName': None } } } } })
def test_prepare_schema(self): db = ToscaDB() res = db._prepare_schema() self.assertEqual(res, { '00_YAMLORDER_tosca_definitions_version': 'tosca_simple_yaml_1_0_0' }) db = init_template().db res = db._prepare_schema() self.assertEqual( res, { '00_YAMLORDER_tosca_definitions_version': 'tosca_simple_yaml_1_0_0', '08_YAMLORDER_capability_types': { 'tosca.capabilities.dummy': { 'properties': { 'capabilityProperty': { 'type': 'string' } } }, 'tosca.capabilities.substitute': { 'properties': { 'capabilityProperty': { 'type': 'string' } } } }, '11_YAMLORDER_node_types': { 'nodeTypeName': { 'attributes': { 'attributeName': { 'type': 'string' } }, 'capabilities': { 'capabilityName': { 'type': 'tosca.capabilities.dummy' } }, 'id': 'nodeId', 'properties': { 'propertyName': { 'type': 'string' } }, 'requirements': [{ 'dummyRequirement': { 'capability': 'tosca.capabilities.dummy' } }] }, 'substituteNodeType': { 'capabilities': { 'substituteCapability': { 'type': 'tosca.capabilities.substitute' } }, 'id': 'subNodeId', 'properties': { 'inputName': { 'type': 'string' } }, 'requirements': [{ 'substituteRequirement': { 'capability': 'tosca.capabilities.substitute' } }] } } })
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_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)