Support TOSCA functions in Node Filters
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / datamodel / UiComponentDataConverterTest.java
index f9bb2bd..a66b19d 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright © 2016-2019 European Support Limited
+ * Modifications © 2020 AT&T
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.openecomp.sdc.be.datamodel;
 
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.MapUtils;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.hibernate.validator.internal.util.CollectionHelper.asSet;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -33,35 +45,33 @@ import org.openecomp.sdc.be.components.utils.ServiceBuilder;
 import org.openecomp.sdc.be.datamodel.utils.UiComponentDataConverter;
 import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.GetPolicyValueDataDefinition;
+import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
+import org.openecomp.sdc.be.datatypes.elements.PropertyFilterConstraintDataDefinition;
+import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterDataDefinition;
+import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterPropertyDataDefinition;
+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.model.ComponentInstanceProperty;
 import org.openecomp.sdc.be.model.GroupDefinition;
 import org.openecomp.sdc.be.model.InputDefinition;
 import org.openecomp.sdc.be.model.InterfaceDefinition;
+import org.openecomp.sdc.be.model.OutputDefinition;
 import org.openecomp.sdc.be.model.PolicyDefinition;
 import org.openecomp.sdc.be.model.PropertyDefinition;
 import org.openecomp.sdc.be.model.Resource;
 import org.openecomp.sdc.be.model.Service;
+import org.openecomp.sdc.be.ui.model.UIConstraint;
 import org.openecomp.sdc.be.ui.model.UiComponentDataTransfer;
 import org.openecomp.sdc.be.ui.model.UiComponentMetadata;
 import org.openecomp.sdc.be.ui.model.UiServiceDataTransfer;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.hibernate.validator.internal.util.CollectionHelper.asSet;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
 public class UiComponentDataConverterTest {
 
     private PolicyDefinition policy1, policy2;
     private GroupDefinition group1, group2;
     private InputDefinition input1;
+    private OutputDefinition output;
     private PropertyDefinition propertyDef;
     private InterfaceDefinition interfaceDef;
 
@@ -72,6 +82,7 @@ public class UiComponentDataConverterTest {
 
     private static final String PROPERTY_UID = "propertyUid";
     private static final String NODE_FILTER_UID = "nodeFilterUid";
+    private static final String SUBSTITUTION_FILTER_UID = "substitutionFilterUid";
     private static final String COMPONENT_UID = "componentUid";
 
     @BeforeClass
@@ -149,6 +160,7 @@ public class UiComponentDataConverterTest {
     public void getUiDataTransferFromResourceByParams_All() {
         Resource resourceWithGroups = buildResourceWithGroups();
         Resource resourceWithInputs = buildResourceWithInputs();
+        Resource resourceWithOutputs = buildResourceWithOutputs();
 
         UiComponentDataTransfer componentDTO1 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("PROPERTIES"));
         UiComponentDataTransfer componentDTO2 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("properties"));
@@ -160,6 +172,7 @@ public class UiComponentDataConverterTest {
 
         UiComponentDataTransfer componentDTO8 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("inputs"));
         UiComponentDataTransfer componentDTO81 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithInputs, Collections.singletonList("inputs"));
+        UiComponentDataTransfer componentDTO82 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithOutputs, Collections.singletonList("outputs"));
 
         UiComponentDataTransfer componentDTO9 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("users"));
         UiComponentDataTransfer componentDTO10 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstances"));
@@ -202,7 +215,7 @@ public class UiComponentDataConverterTest {
     @Test
     public void getUiDataTransferFromServiceByParams_METADATA() {
         UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("metadata"));
-        assertThat(componentDTO.getMetadata().getNamingPolicy()).isEqualTo("");
+        assertThat(componentDTO.getMetadata().getNamingPolicy()).isEmpty();
     }
 
     @Test
@@ -283,7 +296,7 @@ public class UiComponentDataConverterTest {
         UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
                 Collections.singletonList("policies"));
 
-        assertThat(CollectionUtils.isNotEmpty(uiComponentDataTransfer.getPolicies()));
+        assertThat(uiComponentDataTransfer.getPolicies()).isNotEmpty();
     }
 
     @Test
@@ -292,7 +305,7 @@ public class UiComponentDataConverterTest {
         UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
                 Collections.singletonList("nodeFilter"));
 
-        assertThat(MapUtils.isEmpty(uiComponentDataTransfer.getNodeFilter()));
+        assertThat(uiComponentDataTransfer.getNodeFilter()).isNull();
     }
 
     @Test
