Policies import when import VSP
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / impl / utils / YamlTemplateParsingHandlerTest.java
index b63e6ff..1d7a1c5 100644 (file)
@@ -35,6 +35,7 @@ import org.openecomp.sdc.be.components.csar.CsarInfo;
 import org.openecomp.sdc.be.components.csar.YamlTemplateParsingHandler;
 import org.openecomp.sdc.be.components.impl.AnnotationBusinessLogic;
 import org.openecomp.sdc.be.components.impl.GroupTypeBusinessLogic;
+import org.openecomp.sdc.be.components.impl.PolicyTypeBusinessLogic;
 import org.openecomp.sdc.be.components.validation.AnnotationValidator;
 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
 import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
@@ -43,6 +44,8 @@ import org.openecomp.sdc.be.model.ComponentInstanceProperty;
 import org.openecomp.sdc.be.model.GroupProperty;
 import org.openecomp.sdc.be.model.GroupTypeDefinition;
 import org.openecomp.sdc.be.model.ParsedToscaYamlInfo;
+import org.openecomp.sdc.be.model.PolicyDefinition;
+import org.openecomp.sdc.be.model.PolicyTypeDefinition;
 import org.openecomp.sdc.be.model.UploadArtifactInfo;
 import org.openecomp.sdc.be.model.UploadComponentInstanceInfo;
 import org.openecomp.sdc.be.model.User;
