From 6843db5fbca71b3a30fabb4dd97f818dc4d6b72d Mon Sep 17 00:00:00 2001 From: franciscovila Date: Wed, 14 Jun 2023 17:17:02 +0100 Subject: Node filter boolean values output as strings Issue-ID: SDC-4535 Signed-off-by: franciscovila Change-Id: Iaa5d1f8f5e389ac31bab81317cd8ef2591f345fd --- .../openecomp/sdc/be/tosca/ToscaExportHandler.java | 8 ++ .../sdc/be/tosca/ToscaExportHandlerTest.java | 125 +++++++++++++++++++++ 2 files changed, 133 insertions(+) (limited to 'catalog-be') diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/ToscaExportHandler.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/ToscaExportHandler.java index 4b8249823e..f85e435e1c 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/ToscaExportHandler.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/ToscaExportHandler.java @@ -1792,6 +1792,10 @@ public class ToscaExportHandler { ConstraintType.MAX_LENGTH.getType().equals(filterConstraint.getOperator().getType())) { filterConstraint.setValue(Integer.valueOf(String.valueOf(filterConstraint.getValue()))); } + if (doesTypeNeedConvertingToBoolean(filterConstraint.getOriginalType())) { + filterConstraint.setValue(ToscaType.getToscaType(filterConstraint.getOriginalType()).convert( + String.valueOf(filterConstraint.getValue()))); + } return Map.of(filterConstraint.getOperator().getType(), filterConstraint.getValue()); } @@ -1802,6 +1806,10 @@ public class ToscaExportHandler { return ToscaType.INTEGER.getType().equals(propertyType) || ToscaType.FLOAT.getType().equals(propertyType); } + private static boolean doesTypeNeedConvertingToBoolean(String propertyType) { + return ToscaType.BOOLEAN.getType().equals(propertyType); + } + private Map buildSubstitutionMappingPropertyMapping(final Component component) { if (component == null || CollectionUtils.isEmpty(component.getInputs())) { return Collections.emptyMap(); diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/ToscaExportHandlerTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/ToscaExportHandlerTest.java index 30585105b0..a7d5caf0aa 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/ToscaExportHandlerTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/ToscaExportHandlerTest.java @@ -62,10 +62,15 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder; import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus; +import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition; import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.PropertyFilterConstraintDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.PropertyFilterDataDefinition; import org.openecomp.sdc.be.datatypes.elements.RequirementDataDefinition; import org.openecomp.sdc.be.datatypes.elements.ToscaArtifactDataDefinition; import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; +import org.openecomp.sdc.be.datatypes.enums.ConstraintType; import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum; import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum; import org.openecomp.sdc.be.exception.ToscaExportException; @@ -775,6 +780,126 @@ class ToscaExportHandlerTest extends BaseConfDependent { } + @Test + void testConvertWithBooleanNodeFilterWhenComponentIsService() { + final Component component = getNewService(); + final List componentInstances = new ArrayList<>(); + final Map> componentInstancesProperties = new HashMap<>(); + final Map componentCache = new HashMap<>(); + final Map> componentInstancesInputs = new HashMap<>(); + final Map componentInstanceNodeFilters = new HashMap<>(); + CINodeFilterDataDefinition nodeFilter = new CINodeFilterDataDefinition(); + PropertyFilterDataDefinition prop = new PropertyFilterDataDefinition(); + prop.setName("nodeFilterPropBoolean"); + prop.setType("boolean"); + PropertyFilterConstraintDataDefinition constr = new PropertyFilterConstraintDataDefinition(); + constr.setPropertyName(prop.getName()); + constr.setOperator(ConstraintType.EQUAL); + constr.setValue("true"); + constr.setOriginalType("boolean"); + prop.setConstraints(List.of(constr)); + ListDataDefinition lstDataDef = new ListDataDefinition<>(); + lstDataDef.add(prop); + nodeFilter.setProperties(lstDataDef); + final List inputs = new ArrayList<>(); + final ComponentInstanceInput componentInstanceInput = new ComponentInstanceInput(); + componentInstanceInput.setUniqueId("uuid"); + inputs.add(componentInstanceInput); + componentInstancesInputs.put("uuid", inputs); + componentInstanceNodeFilters.put("uuid", nodeFilter); + final List resourceInstancesRelations = new ArrayList<>(); + final RequirementCapabilityRelDef reldef = new RequirementCapabilityRelDef(); + reldef.setFromNode("node"); + resourceInstancesRelations.add(reldef); + component.setComponentInstancesRelations(resourceInstancesRelations); + + final ComponentInstance instance = new ComponentInstance(); + instance.setNodeFilter(nodeFilter); + instance.setUniqueId("id"); + instance.setComponentUid("uid"); + instance.setOriginType(OriginTypeEnum.ServiceProxy); + final List groupInstances = new ArrayList<>(); + final GroupInstance groupInst = new GroupInstance(); + final List artifacts = new ArrayList<>(); + artifacts.add("artifact"); + groupInst.setArtifacts(artifacts); + groupInst.setType("type"); + groupInstances.add(groupInst); + instance.setGroupInstances(groupInstances); + + final List properties = new ArrayList<>(); + properties.add(new PropertyDefinition()); + instance.setProperties(properties); + + instance.setUniqueId("uuid"); + instance.setDescription("desc"); + instance.setSourceModelUid("sourceModelUid"); + + componentInstances.add(instance); + + component.setComponentInstances(componentInstances); + component.setNodeFilterComponents(componentInstanceNodeFilters); + component.setComponentInstancesInputs(componentInstancesInputs); + + component.setInvariantUUID("uuid"); + component.setUUID("uuid"); + component.setDescription("desc"); + component.setUniqueId("uid"); + + componentCache.put("uid", component); + + final List componentInstanceProperties = new ArrayList<>(); + componentInstanceProperties.add(new ComponentInstanceProperty()); + + componentInstancesProperties.put("uuid", componentInstanceProperties); + component.setComponentInstancesProperties(componentInstancesProperties); + + final Map> componentInstancesAttributes = new HashMap<>(); + final List componentInstanceAttributes = new ArrayList<>(); + final ComponentInstanceAttribute componentInstanceAttribute = new ComponentInstanceAttribute(); + componentInstanceAttribute.setDefaultValue("def value"); + componentInstanceAttributes.add(componentInstanceAttribute); + + componentInstancesAttributes.put("uuid", componentInstanceAttributes); + component.setComponentInstancesAttributes(componentInstancesAttributes); + + ComponentInstanceProperty cip = new ComponentInstanceProperty(); + cip.setInstanceUniqueId("id"); + + List list = new ArrayList<>(); + list.add(cip); + + componentInstancesProperties.put("id", list); + component.setComponentInstancesProperties(componentInstancesProperties); + + when(capabilityRequirementConverter.getOriginComponent(anyMap(), any(ComponentInstance.class))).thenReturn(Either.left(component)); + when(capabilityRequirementConverter + .convertComponentInstanceCapabilities(any(ComponentInstance.class), anyMap(), any(ToscaNodeTemplate.class))) + .thenReturn(Either.left(new ToscaNodeTemplate())); + when(interfaceLifecycleOperation.getAllInterfaceLifecycleTypes(any())).thenReturn(Either.left(Collections.emptyMap())); + when(applicationDataTypeCache.getAll(null)).thenReturn(Either.left(new HashMap<>())); + when(capabilityRequirementConverter.convertRequirements(anyMap(), any(Resource.class), any(ToscaNodeType.class))) + .thenReturn(Either.left(new ToscaNodeType())); + when(toscaOperationFacade.getToscaFullElement("uid")).thenReturn(Either.left(component)); + when(toscaOperationFacade.getToscaFullElement("sourceModelUid")).thenReturn(Either.left(component)); + when(toscaOperationFacade.getLatestByName("serviceProxy", null)).thenReturn(Either.left(new Resource())); + when(toscaOperationFacade.getToscaElement(any(String.class), any(ComponentParametersView.class))).thenReturn(Either.left(getNewResource())); + + final Map substitutionMappingMap = new HashMap<>(); + final String[] array = {"value1", "value2"}; + substitutionMappingMap.put("key", array); + when(capabilityRequirementConverter.convertSubstitutionMappingCapabilities(anyMap(), any(Component.class))) + .thenReturn(Either.left(substitutionMappingMap)); + + when(capabilityRequirementConverter + .convertSubstitutionMappingRequirements(any(Component.class), anyMap())) + .thenReturn(Either.left(Collections.emptyMap())); + + // default test + final Either toscaRepresentationToscaErrorEither = testSubject.exportComponent(component); + assertNotNull(toscaRepresentationToscaErrorEither); + } + @Test void testConvertNodeTemplatesWhenComponentIsResource() { final Resource component = getNewResource(); -- cgit 1.2.3-korg