From 92b18f188105d5ba4b2c469cdfaedc7d2953d593 Mon Sep 17 00:00:00 2001 From: "andre.schmid" Date: Wed, 10 Aug 2022 14:50:08 +0100 Subject: Support TOSCA functions in Node Filters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds support to use tosca functions as value in the node property filters and substitution filters Change-Id: Id242691cc9ddd233245b58f052b9f0e2c7bbd66b Issue-ID: SDC-4128 Signed-off-by: André Schmid --- ...nstraintDataDefinitionJsonDeserializerTest.java | 101 +++++++++++ .../be/datatypes/enums/FilterValueTypeTest.java | 75 ++++++++ ...tyFilterConstraintDataDefinitionHelperTest.java | 196 +++++++++++++++++++++ .../resources/nodeFilter/constraints/concat.yaml | 8 + .../legacy-get_attribute-from-instance.yaml | 6 + .../legacy-get_attribute-from-self.yaml | 6 + .../constraints/legacy-get_input-subProperty.yaml | 6 + .../nodeFilter/constraints/legacy-get_input.yaml | 4 + .../legacy-get_property-from-instance.yaml | 6 + .../constraints/legacy-get_property-from-self.yaml | 6 + .../nodeFilter/constraints/legacy-static.yaml | 5 + .../filter-constraint-get-input.json | 16 ++ .../filter-constraint-legacy.txt | 1 + .../filter-constraint-static.json | 8 + 14 files changed, 444 insertions(+) create mode 100644 common-be/src/test/java/org/openecomp/sdc/be/datatypes/elements/PropertyFilterConstraintDataDefinitionJsonDeserializerTest.java create mode 100644 common-be/src/test/java/org/openecomp/sdc/be/datatypes/enums/FilterValueTypeTest.java create mode 100644 common-be/src/test/java/org/openecomp/sdc/be/utils/PropertyFilterConstraintDataDefinitionHelperTest.java create mode 100644 common-be/src/test/resources/nodeFilter/constraints/concat.yaml create mode 100644 common-be/src/test/resources/nodeFilter/constraints/legacy-get_attribute-from-instance.yaml create mode 100644 common-be/src/test/resources/nodeFilter/constraints/legacy-get_attribute-from-self.yaml create mode 100644 common-be/src/test/resources/nodeFilter/constraints/legacy-get_input-subProperty.yaml create mode 100644 common-be/src/test/resources/nodeFilter/constraints/legacy-get_input.yaml create mode 100644 common-be/src/test/resources/nodeFilter/constraints/legacy-get_property-from-instance.yaml create mode 100644 common-be/src/test/resources/nodeFilter/constraints/legacy-get_property-from-self.yaml create mode 100644 common-be/src/test/resources/nodeFilter/constraints/legacy-static.yaml create mode 100644 common-be/src/test/resources/propertyFilterConstraintDataDefinitionDeserializer/filter-constraint-get-input.json create mode 100644 common-be/src/test/resources/propertyFilterConstraintDataDefinitionDeserializer/filter-constraint-legacy.txt create mode 100644 common-be/src/test/resources/propertyFilterConstraintDataDefinitionDeserializer/filter-constraint-static.json (limited to 'common-be/src/test') diff --git a/common-be/src/test/java/org/openecomp/sdc/be/datatypes/elements/PropertyFilterConstraintDataDefinitionJsonDeserializerTest.java b/common-be/src/test/java/org/openecomp/sdc/be/datatypes/elements/PropertyFilterConstraintDataDefinitionJsonDeserializerTest.java new file mode 100644 index 0000000000..d40c8f4862 --- /dev/null +++ b/common-be/src/test/java/org/openecomp/sdc/be/datatypes/elements/PropertyFilterConstraintDataDefinitionJsonDeserializerTest.java @@ -0,0 +1,101 @@ +/* + * - + * ============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.datatypes.elements; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import org.junit.jupiter.api.Test; +import org.openecomp.sdc.be.datatypes.enums.ConstraintType; +import org.openecomp.sdc.be.datatypes.enums.FilterValueType; +import org.openecomp.sdc.be.datatypes.enums.PropertyFilterTargetType; +import org.openecomp.sdc.be.datatypes.enums.PropertySource; +import org.openecomp.sdc.be.datatypes.tosca.ToscaGetFunctionType; + +class PropertyFilterConstraintDataDefinitionJsonDeserializerTest { + private static final Path TEST_RESOURCES_PATH = Path.of("src/test/resources/propertyFilterConstraintDataDefinitionDeserializer"); + + @Test + void testStaticPropertyFilter() throws IOException { + //given + final String propertyFilterAsString = Files.readString(TEST_RESOURCES_PATH.resolve("filter-constraint-static.json")); + //when + final PropertyFilterConstraintDataDefinition actualPropertyFilterConstraint = parseToscaFunction(propertyFilterAsString); + //then + assertEquals(FilterValueType.STATIC, actualPropertyFilterConstraint.getValueType()); + assertEquals(ConstraintType.EQUAL, actualPropertyFilterConstraint.getOperator()); + assertEquals(PropertyFilterTargetType.CAPABILITY, actualPropertyFilterConstraint.getTargetType()); + assertEquals("aCapability", actualPropertyFilterConstraint.getCapabilityName()); + assertEquals("aProperty", actualPropertyFilterConstraint.getPropertyName()); + assertEquals("aStaticValue", actualPropertyFilterConstraint.getValue()); + } + + @Test + void testGetInputToscaFunction() throws IOException { + //given + final String toscaGetInputFunction = Files.readString(TEST_RESOURCES_PATH.resolve("filter-constraint-get-input.json")); + //when + final PropertyFilterConstraintDataDefinition actualPropertyFilterConstraint = parseToscaFunction(toscaGetInputFunction); + //then + assertEquals(FilterValueType.GET_INPUT, actualPropertyFilterConstraint.getValueType()); + assertEquals(ConstraintType.GREATER_THAN, actualPropertyFilterConstraint.getOperator()); + assertEquals(PropertyFilterTargetType.PROPERTY, actualPropertyFilterConstraint.getTargetType()); + assertNull(actualPropertyFilterConstraint.getCapabilityName()); + assertEquals("aProperty", actualPropertyFilterConstraint.getPropertyName()); + assertTrue(actualPropertyFilterConstraint.getValue() instanceof ToscaGetFunctionDataDefinition); + final ToscaGetFunctionDataDefinition toscaGetFunction = (ToscaGetFunctionDataDefinition) actualPropertyFilterConstraint.getValue(); + assertEquals(ToscaFunctionType.GET_INPUT, toscaGetFunction.getType()); + assertEquals(ToscaGetFunctionType.GET_INPUT, toscaGetFunction.getFunctionType()); + assertEquals("aPropertyId", toscaGetFunction.getPropertyUniqueId()); + assertEquals("aProperty", toscaGetFunction.getPropertyName()); + assertEquals(PropertySource.SELF, toscaGetFunction.getPropertySource()); + assertEquals("aServiceId", toscaGetFunction.getSourceUniqueId()); + assertEquals("aService", toscaGetFunction.getSourceName()); + assertEquals(List.of("input", "subProperty"), toscaGetFunction.getPropertyPathFromSource()); + } + + @Test + void testLegacyPropertyFilter() throws IOException { + //given + final String legacyPropertyFilter = Files.readString(TEST_RESOURCES_PATH.resolve("filter-constraint-legacy.txt")); + //when + final PropertyFilterConstraintDataDefinition actualPropertyFilterConstraint = parseToscaFunction(legacyPropertyFilter); + //then + assertEquals(FilterValueType.STATIC, actualPropertyFilterConstraint.getValueType()); + assertEquals(ConstraintType.EQUAL, actualPropertyFilterConstraint.getOperator()); + assertEquals(PropertyFilterTargetType.PROPERTY, actualPropertyFilterConstraint.getTargetType()); + assertNull(actualPropertyFilterConstraint.getCapabilityName()); + assertEquals("propertyName", actualPropertyFilterConstraint.getPropertyName()); + assertEquals("aValue", actualPropertyFilterConstraint.getValue()); + } + + private PropertyFilterConstraintDataDefinition parseToscaFunction(final String propertyFilterConstraintAsJson) throws JsonProcessingException { + return new ObjectMapper().readValue(propertyFilterConstraintAsJson, PropertyFilterConstraintDataDefinition.class); + } +} \ No newline at end of file diff --git a/common-be/src/test/java/org/openecomp/sdc/be/datatypes/enums/FilterValueTypeTest.java b/common-be/src/test/java/org/openecomp/sdc/be/datatypes/enums/FilterValueTypeTest.java new file mode 100644 index 0000000000..73df545468 --- /dev/null +++ b/common-be/src/test/java/org/openecomp/sdc/be/datatypes/enums/FilterValueTypeTest.java @@ -0,0 +1,75 @@ +/* + * - + * ============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.datatypes.enums; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.Arrays; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +class FilterValueTypeTest { + + @Test + void findByEmptyNameTest() { + assertTrue(FilterValueType.findByName(null).isEmpty()); + assertTrue(FilterValueType.findByName("").isEmpty()); + } + + @Test + void findByNameNotFoundTest() { + assertTrue(FilterValueType.findByName("thisNameDoesNotExist").isEmpty()); + } + + @ParameterizedTest(name = "{index}: {0} should be {1}") + @MethodSource("getValueTypeForFindByName") + void test(final String nameToFind, final FilterValueType filterValueType) { + final Optional actualFilterValueType = FilterValueType.findByName(nameToFind); + assertTrue(actualFilterValueType.isPresent()); + assertEquals(actualFilterValueType.get(), filterValueType); + } + + private static Stream getValueTypeForFindByName() { + final Stream allFilterValueTypeNameArguments = Arrays.stream(FilterValueType.values()) + .map(filterValueType -> Arguments.of(filterValueType.getName(), filterValueType)); + final Stream allFilterValueTypeNameIgnoreCaseArguments = Arrays.stream(FilterValueType.values()) + .map(filterValueType -> Arguments.of(filterValueType.getName().toUpperCase(), filterValueType)); + + final Stream legacyArguments = Stream.of( + Arguments.of(FilterValueType.GET_INPUT.getLegacyName(), FilterValueType.GET_INPUT), + Arguments.of(FilterValueType.GET_INPUT.getLegacyName().toUpperCase(), FilterValueType.GET_INPUT), + Arguments.of(FilterValueType.GET_PROPERTY.getLegacyName(), FilterValueType.GET_PROPERTY), + Arguments.of(FilterValueType.GET_PROPERTY.getLegacyName().toUpperCase(), FilterValueType.GET_PROPERTY) + ); + + return Stream.of(allFilterValueTypeNameIgnoreCaseArguments, allFilterValueTypeNameArguments, legacyArguments) + .reduce(Stream::concat) + .orElseGet(Stream::empty); + } + +} \ No newline at end of file diff --git a/common-be/src/test/java/org/openecomp/sdc/be/utils/PropertyFilterConstraintDataDefinitionHelperTest.java b/common-be/src/test/java/org/openecomp/sdc/be/utils/PropertyFilterConstraintDataDefinitionHelperTest.java new file mode 100644 index 0000000000..86548fa1d5 --- /dev/null +++ b/common-be/src/test/java/org/openecomp/sdc/be/utils/PropertyFilterConstraintDataDefinitionHelperTest.java @@ -0,0 +1,196 @@ +/* + * - + * ============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.utils; + +import static org.junit.jupiter.api.Assertions.*; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +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.PropertyFilterConstraintDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.ToscaConcatFunction; +import org.openecomp.sdc.be.datatypes.elements.ToscaFunctionType; +import org.openecomp.sdc.be.datatypes.elements.ToscaGetFunctionDataDefinition; +import org.openecomp.sdc.be.datatypes.enums.ConstraintType; +import org.openecomp.sdc.be.datatypes.enums.FilterValueType; +import org.openecomp.sdc.be.datatypes.enums.PropertySource; +import org.openecomp.sdc.be.datatypes.tosca.ToscaGetFunctionType; + +class PropertyFilterConstraintDataDefinitionHelperTest { + + private static final Path RESOURCE_PATH = Path.of("src", "test", "resources", "nodeFilter", "constraints"); + + @Test + void convertLegacyConstraintGetInputTest() throws IOException { + final var propertyFilterConstraint = + PropertyFilterConstraintDataDefinitionHelper.convertLegacyConstraint(readConstraintFile("legacy-get_input.yaml")); + assertPropertyFilterConstraint(propertyFilterConstraint, "flavour_id", null, ConstraintType.GREATER_OR_EQUAL, FilterValueType.GET_INPUT); + assertTrue(propertyFilterConstraint.getValue() instanceof ToscaGetFunctionDataDefinition); + final var toscaGetFunction = (ToscaGetFunctionDataDefinition) propertyFilterConstraint.getValue(); + assertToscaGetFunction(toscaGetFunction, ToscaFunctionType.GET_INPUT, ToscaGetFunctionType.GET_INPUT, PropertySource.SELF, + List.of("inputName"), "inputName", null); + } + + @Test + void convertLegacyConstraintGetInputSubPathTest() throws IOException { + final PropertyFilterConstraintDataDefinition propertyFilterConstraint = + PropertyFilterConstraintDataDefinitionHelper.convertLegacyConstraint(readConstraintFile("legacy-get_input-subProperty.yaml")); + assertPropertyFilterConstraint(propertyFilterConstraint, "flavour_id", null, ConstraintType.EQUAL, FilterValueType.GET_INPUT); + assertTrue(propertyFilterConstraint.getValue() instanceof ToscaGetFunctionDataDefinition); + final var toscaGetFunction = (ToscaGetFunctionDataDefinition) propertyFilterConstraint.getValue(); + assertToscaGetFunction(toscaGetFunction, ToscaFunctionType.GET_INPUT, ToscaGetFunctionType.GET_INPUT, PropertySource.SELF, + List.of("inputName", "inputSubProperty", "inputSubSubProperty"), "inputSubSubProperty", null); + } + + @Test + void convertLegacyConstraintGetPropertyFromInstanceTest() throws IOException { + final PropertyFilterConstraintDataDefinition propertyFilterConstraint = + PropertyFilterConstraintDataDefinitionHelper.convertLegacyConstraint(readConstraintFile("legacy-get_property-from-instance.yaml")); + assertPropertyFilterConstraint(propertyFilterConstraint, "flavour_id", null, ConstraintType.EQUAL, FilterValueType.GET_PROPERTY); + assertTrue(propertyFilterConstraint.getValue() instanceof ToscaGetFunctionDataDefinition); + final var toscaGetFunction = (ToscaGetFunctionDataDefinition) propertyFilterConstraint.getValue(); + assertToscaGetFunction(toscaGetFunction, ToscaFunctionType.GET_PROPERTY, ToscaGetFunctionType.GET_PROPERTY, PropertySource.INSTANCE, + List.of("property", "subProperty"), "subProperty", "Instance Name"); + } + + @Test + void convertLegacyConstraintGetAttributeFromInstanceTest() throws IOException { + final PropertyFilterConstraintDataDefinition propertyFilterConstraint = + PropertyFilterConstraintDataDefinitionHelper.convertLegacyConstraint(readConstraintFile("legacy-get_attribute-from-instance.yaml")); + assertPropertyFilterConstraint(propertyFilterConstraint, "flavour_id", null, ConstraintType.EQUAL, FilterValueType.GET_ATTRIBUTE); + assertTrue(propertyFilterConstraint.getValue() instanceof ToscaGetFunctionDataDefinition); + final var toscaGetFunction = (ToscaGetFunctionDataDefinition) propertyFilterConstraint.getValue(); + assertToscaGetFunction(toscaGetFunction, ToscaFunctionType.GET_ATTRIBUTE, ToscaGetFunctionType.GET_ATTRIBUTE, PropertySource.INSTANCE, + List.of("property", "subProperty"), "subProperty", "Instance Name"); + } + + + @Test + void convertLegacyConstraintGetPropertyFromSelfTest() throws IOException { + final PropertyFilterConstraintDataDefinition propertyFilterConstraint = + PropertyFilterConstraintDataDefinitionHelper.convertLegacyConstraint(readConstraintFile("legacy-get_property-from-self.yaml")); + assertPropertyFilterConstraint(propertyFilterConstraint, "flavour_id", null, ConstraintType.EQUAL, FilterValueType.GET_PROPERTY); + assertTrue(propertyFilterConstraint.getValue() instanceof ToscaGetFunctionDataDefinition); + final var toscaGetFunction = (ToscaGetFunctionDataDefinition) propertyFilterConstraint.getValue(); + assertToscaGetFunction(toscaGetFunction, ToscaFunctionType.GET_PROPERTY, ToscaGetFunctionType.GET_PROPERTY, PropertySource.SELF, + List.of("property", "subProperty"), "subProperty", null); + } + + @Test + void convertLegacyConstraintGetAttributeFromSelfTest() throws IOException { + final PropertyFilterConstraintDataDefinition propertyFilterConstraint = + PropertyFilterConstraintDataDefinitionHelper.convertLegacyConstraint(readConstraintFile("legacy-get_attribute-from-self.yaml")); + assertPropertyFilterConstraint(propertyFilterConstraint, "flavour_id", null, ConstraintType.EQUAL, FilterValueType.GET_ATTRIBUTE); + assertTrue(propertyFilterConstraint.getValue() instanceof ToscaGetFunctionDataDefinition); + final var toscaGetFunction = (ToscaGetFunctionDataDefinition) propertyFilterConstraint.getValue(); + assertToscaGetFunction(toscaGetFunction, ToscaFunctionType.GET_ATTRIBUTE, ToscaGetFunctionType.GET_ATTRIBUTE, PropertySource.SELF, + List.of("property", "subProperty"), "subProperty", null); + } + + @Test + void convertLegacyConstraintStaticTest() throws IOException { + final PropertyFilterConstraintDataDefinition propertyFilterConstraint = + PropertyFilterConstraintDataDefinitionHelper.convertLegacyConstraint(readConstraintFile("legacy-static.yaml")); + assertPropertyFilterConstraint(propertyFilterConstraint, "vnf_profile", null, ConstraintType.EQUAL, FilterValueType.STATIC); + assertTrue(propertyFilterConstraint.getValue() instanceof Map); + final Map value = (Map) propertyFilterConstraint.getValue(); + assertEquals("1", value.get("instantiation_level")); + assertEquals(1, value.get("max_number_of_instances")); + assertEquals(1, value.get("min_number_of_instances")); + } + + @Test + void convertLegacyConstraintConcatTest() throws IOException { + final PropertyFilterConstraintDataDefinition propertyFilterConstraint = + PropertyFilterConstraintDataDefinitionHelper.convertLegacyConstraint(readConstraintFile("concat.yaml")); + assertPropertyFilterConstraint(propertyFilterConstraint, "descriptor_id", null, ConstraintType.EQUAL, FilterValueType.CONCAT); + assertTrue(propertyFilterConstraint.getValue() instanceof ToscaConcatFunction); + final ToscaConcatFunction toscaConcatFunction = (ToscaConcatFunction) propertyFilterConstraint.getValue(); + assertEquals(3, toscaConcatFunction.getParameters().size()); + assertEquals(ToscaFunctionType.STRING, toscaConcatFunction.getParameters().get(0).getType()); + assertEquals("aString", toscaConcatFunction.getParameters().get(0).getValue()); + assertEquals(ToscaFunctionType.GET_INPUT, toscaConcatFunction.getParameters().get(1).getType()); + assertEquals(ToscaFunctionType.STRING, toscaConcatFunction.getParameters().get(2).getType()); + assertEquals("anotherString", toscaConcatFunction.getParameters().get(2).getValue()); + } + + private static void assertPropertyFilterConstraint(final PropertyFilterConstraintDataDefinition propertyFilterConstraint, + final String propertyName, final String capabilityName, final ConstraintType constraintType, + final FilterValueType filterValueType) { + assertEquals(propertyName, propertyFilterConstraint.getPropertyName()); + assertEquals(capabilityName, propertyFilterConstraint.getCapabilityName()); + assertEquals(constraintType, propertyFilterConstraint.getOperator()); + assertEquals(filterValueType, propertyFilterConstraint.getValueType()); + } + + private void assertToscaGetFunction(final ToscaGetFunctionDataDefinition actualToscaGetFunction, + final ToscaFunctionType expectedToscaFunctionType, final ToscaGetFunctionType expectedToscaFunctionGetType, + final PropertySource expectedPropertySource, final List expectedPropertyPathFromSource, + final String expectedPropertyName, final String expectedSourceName) { + assertEquals(expectedToscaFunctionType, actualToscaGetFunction.getType()); + assertEquals(expectedToscaFunctionGetType, actualToscaGetFunction.getFunctionType()); + assertEquals(expectedPropertySource, actualToscaGetFunction.getPropertySource()); + assertEquals(expectedPropertyPathFromSource, actualToscaGetFunction.getPropertyPathFromSource()); + assertEquals(expectedPropertyName, actualToscaGetFunction.getPropertyName()); + assertEquals(expectedSourceName, actualToscaGetFunction.getSourceName()); + assertNull(actualToscaGetFunction.getPropertyUniqueId()); + assertNull(actualToscaGetFunction.getSourceUniqueId()); + } + + @Test + void convertFromToscaFunctionTypeTest() { + Optional filterValueType = + PropertyFilterConstraintDataDefinitionHelper.convertFromToscaFunctionType(ToscaFunctionType.GET_PROPERTY); + assertTrue(filterValueType.isPresent()); + assertEquals(FilterValueType.GET_PROPERTY, filterValueType.get()); + + filterValueType = + PropertyFilterConstraintDataDefinitionHelper.convertFromToscaFunctionType(ToscaFunctionType.GET_INPUT); + assertTrue(filterValueType.isPresent()); + assertEquals(FilterValueType.GET_INPUT, filterValueType.get()); + + filterValueType = + PropertyFilterConstraintDataDefinitionHelper.convertFromToscaFunctionType(ToscaFunctionType.GET_ATTRIBUTE); + assertTrue(filterValueType.isPresent()); + assertEquals(FilterValueType.GET_ATTRIBUTE, filterValueType.get()); + + filterValueType = + PropertyFilterConstraintDataDefinitionHelper.convertFromToscaFunctionType(ToscaFunctionType.YAML); + assertTrue(filterValueType.isPresent()); + assertEquals(FilterValueType.YAML, filterValueType.get()); + + filterValueType = + PropertyFilterConstraintDataDefinitionHelper.convertFromToscaFunctionType(ToscaFunctionType.CONCAT); + assertTrue(filterValueType.isPresent()); + assertEquals(FilterValueType.CONCAT, filterValueType.get()); + + assertTrue(PropertyFilterConstraintDataDefinitionHelper.convertFromToscaFunctionType(ToscaFunctionType.STRING).isEmpty()); + } + + private String readConstraintFile(final String fileName) throws IOException { + return Files.readString(RESOURCE_PATH.resolve(fileName)); + } +} \ No newline at end of file diff --git a/common-be/src/test/resources/nodeFilter/constraints/concat.yaml b/common-be/src/test/resources/nodeFilter/constraints/concat.yaml new file mode 100644 index 0000000000..28f6aadec7 --- /dev/null +++ b/common-be/src/test/resources/nodeFilter/constraints/concat.yaml @@ -0,0 +1,8 @@ +descriptor_id: + equal: + concat: + - aString + - get_input: + - vnfProfileInput + - instantiation_level + - anotherString \ No newline at end of file diff --git a/common-be/src/test/resources/nodeFilter/constraints/legacy-get_attribute-from-instance.yaml b/common-be/src/test/resources/nodeFilter/constraints/legacy-get_attribute-from-instance.yaml new file mode 100644 index 0000000000..039c4aeacc --- /dev/null +++ b/common-be/src/test/resources/nodeFilter/constraints/legacy-get_attribute-from-instance.yaml @@ -0,0 +1,6 @@ +flavour_id: + equal: + get_attribute: + - Instance Name + - property + - subProperty \ No newline at end of file diff --git a/common-be/src/test/resources/nodeFilter/constraints/legacy-get_attribute-from-self.yaml b/common-be/src/test/resources/nodeFilter/constraints/legacy-get_attribute-from-self.yaml new file mode 100644 index 0000000000..3afd65d19f --- /dev/null +++ b/common-be/src/test/resources/nodeFilter/constraints/legacy-get_attribute-from-self.yaml @@ -0,0 +1,6 @@ +flavour_id: + equal: + get_attribute: + - SELF + - property + - subProperty \ No newline at end of file diff --git a/common-be/src/test/resources/nodeFilter/constraints/legacy-get_input-subProperty.yaml b/common-be/src/test/resources/nodeFilter/constraints/legacy-get_input-subProperty.yaml new file mode 100644 index 0000000000..ba9bc3ac74 --- /dev/null +++ b/common-be/src/test/resources/nodeFilter/constraints/legacy-get_input-subProperty.yaml @@ -0,0 +1,6 @@ +flavour_id: + equal: + get_input: + - inputName + - inputSubProperty + - inputSubSubProperty \ No newline at end of file diff --git a/common-be/src/test/resources/nodeFilter/constraints/legacy-get_input.yaml b/common-be/src/test/resources/nodeFilter/constraints/legacy-get_input.yaml new file mode 100644 index 0000000000..4b17734e86 --- /dev/null +++ b/common-be/src/test/resources/nodeFilter/constraints/legacy-get_input.yaml @@ -0,0 +1,4 @@ +flavour_id: + greater_or_equal: + get_input: + - inputName \ No newline at end of file diff --git a/common-be/src/test/resources/nodeFilter/constraints/legacy-get_property-from-instance.yaml b/common-be/src/test/resources/nodeFilter/constraints/legacy-get_property-from-instance.yaml new file mode 100644 index 0000000000..67772d1666 --- /dev/null +++ b/common-be/src/test/resources/nodeFilter/constraints/legacy-get_property-from-instance.yaml @@ -0,0 +1,6 @@ +flavour_id: + equal: + get_property: + - Instance Name + - property + - subProperty \ No newline at end of file diff --git a/common-be/src/test/resources/nodeFilter/constraints/legacy-get_property-from-self.yaml b/common-be/src/test/resources/nodeFilter/constraints/legacy-get_property-from-self.yaml new file mode 100644 index 0000000000..89c78d1a3b --- /dev/null +++ b/common-be/src/test/resources/nodeFilter/constraints/legacy-get_property-from-self.yaml @@ -0,0 +1,6 @@ +flavour_id: + equal: + get_property: + - SELF + - property + - subProperty \ No newline at end of file diff --git a/common-be/src/test/resources/nodeFilter/constraints/legacy-static.yaml b/common-be/src/test/resources/nodeFilter/constraints/legacy-static.yaml new file mode 100644 index 0000000000..783316fff7 --- /dev/null +++ b/common-be/src/test/resources/nodeFilter/constraints/legacy-static.yaml @@ -0,0 +1,5 @@ +vnf_profile: + equal: + instantiation_level: '1' + max_number_of_instances: 1 + min_number_of_instances: 1 \ No newline at end of file diff --git a/common-be/src/test/resources/propertyFilterConstraintDataDefinitionDeserializer/filter-constraint-get-input.json b/common-be/src/test/resources/propertyFilterConstraintDataDefinitionDeserializer/filter-constraint-get-input.json new file mode 100644 index 0000000000..3ceee51804 --- /dev/null +++ b/common-be/src/test/resources/propertyFilterConstraintDataDefinitionDeserializer/filter-constraint-get-input.json @@ -0,0 +1,16 @@ +{ + "propertyName": "aProperty", + "targetType": "PROPERTY", + "operator": "GREATER_THAN", + "valueType": "GET_INPUT", + "value": { + "type": "GET_INPUT", + "functionType": "GET_INPUT", + "propertyName": "aProperty", + "propertyUniqueId": "aPropertyId", + "propertySource": "SELF", + "sourceName": "aService", + "sourceUniqueId": "aServiceId", + "propertyPathFromSource": ["input", "subProperty"] + } +} \ No newline at end of file diff --git a/common-be/src/test/resources/propertyFilterConstraintDataDefinitionDeserializer/filter-constraint-legacy.txt b/common-be/src/test/resources/propertyFilterConstraintDataDefinitionDeserializer/filter-constraint-legacy.txt new file mode 100644 index 0000000000..925c878d5f --- /dev/null +++ b/common-be/src/test/resources/propertyFilterConstraintDataDefinitionDeserializer/filter-constraint-legacy.txt @@ -0,0 +1 @@ +"{ \"propertyName\": { \"equal\": \"aValue\" } }" \ No newline at end of file diff --git a/common-be/src/test/resources/propertyFilterConstraintDataDefinitionDeserializer/filter-constraint-static.json b/common-be/src/test/resources/propertyFilterConstraintDataDefinitionDeserializer/filter-constraint-static.json new file mode 100644 index 0000000000..4faee8ab1a --- /dev/null +++ b/common-be/src/test/resources/propertyFilterConstraintDataDefinitionDeserializer/filter-constraint-static.json @@ -0,0 +1,8 @@ +{ + "propertyName": "aProperty", + "capabilityName": "aCapability", + "targetType": "CAPABILITY", + "operator": "EQUAL", + "valueType": "STATIC", + "value": "aStaticValue" +} \ No newline at end of file -- cgit 1.2.3-korg