diff options
Diffstat (limited to 'catalog-be/src/test')
4 files changed, 309 insertions, 10 deletions
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/csar/ToscaFunctionYamlParsingHandlerTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/csar/ToscaFunctionYamlParsingHandlerTest.java new file mode 100644 index 0000000000..5b0096bb3f --- /dev/null +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/csar/ToscaFunctionYamlParsingHandlerTest.java @@ -0,0 +1,150 @@ +/* + * - + * ============LICENSE_START======================================================= + * Copyright (C) 2022 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.be.components.csar; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import org.junit.jupiter.api.Test; +import org.openecomp.sdc.be.datatypes.elements.ToscaConcatFunction; +import org.openecomp.sdc.be.datatypes.elements.ToscaFunction; +import org.openecomp.sdc.be.datatypes.elements.ToscaFunctionType; +import org.openecomp.sdc.be.datatypes.elements.ToscaGetFunctionDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.ToscaStringParameter; +import org.openecomp.sdc.be.datatypes.enums.PropertySource; +import org.openecomp.sdc.be.datatypes.tosca.ToscaGetFunctionType; + +class ToscaFunctionYamlParsingHandlerTest { + + final ToscaFunctionYamlParsingHandler toscaFunctionYamlParsingHandler = new ToscaFunctionYamlParsingHandler(); + + @Test + void buildToscaFunctionBasedOnPropertyValue_NotAToscaFunctionTest() { + assertEquals(Optional.empty(), toscaFunctionYamlParsingHandler.buildToscaFunctionBasedOnPropertyValue(null)); + } + + @Test + void buildToscaFunctionBasedOnPropertyValue_GetInputTest() { + final List<String> getInputParameters = List.of("input", "subProperty"); + final Map<String, Object> getInput = Map.of(ToscaFunctionType.GET_INPUT.getName(), getInputParameters); + final Optional<ToscaFunction> actualToscaFunctionOpt = toscaFunctionYamlParsingHandler.buildToscaFunctionBasedOnPropertyValue(getInput); + assertTrue(actualToscaFunctionOpt.isPresent()); + final ToscaFunction actualToscaFunction = actualToscaFunctionOpt.get(); + assertGetInput(actualToscaFunction, getInputParameters); + } + + @Test + void buildToscaFunctionBasedOnPropertyValue_GetPropertyTest() { + final List<String> getPropertyValue = List.of(PropertySource.SELF.getName(), "aProperty", "aSubProperty"); + final Map<String, Object> getProperty = Map.of(ToscaFunctionType.GET_PROPERTY.getName(), getPropertyValue); + + final Optional<ToscaFunction> actualToscaFunctionOpt = toscaFunctionYamlParsingHandler.buildToscaFunctionBasedOnPropertyValue(getProperty); + assertTrue(actualToscaFunctionOpt.isPresent()); + final ToscaFunction actualToscaFunction = actualToscaFunctionOpt.get(); + assertEquals(ToscaFunctionType.GET_PROPERTY, actualToscaFunction.getType()); + assertTrue(actualToscaFunction instanceof ToscaGetFunctionDataDefinition); + final ToscaGetFunctionDataDefinition toscaGetFunction = (ToscaGetFunctionDataDefinition) actualToscaFunction; + assertEquals(ToscaGetFunctionType.GET_PROPERTY, toscaGetFunction.getFunctionType()); + assertEquals("aSubProperty", toscaGetFunction.getPropertyName()); + assertEquals(PropertySource.SELF, toscaGetFunction.getPropertySource()); + assertEquals(getPropertyValue.subList(1, getPropertyValue.size()), toscaGetFunction.getPropertyPathFromSource()); + assertNull(toscaGetFunction.getPropertyUniqueId()); + assertNull(toscaGetFunction.getSourceName()); + } + + @Test + void buildToscaFunctionBasedOnPropertyValue_GetAttributeTest() { + final List<String> getPropertyValue = List.of(PropertySource.INSTANCE.getName(), "anAttribute", "aSubAttribute"); + final Map<String, Object> getProperty = Map.of(ToscaFunctionType.GET_ATTRIBUTE.getName(), getPropertyValue); + + final Optional<ToscaFunction> actualToscaFunctionOpt = toscaFunctionYamlParsingHandler.buildToscaFunctionBasedOnPropertyValue(getProperty); + assertTrue(actualToscaFunctionOpt.isPresent()); + final ToscaFunction actualToscaFunction = actualToscaFunctionOpt.get(); + assertEquals(ToscaFunctionType.GET_ATTRIBUTE, actualToscaFunction.getType()); + assertTrue(actualToscaFunction instanceof ToscaGetFunctionDataDefinition); + final ToscaGetFunctionDataDefinition toscaGetFunction = (ToscaGetFunctionDataDefinition) actualToscaFunction; + assertEquals(ToscaGetFunctionType.GET_ATTRIBUTE, toscaGetFunction.getFunctionType()); + assertEquals("aSubAttribute", toscaGetFunction.getPropertyName()); + assertEquals(PropertySource.INSTANCE, toscaGetFunction.getPropertySource()); + assertEquals(getPropertyValue.subList(1, getPropertyValue.size()), toscaGetFunction.getPropertyPathFromSource()); + assertEquals(getPropertyValue.get(0), toscaGetFunction.getSourceName()); + assertNull(toscaGetFunction.getPropertyUniqueId()); + } + + @Test + void buildToscaFunctionBasedOnPropertyValue_ConcatTest() { + final List<Object> concatValue = List.of("string1", "-", Map.of(ToscaFunctionType.GET_INPUT.getName(), "inputName")); + final Map<String, Object> concatValueMap = Map.of(ToscaFunctionType.CONCAT.getName(), concatValue); + + final Optional<ToscaFunction> actualToscaFunctionOpt = toscaFunctionYamlParsingHandler.buildToscaFunctionBasedOnPropertyValue(concatValueMap); + assertTrue(actualToscaFunctionOpt.isPresent()); + final ToscaFunction actualToscaFunction = actualToscaFunctionOpt.get(); + assertEquals(ToscaFunctionType.CONCAT, actualToscaFunction.getType()); + assertTrue(actualToscaFunction instanceof ToscaConcatFunction); + final ToscaConcatFunction toscaConcatFunction = (ToscaConcatFunction) actualToscaFunction; + assertEquals(3, toscaConcatFunction.getParameters().size()); + assertTrue(toscaConcatFunction.getParameters().get(0) instanceof ToscaStringParameter); + final ToscaStringParameter parameter1 = (ToscaStringParameter) toscaConcatFunction.getParameters().get(0); + assertEquals("string1", parameter1.getValue()); + assertTrue(toscaConcatFunction.getParameters().get(1) instanceof ToscaStringParameter); + final ToscaStringParameter parameter2 = (ToscaStringParameter) toscaConcatFunction.getParameters().get(1); + assertEquals("-", parameter2.getValue()); + assertTrue(toscaConcatFunction.getParameters().get(2) instanceof ToscaGetFunctionDataDefinition); + final ToscaGetFunctionDataDefinition getFunction = (ToscaGetFunctionDataDefinition) toscaConcatFunction.getParameters().get(2); + assertGetInput(getFunction, List.of("inputName")); + } + + + @Test + void isPropertyValueToscaFunctionTest() { + assertFalse(toscaFunctionYamlParsingHandler.isPropertyValueToscaFunction(ToscaFunctionType.GET_INPUT.getName())); + assertFalse(toscaFunctionYamlParsingHandler.isPropertyValueToscaFunction(new HashMap<>())); + assertFalse(toscaFunctionYamlParsingHandler.isPropertyValueToscaFunction( + Map.of(ToscaFunctionType.GET_ATTRIBUTE.getName(), "", ToscaFunctionType.GET_INPUT.getName(), "") + ) + ); + assertTrue(toscaFunctionYamlParsingHandler.isPropertyValueToscaFunction(Map.of(ToscaFunctionType.GET_ATTRIBUTE.getName(), ""))); + assertTrue(toscaFunctionYamlParsingHandler.isPropertyValueToscaFunction(Map.of(ToscaFunctionType.GET_INPUT.getName(), ""))); + assertTrue(toscaFunctionYamlParsingHandler.isPropertyValueToscaFunction(Map.of(ToscaFunctionType.GET_PROPERTY.getName(), ""))); + assertTrue(toscaFunctionYamlParsingHandler.isPropertyValueToscaFunction(Map.of(ToscaFunctionType.CONCAT.getName(), ""))); + assertFalse(toscaFunctionYamlParsingHandler.isPropertyValueToscaFunction(Map.of(ToscaFunctionType.YAML.getName(), ""))); + assertFalse(toscaFunctionYamlParsingHandler.isPropertyValueToscaFunction(Map.of(ToscaFunctionType.STRING.getName(), ""))); + } + + private static void assertGetInput(final ToscaFunction actualGetInputFunction, final List<String> expectedGetInputParameters) { + assertEquals(ToscaFunctionType.GET_INPUT, actualGetInputFunction.getType()); + assertTrue(actualGetInputFunction instanceof ToscaGetFunctionDataDefinition); + final ToscaGetFunctionDataDefinition toscaGetFunction = (ToscaGetFunctionDataDefinition) actualGetInputFunction; + assertEquals(ToscaGetFunctionType.GET_INPUT, toscaGetFunction.getFunctionType()); + assertEquals(expectedGetInputParameters.get(expectedGetInputParameters.size() - 1), toscaGetFunction.getPropertyName()); + assertEquals(PropertySource.SELF, toscaGetFunction.getPropertySource()); + assertEquals(expectedGetInputParameters, toscaGetFunction.getPropertyPathFromSource()); + assertNull(toscaGetFunction.getPropertyUniqueId()); + assertNull(toscaGetFunction.getSourceName()); + } +}
\ No newline at end of file diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandlerTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandlerTest.java index 6d779a192e..d9525b1590 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandlerTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandlerTest.java @@ -90,6 +90,8 @@ public class YamlTemplateParsingHandlerTest { private User user; @Mock private PolicyTypeBusinessLogic policyTypeBusinessLogic; + @Mock + private ToscaFunctionYamlParsingHandler toscaFunctionYamlParsingHandler; private YamlTemplateParsingHandler handler; @@ -135,10 +137,9 @@ public class YamlTemplateParsingHandlerTest { @BeforeEach public void setup() { - - AnnotationBusinessLogic annotationBusinessLogic = new AnnotationBusinessLogic(annotationTypeOperations, - annotationValidator); - handler = new YamlTemplateParsingHandler(janusGraphDao, groupTypeBusinessLogic, annotationBusinessLogic, policyTypeBusinessLogic); + final var annotationBusinessLogic = new AnnotationBusinessLogic(annotationTypeOperations, annotationValidator); + handler = new YamlTemplateParsingHandler(janusGraphDao, groupTypeBusinessLogic, annotationBusinessLogic, policyTypeBusinessLogic, + toscaFunctionYamlParsingHandler); ReflectionTestUtils.setField(handler, "policyTypeBusinessLogic", policyTypeBusinessLogic); } @@ -315,15 +316,15 @@ public class YamlTemplateParsingHandlerTest { assertEquals(5, resourceInstanceWithAttributes.getAttributes().size()); assertTrue(resourceInstanceWithAttributes.getAttributes().containsKey("fq_name")); - assertEquals(resourceInstanceWithAttributes.getAttributes().get("fq_name").getValue(), "fq_name_value"); + assertEquals("fq_name_value", resourceInstanceWithAttributes.getAttributes().get("fq_name").getValue()); assertTrue(resourceInstanceWithAttributes.getAttributes().containsKey("tosca_name")); - assertEquals(resourceInstanceWithAttributes.getAttributes().get("tosca_name").getValue(), "tosca_name_value"); + assertEquals("tosca_name_value", resourceInstanceWithAttributes.getAttributes().get("tosca_name").getValue()); assertTrue(resourceInstanceWithAttributes.getAttributes().containsKey("subnets_show")); - assertEquals(resourceInstanceWithAttributes.getAttributes().get("subnets_show").getValue(), expectedSubnetsShowList); + assertEquals(expectedSubnetsShowList, resourceInstanceWithAttributes.getAttributes().get("subnets_show").getValue()); assertTrue(resourceInstanceWithAttributes.getAttributes().containsKey("subnets_name")); - assertEquals(resourceInstanceWithAttributes.getAttributes().get("subnets_name").getValue(), expectedSubnetsNameMap); + assertEquals(expectedSubnetsNameMap, resourceInstanceWithAttributes.getAttributes().get("subnets_name").getValue()); assertTrue(resourceInstanceWithAttributes.getAttributes().containsKey("new_attribute")); - assertEquals(resourceInstanceWithAttributes.getAttributes().get("new_attribute").getValue(), "new_attribute_value"); + assertEquals("new_attribute_value", resourceInstanceWithAttributes.getAttributes().get("new_attribute").getValue()); } private void validateParsedYaml(ParsedToscaYamlInfo parsedYaml, String group, List<String> expectedProp) { diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogicTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogicTest.java index d85ad38120..ff47d75509 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogicTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogicTest.java @@ -1483,7 +1483,7 @@ class ResourceBusinessLogicTest { String resourceYml = new String(csar.get("Definitions/my_vnf.yaml")); YamlTemplateParsingHandler yamlTemplateParser = new YamlTemplateParsingHandler(mockJanusGraphDao, null, - Mockito.mock(AnnotationBusinessLogic.class), null); + Mockito.mock(AnnotationBusinessLogic.class), null, null); final ParsedToscaYamlInfo parsedToscaYamlInfo = yamlTemplateParser.parseResourceInfoFromYAML("Definitions/my_vnf.yml", resourceYml, Collections.EMPTY_MAP, Collections.EMPTY_MAP, "myVnf", resourceResponse, ""); diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ToscaFunctionServiceTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ToscaFunctionServiceTest.java new file mode 100644 index 0000000000..89507d43dd --- /dev/null +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ToscaFunctionServiceTest.java @@ -0,0 +1,148 @@ +/* + * - + * ============LICENSE_START======================================================= + * Copyright (C) 2022 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.be.components.impl; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.Test; +import org.openecomp.sdc.be.datatypes.elements.ToscaConcatFunction; +import org.openecomp.sdc.be.datatypes.elements.ToscaGetFunctionDataDefinition; +import org.openecomp.sdc.be.datatypes.enums.PropertySource; +import org.openecomp.sdc.be.datatypes.tosca.ToscaGetFunctionType; +import org.openecomp.sdc.be.model.AttributeDefinition; +import org.openecomp.sdc.be.model.Component; +import org.openecomp.sdc.be.model.ComponentInstance; +import org.openecomp.sdc.be.model.ComponentInstanceAttribute; +import org.openecomp.sdc.be.model.ComponentInstanceProperty; +import org.openecomp.sdc.be.model.InputDefinition; +import org.openecomp.sdc.be.model.PropertyDefinition; +import org.openecomp.sdc.be.model.Service; + +class ToscaFunctionServiceTest { + + private final ToscaFunctionService toscaFunctionService = new ToscaFunctionService(); + + + @Test + void updateFunctionWithDataFromSelfComponentTest() { + //given a component with one property, one attribute, one instance. The instance have one property and one attribute. + final Component component = new Service(); + component.setUniqueId("componentId"); + component.setName("componentName"); + final var componentInput1 = new InputDefinition(); + componentInput1.setUniqueId("input1Id"); + componentInput1.setName("input1Name"); + component.setInputs(List.of(componentInput1)); + + final var componentAttribute1 = new AttributeDefinition(); + componentAttribute1.setUniqueId("componentAttribute1Id"); + componentAttribute1.setName("componentAttribute1Name"); + component.setAttributes(List.of(componentAttribute1)); + + final var componentProperty1 = new PropertyDefinition(); + componentProperty1.setUniqueId("componentProperty1Id"); + componentProperty1.setName("componentProperty1Name"); + component.setProperties(List.of(componentProperty1)); + + final var componentInstance1 = new ComponentInstance(); + componentInstance1.setName("componentInstance1Name"); + componentInstance1.setUniqueId("componentInstance1Id"); + component.setComponentInstances(List.of(componentInstance1)); + + final Map<String, List<ComponentInstanceProperty>> instancePropertyMap = new HashMap<>(); + final var componentInstanceProperty = new ComponentInstanceProperty(); + final String instancePropertyId1 = "instancePropertyId1"; + componentInstanceProperty.setUniqueId(instancePropertyId1); + final String instancePropertyName1 = "instancePropertyName1"; + componentInstanceProperty.setName(instancePropertyName1); + instancePropertyMap.put(componentInstance1.getUniqueId(), List.of(componentInstanceProperty)); + + final Map<String, List<AttributeDefinition>> instanceAttributeMap = new HashMap<>(); + final AttributeDefinition instanceAttribute1 = new ComponentInstanceAttribute(); + instanceAttribute1.setUniqueId("instanceAttribute1Id"); + instanceAttribute1.setName("instanceAttribute1Name"); + instanceAttributeMap.put(componentInstance1.getUniqueId(), List.of(instanceAttribute1)); + + final ToscaConcatFunction toscaConcatFunction = new ToscaConcatFunction(); + + final ToscaGetFunctionDataDefinition toscaGetInput = new ToscaGetFunctionDataDefinition(); + toscaGetInput.setFunctionType(ToscaGetFunctionType.GET_INPUT); + toscaGetInput.setPropertyName(componentInput1.getName()); + toscaGetInput.setPropertySource(PropertySource.SELF); + toscaConcatFunction.setParameters(List.of(toscaGetInput)); + + final ToscaGetFunctionDataDefinition toscaGetPropertyFromInstance = new ToscaGetFunctionDataDefinition(); + toscaGetPropertyFromInstance.setFunctionType(ToscaGetFunctionType.GET_PROPERTY); + toscaGetPropertyFromInstance.setPropertyName(instancePropertyName1); + toscaGetPropertyFromInstance.setSourceName(componentInstance1.getName()); + toscaGetPropertyFromInstance.setPropertySource(PropertySource.INSTANCE); + toscaGetPropertyFromInstance.setPropertyPathFromSource(List.of(instancePropertyName1)); + + final ToscaGetFunctionDataDefinition toscaGetPropertyFromSelf = new ToscaGetFunctionDataDefinition(); + toscaGetPropertyFromSelf.setFunctionType(ToscaGetFunctionType.GET_PROPERTY); + toscaGetPropertyFromSelf.setPropertyName(componentProperty1.getName()); + toscaGetPropertyFromSelf.setPropertySource(PropertySource.SELF); + toscaGetPropertyFromSelf.setPropertyPathFromSource(List.of(componentProperty1.getName())); + + final ToscaGetFunctionDataDefinition toscaGetAttributeFromInstance = new ToscaGetFunctionDataDefinition(); + toscaGetAttributeFromInstance.setFunctionType(ToscaGetFunctionType.GET_ATTRIBUTE); + toscaGetAttributeFromInstance.setPropertyName(instanceAttribute1.getUniqueId()); + toscaGetAttributeFromInstance.setSourceName(componentInstance1.getName()); + toscaGetAttributeFromInstance.setPropertySource(PropertySource.INSTANCE); + toscaGetAttributeFromInstance.setPropertyPathFromSource(List.of(instanceAttribute1.getName())); + + final ToscaGetFunctionDataDefinition toscaGetAttributeFromSelf = new ToscaGetFunctionDataDefinition(); + toscaGetAttributeFromSelf.setFunctionType(ToscaGetFunctionType.GET_ATTRIBUTE); + toscaGetAttributeFromSelf.setPropertyName(componentAttribute1.getName()); + toscaGetAttributeFromSelf.setPropertySource(PropertySource.SELF); + toscaGetAttributeFromSelf.setPropertyPathFromSource(List.of(componentAttribute1.getName())); + + toscaConcatFunction.setParameters( + List.of(toscaGetInput, toscaGetPropertyFromSelf, toscaGetPropertyFromInstance, toscaGetAttributeFromSelf, toscaGetAttributeFromInstance) + ); + + //when + toscaFunctionService.updateFunctionWithDataFromSelfComponent(toscaConcatFunction, component, instancePropertyMap, instanceAttributeMap); + + //then + assertEquals(componentInput1.getUniqueId(), toscaGetInput.getPropertyUniqueId()); + assertEquals(component.getUniqueId(), toscaGetInput.getSourceUniqueId()); + assertEquals(component.getName(), toscaGetInput.getSourceName()); + + assertEquals(instancePropertyId1, toscaGetPropertyFromInstance.getPropertyUniqueId()); + assertEquals(componentInstance1.getUniqueId(), toscaGetPropertyFromInstance.getSourceUniqueId()); + + assertEquals(instanceAttribute1.getUniqueId(), toscaGetAttributeFromInstance.getPropertyUniqueId()); + assertEquals(componentInstance1.getUniqueId(), toscaGetAttributeFromInstance.getSourceUniqueId()); + + assertEquals(componentAttribute1.getUniqueId(), toscaGetAttributeFromSelf.getPropertyUniqueId()); + assertEquals(component.getUniqueId(), toscaGetAttributeFromSelf.getSourceUniqueId()); + assertEquals(component.getName(), toscaGetAttributeFromSelf.getSourceName()); + + assertEquals(componentProperty1.getUniqueId(), toscaGetPropertyFromSelf.getPropertyUniqueId()); + assertEquals(component.getUniqueId(), toscaGetPropertyFromSelf.getSourceUniqueId()); + assertEquals(component.getName(), toscaGetPropertyFromSelf.getSourceName()); + } +}
\ No newline at end of file |