[sdc] docker file fix for cassandra
[sdc.git] / openecomp-be / backend / openecomp-sdc-vendor-software-product-manager / src / test / java / org / openecomp / sdc / vendorsoftwareproduct / services / CompositionEntityDataManagerTest.java
1 package org.openecomp.sdc.vendorsoftwareproduct.services;
2
3 import org.openecomp.sdc.common.errors.CoreException;
4 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
5 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity;
6 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspQuestionnaireEntity;
7 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityValidationData;
8 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityId;
9 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityType;
10 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Network;
11 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.NetworkCompositionSchemaInput;
12 import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateContext;
13 import org.openecomp.sdc.versioning.dao.types.Version;
14 import org.apache.commons.collections.CollectionUtils;
15 import org.testng.Assert;
16 import org.testng.annotations.Test;
17
18 import java.util.Collection;
19 import java.util.Map;
20
21 public class CompositionEntityDataManagerTest {
22
23   public static final String VSP1 = "vsp1";
24   public static final String COMPONENT1 = "component1";
25   public static final String NIC1 = "nic1";
26   private static CompositionEntityDataManager compositionEntityDataManager =
27       new CompositionEntityDataManager();
28   private static Map<CompositionEntityId, Collection<String>> errorsById;
29
30   private static void assertValidationData(CompositionEntityValidationData validationData,
31                                            String id, CompositionEntityType type,
32                                            boolean hasErrors) {
33     Assert.assertNotNull(validationData);
34     Assert.assertEquals(validationData.getEntityId(), id);
35     Assert.assertEquals(validationData.getEntityType(), type);
36     Assert.assertTrue(CollectionUtils.isNotEmpty(validationData.getErrors()) == hasErrors);
37   }
38
39   @Test(expectedExceptions = CoreException.class)
40   public void testAddNullEntity_negative() {
41     compositionEntityDataManager.addEntity(null, null);
42   }
43
44   @Test
45   public void testAddEntity() {
46     compositionEntityDataManager
47         .addEntity(new VspQuestionnaireEntity(VSP1, new Version(0, 1)), null);
48
49     String invalidQuestionnaireData = "{\"a\": \"b\"}";
50
51     ComponentEntity component = new ComponentEntity(VSP1, new Version(0, 1), COMPONENT1);
52     component.setQuestionnaireData(invalidQuestionnaireData);
53     compositionEntityDataManager.addEntity(component, null);
54
55     org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity
56         nic = new org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity(VSP1, new Version(0, 1), COMPONENT1, NIC1);
57     nic.setQuestionnaireData(invalidQuestionnaireData);
58     compositionEntityDataManager.addEntity(nic, null);
59   }
60
61   @Test(dependsOnMethods = "testAddEntity")
62   public void testValidateEntitiesQuestionnaire() {
63     errorsById = compositionEntityDataManager.validateEntitiesQuestionnaire();
64     Assert.assertNotNull(errorsById);
65     Assert.assertEquals(errorsById.size(), 2); // both component and nic data don't mach schemas
66     CompositionEntityId nicId =
67         new org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity(VSP1, new Version(0, 1), COMPONENT1, NIC1).getCompositionEntityId();
68     Assert.assertTrue(errorsById.containsKey(nicId));
69     Assert.assertTrue(errorsById.containsKey(nicId.getParentId()));
70   }
71
72   @Test(dependsOnMethods = "testAddEntity")
73   public void testBuildTrees() {
74     compositionEntityDataManager.buildTrees();
75   }
76
77   @Test(dependsOnMethods = "testBuildTrees")
78   public void testAddErrorsToTrees() {
79     compositionEntityDataManager.addErrorsToTrees(errorsById);
80   }
81
82   @Test(dependsOnMethods = "testAddErrorsToTrees")
83   public void testGetTrees() {
84     Collection<CompositionEntityValidationData> trees = compositionEntityDataManager.getTrees();
85     Assert.assertNotNull(trees);
86     Assert.assertEquals(trees.size(), 1);
87
88     CompositionEntityValidationData vspValidationData = trees.iterator().next();
89     assertValidationData(vspValidationData, VSP1, CompositionEntityType.vsp, false);
90     Assert.assertEquals(vspValidationData.getSubEntitiesValidationData().size(), 1);
91
92     CompositionEntityValidationData componentValidationData =
93         vspValidationData.getSubEntitiesValidationData().iterator().next();
94     assertValidationData(componentValidationData, COMPONENT1, CompositionEntityType.component,
95         true);
96     Assert.assertEquals(componentValidationData.getSubEntitiesValidationData().size(), 1);
97
98     CompositionEntityValidationData nicValidationData =
99         componentValidationData.getSubEntitiesValidationData().iterator().next();
100     assertValidationData(nicValidationData, NIC1, CompositionEntityType.nic, true);
101     Assert.assertNull(nicValidationData.getSubEntitiesValidationData());
102   }
103
104   @Test
105   public void testValidateValidEntity() {
106     NetworkEntity networkEntity = new NetworkEntity(VSP1, new Version(0, 1), "network1");
107     Network network = new Network();
108     network.setName("network1 name");
109     network.setDhcp(true);
110     networkEntity.setNetworkCompositionData(network);
111
112     NetworkCompositionSchemaInput schemaTemplateInput = new NetworkCompositionSchemaInput();
113     schemaTemplateInput.setManual(false);
114     schemaTemplateInput.setNetwork(network);
115
116     CompositionEntityValidationData validationData = CompositionEntityDataManager
117         .validateEntity(networkEntity, SchemaTemplateContext.composition, schemaTemplateInput);
118     assertValidationData(validationData, "network1", CompositionEntityType.network, false);
119   }
120
121   @Test
122   public void testValidateInvalidEntity() {
123     NetworkEntity networkEntity = new NetworkEntity(VSP1, new Version(0, 1), "network1");
124     Network network = new Network();
125     network.setName("network1 name changed");
126     network.setDhcp(false);
127     networkEntity.setNetworkCompositionData(network);
128
129     NetworkCompositionSchemaInput schemaTemplateInput = new NetworkCompositionSchemaInput();
130     schemaTemplateInput.setManual(false);
131     Network origNetwork = new Network();
132     origNetwork.setName("network1 name");
133     origNetwork.setDhcp(true);
134     schemaTemplateInput.setNetwork(origNetwork);
135
136     CompositionEntityValidationData validationData = CompositionEntityDataManager
137         .validateEntity(networkEntity, SchemaTemplateContext.composition, schemaTemplateInput);
138     assertValidationData(validationData, "network1", CompositionEntityType.network, true);
139     Assert.assertEquals(validationData.getErrors().size(), 2);
140   }
141 }