@@ -309,7 +322,68 @@ public class UiComponentDataConverterTest {
         UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
                 Collections.singletonList("nodeFilter"));
 
-        assertThat(MapUtils.isNotEmpty(uiComponentDataTransfer.getNodeFilter()));
+        assertThat(uiComponentDataTransfer.getNodeFilterforNode()).isNotEmpty();
+    }
+
+    @Test
+    public void testGetSubstitutionFilterEmptyList() {
+        Resource resource = new ResourceBuilder().build();
+        UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
+                Collections.singletonList("substitutionFilter"));
+
+        assertThat(uiComponentDataTransfer.getSubstitutionFilters()).isNull();
+    }
+
+    @Test
+    public void testGetSubstitutionFilter() {
+        SubstitutionFilterDataDefinition substitutionFilter = new SubstitutionFilterDataDefinition();
+        substitutionFilter.setID(SUBSTITUTION_FILTER_UID);
+
+        final ListDataDefinition<SubstitutionFilterPropertyDataDefinition> expectedPropertyFilters = new ListDataDefinition<>();
+        var filter1 = new SubstitutionFilterPropertyDataDefinition();
+        filter1.setName("filter1");
+        var propertyFilter1 = new PropertyFilterConstraintDataDefinition();
+        propertyFilter1.setPropertyName("constraint1");
+        propertyFilter1.setOperator(ConstraintType.EQUAL);
+        propertyFilter1.setValueType(FilterValueType.STATIC);
+        propertyFilter1.setTargetType(PropertyFilterTargetType.PROPERTY);
+        propertyFilter1.setValue("testvalue1");
+        filter1.setConstraints(List.of(propertyFilter1));
+        expectedPropertyFilters.add(filter1);
+
+        var filter2 = new SubstitutionFilterPropertyDataDefinition();
+        filter2.setName("filter2");
+        var propertyFilter2 = new PropertyFilterConstraintDataDefinition();
+        propertyFilter2.setPropertyName("constraint2");
+        propertyFilter2.setOperator(ConstraintType.EQUAL);
+        propertyFilter2.setValueType(FilterValueType.STATIC);
+        propertyFilter2.setTargetType(PropertyFilterTargetType.PROPERTY);
+        propertyFilter2.setValue("testvalue2");
+        filter2.setConstraints(List.of(propertyFilter2));
+        expectedPropertyFilters.add(filter2);
+
+        substitutionFilter.setProperties(expectedPropertyFilters);
+
+        Resource resource = new ResourceBuilder().build();
+        resource.setSubstitutionFilter(substitutionFilter);
+
+        UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
+                Collections.singletonList("substitutionFilter"));
+        assertThat(uiComponentDataTransfer.getSubstitutionFilters()).isNotNull();
+
+        List<UIConstraint> propertyFilters = uiComponentDataTransfer.getSubstitutionFilters().getProperties();
+        assertFalse(propertyFilters.isEmpty());
+        assertEquals(propertyFilters.size(), substitutionFilter.getProperties().getListToscaDataDefinition().size());
+
+        verifyPropertyFilters(propertyFilters.get(0), "constraint1", "testvalue1", "static", "equal");
+        verifyPropertyFilters(propertyFilters.get(1), "constraint2", "testvalue2", "static", "equal");
+    }
+
+    private void verifyPropertyFilters(UIConstraint uiConstraint, String propertyName, String value, String sourceType, String operator){
+        assertEquals(propertyName, uiConstraint.getServicePropertyName());
+        assertEquals(value, uiConstraint.getValue());
+        assertEquals(sourceType, uiConstraint.getSourceType());
+        assertEquals(operator, uiConstraint.getConstraintOperator());
     }
 
     private Resource buildResourceWithGroups() {
@@ -325,22 +399,30 @@ public class UiComponentDataConverterTest {
                 .build();
     }
 
-    private Resource buildResourceWithParameter(String field) {
-        ResourceBuilder res =  new ResourceBuilder();
+    private Resource buildResourceWithOutputs() {
+        return new ResourceBuilder()
+                .addOutput(output)
+                .build();
+    }
+
+    private Resource buildResourceWithParameter(final String field) {
+        final ResourceBuilder res =  new ResourceBuilder();
         switch(field){
             case "inputs":
                 res.addInput(input1);
                 break;
+            case "outputs":
+                res.addOutput(output);
+                break;
             case "properties":
                 //res.addProperty(propertyDef);
                 break;
 
 
         }
-
-
         return new ResourceBuilder()
                 .addInput(input1)
+                .addOutput(output)
                 .build();
     }