@@ -58,6 +61,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
+import org.springframework.test.util.ReflectionTestUtils;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertNotNull;
@@ -78,6 +82,8 @@ public class YamlTemplateParsingHandlerTest {
     private JanusGraphDao janusGraphDao;
     @Mock
     private User user;
+    @Mock
+    private PolicyTypeBusinessLogic policyTypeBusinessLogic;
 
     private YamlTemplateParsingHandler handler;
 
@@ -87,9 +93,13 @@ public class YamlTemplateParsingHandlerTest {
     private final static String VFC_GROUP_TYPE = "org.openecomp.groups.VfcInstanceGroup";
     private final static String HEAT_GROUP_TYPE = "org.openecomp.groups.heat.HeatStack";
     private final static String ROOT_GROUP_TYPE = "tosca.groups.Root";
+    private final static String OPENECOMP_ANTILOCATE_POLICY_TYPE = "org.openecomp.policies.placement.Antilocate";
+    private final static String ROOT_POLICIES_TYPE = "tosca.policies.Root";
     private final static GroupTypeDefinition VfcInstanceGroupType = buildVfcInstanceGroupType();
     private final static GroupTypeDefinition heatGroupType = buildHeatStackGroupType();
     private final static GroupTypeDefinition rootGroupType = buildRootGroupType();
+    private static final PolicyTypeDefinition OPENECOMP_POLICY_TYPE = buildOpenecompPolicyType();
+    private final static String OPENECOMP_POLICY_NAME = "vepdg_server_group_policy";
     private final static String CAPABILITY_TYPE = "org.openecomp.capabilities.VLANAssignment";
     private final static String CAPABILITY_NAME = "vlan_assignment";
     private static final String CSAR_FILE_PATH = "csars/with_groups.csar";
@@ -122,8 +132,10 @@ public class YamlTemplateParsingHandlerTest {
 
         AnnotationBusinessLogic annotationBusinessLogic = new AnnotationBusinessLogic(annotationTypeOperations,
                 annotationValidator);
-        handler = new YamlTemplateParsingHandler(janusGraphDao, groupTypeBusinessLogic, annotationBusinessLogic);
+        handler = new YamlTemplateParsingHandler(janusGraphDao, groupTypeBusinessLogic, annotationBusinessLogic, policyTypeBusinessLogic);
+        ReflectionTestUtils.setField(handler, "policyTypeBusinessLogic", policyTypeBusinessLogic);
         stubGetGroupType();
+        stubGetPolicyType();
     }
 
     @Test
@@ -148,6 +160,79 @@ public class YamlTemplateParsingHandlerTest {
         validateParsedYamlWithCapability(parsedYaml);
     }
 
+    @Test
+    public void testSetArtifacts() {
+        UploadComponentInstanceInfo nodeTemplateInfo = new UploadComponentInstanceInfo();
+        Map<String, Object> nodeTemplateJsonMap = new HashMap<>();
+        Map<String, String> nodeMap = new HashMap<>();
+        nodeMap.put("name","test_name");
+        nodeMap.put("type","test_type");
+        nodeTemplateJsonMap.put(ARTIFACTS.getElementName(), nodeMap);
+        Deencapsulation.invoke(testSubject, "setArtifacts", nodeTemplateInfo, nodeTemplateJsonMap);
+        assertNotNull(nodeTemplateInfo.getArtifacts());
+    }
+
+    @Test
+    public void testCreateArtifactsModuleFromYaml() {
+        Map<String, Map<String, Map<String, String>>> nodeTemplateJsonMap = new HashMap<>();
+        Map<String, Map<String,String>> map0 = new HashMap<>();
+        Map<String, String> map1 = new HashMap<>();
+        map1.put("file", "test_file");
+        map1.put("type", "test_type");
+        map0.put("test_art", map1);
+        nodeTemplateJsonMap.put(ARTIFACTS.getElementName(), map0);
+        Map<String, Map<String, UploadArtifactInfo>> result;
+        result = Deencapsulation.invoke(testSubject, "createArtifactsModuleFromYaml", nodeTemplateJsonMap);
+        Assert.assertTrue(MapUtils.isNotEmpty(result));
+        Assert.assertTrue(MapUtils.isNotEmpty(result.get(ARTIFACTS.getElementName())));
+        Assert.assertEquals("test_file", result.get(ARTIFACTS.getElementName()).get("test_art").getFile());
+        Assert.assertEquals("test_type", result.get(ARTIFACTS.getElementName()).get("test_art").getType());
+    }
+
+    @Test
+    public void testAddModuleNodeTemplateArtifacts() {
+        Map<String, Map<String, UploadArtifactInfo>> result = new HashMap<>();
+        Map<String, String> map1 = new HashMap<>();
+        map1.put("file", "test_file");
+        map1.put("type", "test_type");
+        Deencapsulation.invoke(testSubject, "addModuleNodeTemplateArtifacts", result, map1, "test_art");
+        Assert.assertTrue(MapUtils.isNotEmpty(result));
+        Assert.assertTrue(MapUtils.isNotEmpty(result.get(ARTIFACTS.getElementName())));
+        Assert.assertEquals("test_file", result.get(ARTIFACTS.getElementName()).get("test_art").getFile());
+        Assert.assertEquals("test_type", result.get(ARTIFACTS.getElementName()).get("test_art").getType());
+    }
+
+    @Test
+    public void testBuildModuleNodeTemplateArtifact() {
+        Map<String, String> map1 = new HashMap<>();
+        map1.put("file", "test_file");
+        map1.put("type", "test_type");
+        UploadArtifactInfo result;
+        result = Deencapsulation.invoke(testSubject, "buildModuleNodeTemplateArtifact", map1);
+        assertNotNull(result);
+        Assert.assertEquals("test_file", result.getFile());
+        Assert.assertEquals("test_type", result.getType());
+    }
+
+    @Test
+    public void testFillArtifact() {
+        Map<String, String> map1 = new HashMap<>();
+        map1.put("file", "test_file");
+        map1.put("type", "test_type");
+        UploadArtifactInfo result = new UploadArtifactInfo();
+        Deencapsulation.invoke(testSubject, "fillArtifact", result, map1);
+        assertNotNull(result);
+        Assert.assertEquals("test_file", result.getFile());
+        Assert.assertEquals("test_type", result.getType());
+    }
+
+    @Test
+    public void parseResourceWithPoliciesDefined() {
+        ParsedToscaYamlInfo parsedYaml = handler.parseResourceInfoFromYAML(FILE_NAME, resourceYml, new HashMap<>(),
+                new HashMap<>(), "");
+        validateParsedYamlWithPolicies(parsedYaml);
+    }
+
     private void validateParsedYaml(ParsedToscaYamlInfo parsedYaml, String group, List<String> expectedProp) {
         assertThat(parsedYaml).isNotNull();
         assertThat(parsedYaml.getGroups()).isNotNull().containsKey(group);
@@ -155,15 +240,15 @@ public class YamlTemplateParsingHandlerTest {
 
         assertThat(parsedYaml.getGroups().get(group).getProperties()).isNotNull();
         assertThat(parsedYaml.getGroups().get(group).getProperties()
-                .stream()
-                .map(PropertyDataDefinition::getName)
-                .collect(Collectors.toList()))
+                           .stream()
+                           .map(PropertyDataDefinition::getName)
+                           .collect(Collectors.toList()))
                 .containsAll(expectedProp);
 
         assertThat(parsedYaml.getGroups().get(group).getMembers()).isNotNull();
     }
 
-       private void validateParsedYamlWithCapability(ParsedToscaYamlInfo parsedYaml) {
+    private void validateParsedYamlWithCapability(ParsedToscaYamlInfo parsedYaml) {
 
         final List<String> expectedProp = Lists.newArrayList("vfc_parent_port_role",
                 "network_collection_function", "vfc_instance_group_function", "subinterface_role");
@@ -171,23 +256,23 @@ public class YamlTemplateParsingHandlerTest {
         validateParsedYaml(parsedYaml, MAIN_GROUP_NAME, expectedProp);
 
         assertThat(parsedYaml.getGroups().get(MAIN_GROUP_NAME).getCapabilities()
-                .get(CAPABILITY_TYPE)
-                .get(0).getProperties().get(0).getValue()).isEqualTo("success");
+                           .get(CAPABILITY_TYPE)
+                           .get(0).getProperties().get(0).getValue()).isEqualTo("success");
         assertThat(parsedYaml.getGroups().get(MAIN_GROUP_NAME).getCapabilities()).isNotNull();
-       }
+    }
 
-       private void stubGetGroupType() {
-               when(groupTypeBusinessLogic.getLatestGroupTypeByType(eq(VFC_GROUP_TYPE))).thenReturn(VfcInstanceGroupType);
-               when(groupTypeBusinessLogic.getLatestGroupTypeByType(eq(HEAT_GROUP_TYPE))).thenReturn(heatGroupType);
+    private void stubGetGroupType() {
+        when(groupTypeBusinessLogic.getLatestGroupTypeByType(eq(VFC_GROUP_TYPE))).thenReturn(VfcInstanceGroupType);
+        when(groupTypeBusinessLogic.getLatestGroupTypeByType(eq(HEAT_GROUP_TYPE))).thenReturn(heatGroupType);
         when(groupTypeBusinessLogic.getLatestGroupTypeByType(eq(ROOT_GROUP_TYPE))).thenReturn(rootGroupType);
     }
 
     private static GroupTypeDefinition buildRootGroupType() {
         return createGroupTypeDefinition(ROOT_GROUP_TYPE, null,
                 "The TOSCA Group Type all other TOSCA Group Types derive from");
-       }
+    }
 
-       private static GroupTypeDefinition buildHeatStackGroupType() {
+    private static GroupTypeDefinition buildHeatStackGroupType() {
         GroupTypeDefinition groupType = createGroupTypeDefinition(HEAT_GROUP_TYPE, "tosca.groups.Root",
                 "Grouped all heat resources which are in the same heat stack");
 
@@ -199,9 +284,9 @@ public class YamlTemplateParsingHandlerTest {
 
         groupType.setProperties(Lists.newArrayList(property1, property2));
         return groupType;
-       }
+    }
 
-       private static GroupTypeDefinition buildVfcInstanceGroupType() {
+    private static GroupTypeDefinition buildVfcInstanceGroupType() {
         GroupTypeDefinition groupType = createGroupTypeDefinition(VFC_GROUP_TYPE, "tosca.groups.Root",
                 "Groups of VFCs with same parent port role");
 
@@ -250,7 +335,7 @@ public class YamlTemplateParsingHandlerTest {
         return property;
     }
     private static GroupProperty createGroupProperty(String name, String description,
-                                                     String status){
+            String status){
         GroupProperty property = new GroupProperty();
         if (name != null)
             property.setName(name);
@@ -268,69 +353,38 @@ public class YamlTemplateParsingHandlerTest {
 
         return property;
     }
-    @Test
-    public void testSetArtifacts() {
-        UploadComponentInstanceInfo nodeTemplateInfo = new UploadComponentInstanceInfo();
-        Map<String, Object> nodeTemplateJsonMap = new HashMap<>();
-        Map<String, String> nodeMap = new HashMap<>();
-        nodeMap.put("name","test_name");
-        nodeMap.put("type","test_type");
-        nodeTemplateJsonMap.put(ARTIFACTS.getElementName(), nodeMap);
-        Deencapsulation.invoke(testSubject, "setArtifacts", nodeTemplateInfo, nodeTemplateJsonMap);
-        assertNotNull(nodeTemplateInfo.getArtifacts());
-    }
 
-    @Test
-    public void testCreateArtifactsModuleFromYaml() {
-        Map<String, Map<String, Map<String, String>>> nodeTemplateJsonMap = new HashMap<>();
-        Map<String, Map<String,String>> map0 = new HashMap<>();
-        Map<String, String> map1 = new HashMap<>();
-        map1.put("file", "test_file");
-        map1.put("type", "test_type");
-        map0.put("test_art", map1);
-        nodeTemplateJsonMap.put(ARTIFACTS.getElementName(), map0);
-        Map<String, Map<String, UploadArtifactInfo>> result;
-        result = Deencapsulation.invoke(testSubject, "createArtifactsModuleFromYaml", nodeTemplateJsonMap);
-        Assert.assertTrue(MapUtils.isNotEmpty(result));
-        Assert.assertTrue(MapUtils.isNotEmpty(result.get(ARTIFACTS.getElementName())));
-        Assert.assertEquals("test_file", result.get(ARTIFACTS.getElementName()).get("test_art").getFile());
-        Assert.assertEquals("test_type", result.get(ARTIFACTS.getElementName()).get("test_art").getType());
+    private void validateParsedYamlWithPolicies(ParsedToscaYamlInfo parsedYaml) {
+        // validate  policies
+        assertThat(parsedYaml.getPolicies()).isNotNull();
+        assertThat(parsedYaml.getPolicies()).containsKey(OPENECOMP_POLICY_NAME);
+        assertThat(parsedYaml.getPolicies().get(OPENECOMP_POLICY_NAME)).isInstanceOf(PolicyDefinition.class);
     }
 
-    @Test
-    public void testAddModuleNodeTemplateArtifacts() {
-        Map<String, Map<String, UploadArtifactInfo>> result = new HashMap<>();
-        Map<String, String> map1 = new HashMap<>();
-        map1.put("file", "test_file");
-        map1.put("type", "test_type");
-        Deencapsulation.invoke(testSubject, "addModuleNodeTemplateArtifacts", result, map1, "test_art");
-        Assert.assertTrue(MapUtils.isNotEmpty(result));
-        Assert.assertTrue(MapUtils.isNotEmpty(result.get(ARTIFACTS.getElementName())));
-        Assert.assertEquals("test_file", result.get(ARTIFACTS.getElementName()).get("test_art").getFile());
-        Assert.assertEquals("test_type", result.get(ARTIFACTS.getElementName()).get("test_art").getType());
+    private void stubGetPolicyType () {
+        when(policyTypeBusinessLogic.getLatestPolicyTypeByType(eq(OPENECOMP_ANTILOCATE_POLICY_TYPE))).thenReturn(
+                OPENECOMP_POLICY_TYPE);
     }
 
-    @Test
-    public void testBuildModuleNodeTemplateArtifact() {
-        Map<String, String> map1 = new HashMap<>();
-        map1.put("file", "test_file");
-        map1.put("type", "test_type");
-        UploadArtifactInfo result;
-        result = Deencapsulation.invoke(testSubject, "buildModuleNodeTemplateArtifact", map1);
-        assertNotNull(result);
-        Assert.assertEquals("test_file", result.getFile());
-        Assert.assertEquals("test_type", result.getType());
+    private static PolicyTypeDefinition buildOpenecompPolicyType() {
+        return createPolicyTypeDefinition(OPENECOMP_POLICY_NAME, OPENECOMP_ANTILOCATE_POLICY_TYPE, ROOT_POLICIES_TYPE,
+                "The Openecomp Antilocate policy");
     }
 
-    @Test
-    public void testFillArtifact() {
-        Map<String, String> map1 = new HashMap<>();
-        map1.put("file", "test_file");
-        map1.put("type", "test_type");
-        UploadArtifactInfo result = new UploadArtifactInfo();
-        Deencapsulation.invoke(testSubject, "fillArtifact", result, map1);
-        assertNotNull(result);
-        Assert.assertEquals("test_file", result.getFile());
-        Assert.assertEquals("test_type", result.getType());
+    private static PolicyTypeDefinition createPolicyTypeDefinition(String policyName, String policyType, String derivedFrom, String description) {
+        PolicyTypeDefinition policyTypeDefinition = new PolicyTypeDefinition();
+        if (policyName != null && !policyName.isEmpty()) {
+            policyTypeDefinition.setName(policyName);
+        }
+        if (policyType != null) {
+            policyTypeDefinition.setType(policyType);
+        }
+        if (derivedFrom != null) {
+            policyTypeDefinition.setDerivedFrom(derivedFrom);
+        }
+        if (description != null) {
+            policyTypeDefinition.setDescription(description);
+        }
+        return policyTypeDefinition;
     }
 }