Catalog alignment
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / datamodel / UiComponentDataConverterTest.java
1 /*
2  * Copyright © 2016-2019 European Support Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17
18 package org.openecomp.sdc.be.datamodel;
19
20 import org.apache.commons.collections.CollectionUtils;
21 import org.apache.commons.collections.MapUtils;
22 import org.junit.Before;
23 import org.junit.BeforeClass;
24 import org.junit.Test;
25 import org.openecomp.sdc.be.components.impl.GroupTypeBusinessLogic;
26 import org.openecomp.sdc.be.components.impl.PolicyTypeBusinessLogic;
27 import org.openecomp.sdc.be.components.utils.GroupDefinitionBuilder;
28 import org.openecomp.sdc.be.components.utils.InputsBuilder;
29 import org.openecomp.sdc.be.components.utils.PolicyDefinitionBuilder;
30 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
31 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
32 import org.openecomp.sdc.be.components.utils.ServiceBuilder;
33 import org.openecomp.sdc.be.datamodel.utils.UiComponentDataConverter;
34 import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition;
35 import org.openecomp.sdc.be.datatypes.elements.GetPolicyValueDataDefinition;
36 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
37 import org.openecomp.sdc.be.model.GroupDefinition;
38 import org.openecomp.sdc.be.model.InputDefinition;
39 import org.openecomp.sdc.be.model.InterfaceDefinition;
40 import org.openecomp.sdc.be.model.PolicyDefinition;
41 import org.openecomp.sdc.be.model.PropertyDefinition;
42 import org.openecomp.sdc.be.model.Resource;
43 import org.openecomp.sdc.be.model.Service;
44 import org.openecomp.sdc.be.ui.model.UiComponentDataTransfer;
45 import org.openecomp.sdc.be.ui.model.UiComponentMetadata;
46 import org.openecomp.sdc.be.ui.model.UiServiceDataTransfer;
47
48 import java.util.Arrays;
49 import java.util.Collections;
50 import java.util.HashMap;
51 import java.util.List;
52 import java.util.Map;
53 import java.util.Set;
54
55 import static org.assertj.core.api.Assertions.assertThat;
56 import static org.hibernate.validator.internal.util.CollectionHelper.asSet;
57 import static org.mockito.Mockito.mock;
58 import static org.mockito.Mockito.when;
59
60 public class UiComponentDataConverterTest {
61
62     private PolicyDefinition policy1, policy2;
63     private GroupDefinition group1, group2;
64     private InputDefinition input1;
65     private PropertyDefinition propertyDef;
66     private InterfaceDefinition interfaceDef;
67
68
69     private static GroupTypeBusinessLogic groupTypeBusinessLogic;
70     private static PolicyTypeBusinessLogic policyTypeBusinessLogic;
71     private static UiComponentDataConverter uiComponentDataConverter;
72
73     private static final String PROPERTY_UID = "propertyUid";
74     private static final String NODE_FILTER_UID = "nodeFilterUid";
75     private static final String COMPONENT_UID = "componentUid";
76
77     @BeforeClass
78     public static void initClass() {
79         groupTypeBusinessLogic = mock(GroupTypeBusinessLogic.class);
80         policyTypeBusinessLogic = mock(PolicyTypeBusinessLogic.class);
81         uiComponentDataConverter = new UiComponentDataConverter(groupTypeBusinessLogic, policyTypeBusinessLogic);
82     }
83
84     @Before
85     public void setUp() throws Exception {
86         policy1 = PolicyDefinitionBuilder.create()
87                 .setName("policy1")
88                 .setUniqueId("uid1")
89                 .setType("a")
90                 .build();
91
92         policy2 = PolicyDefinitionBuilder.create()
93                 .setName("policy2")
94                 .setUniqueId("uid2")
95                 .setType("b")
96                 .build();
97         group1 = GroupDefinitionBuilder.create()
98                 .setUniqueId("group1")
99                 .setName("Group 1")
100                 .setType("a")
101                 .build();
102         group2 = GroupDefinitionBuilder.create()
103                 .setUniqueId("group2")
104                 .setName("Group 2")
105                 .setType("b")
106                 .build();
107
108         input1 = InputsBuilder.create()
109                 .setName("input1")
110                 .setPropertyId("inputid")
111                 .build();
112
113         propertyDef = new PropertyDataDefinitionBuilder()
114                 .setName("propety1")
115                 .setValue("true")
116                 .setType("boolean")
117                 .setUniqueId("property1")
118                 .build();
119
120
121     }
122
123     @Test
124     public void getUiDataTransferFromResourceByParams_groups_allGroups() {
125         Resource resourceWithGroups = buildResourceWithGroups();
126         UiComponentDataTransfer componentDTO1 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("PROPERTIES"));
127         UiComponentDataTransfer componentDTO2 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("properties"));
128         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("groups"));
129         assertThat(componentDTO.getGroups()).isEqualTo(resourceWithGroups.getGroups());
130     }
131
132     @Test
133     public void getUiDataTransferFromResourceByParams_groups_excludedGroups() {
134         Resource resourceWithGroups = buildResourceWithGroups();
135         when(groupTypeBusinessLogic.getExcludedGroupTypes("VFC")).thenReturn(buildExcludedTypesList());
136         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("nonExcludedGroups"));
137         List<GroupDefinition> groups = componentDTO.getGroups();
138         assertThat(groups.size()).isEqualTo(1);
139         assertThat(groups.get(0)).isEqualTo(group2);
140     }
141
142     @Test
143     public void getUiDataTransferFromResourceByParams_policies_noPoliciesForResource() {
144         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(new Resource(), Collections.singletonList("policies"));
145         assertThat(componentDTO.getPolicies()).isEmpty();
146     }
147
148     @Test
149     public void getUiDataTransferFromResourceByParams_All() {
150         Resource resourceWithGroups = buildResourceWithGroups();
151         Resource resourceWithInputs = buildResourceWithInputs();
152
153         UiComponentDataTransfer componentDTO1 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("PROPERTIES"));
154         UiComponentDataTransfer componentDTO2 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("properties"));
155         UiComponentDataTransfer componentDTO3 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("interfaces"));
156         UiComponentDataTransfer componentDTO4 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("attributes"));
157         UiComponentDataTransfer componentDTO5 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("metadata"));
158         UiComponentDataTransfer componentDTO6 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("derivedFrom"));
159         UiComponentDataTransfer componentDTO7 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("additionalInformation"));
160
161         UiComponentDataTransfer componentDTO8 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("inputs"));
162         UiComponentDataTransfer componentDTO81 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithInputs, Collections.singletonList("inputs"));
163
164         UiComponentDataTransfer componentDTO9 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("users"));
165         UiComponentDataTransfer componentDTO10 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstances"));
166         UiComponentDataTransfer componentDTO11 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesProperties"));
167         UiComponentDataTransfer componentDTO12 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("capabilities"));
168         UiComponentDataTransfer componentDTO13 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("requirements"));
169         UiComponentDataTransfer componentDTO14 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("allVersions"));
170         UiComponentDataTransfer componentDTO15 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("artifacts"));
171
172         UiComponentDataTransfer componentDTO16 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("interfaces"));
173         UiComponentDataTransfer componentDTO17 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesAttributes"));
174         UiComponentDataTransfer componentDTO18= uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesInputs"));
175         UiComponentDataTransfer componentDTO19 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("toscaArtifacts"));
176
177         UiComponentDataTransfer componentDTO21= uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesRelations"));
178         UiComponentDataTransfer componentDTO20 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("deploymentArtifacts"));
179
180         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("groups"));
181         assertThat(componentDTO.getGroups()).isEqualTo(resourceWithGroups.getGroups());
182     }
183
184     @Test
185     public void getUiDataTransferFromServiceByParams_policies_noPoliciesForResource() {
186         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("policies"));
187         assertThat(componentDTO.getPolicies()).isEmpty();
188     }
189
190     @Test
191     public void getUiDataTransferFromServiceByParams_SERVICE_API_ARTIFACTS() {
192         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("serviceApiArtifacts"));
193         assertThat(componentDTO.getArtifacts()).isNull();
194     }
195
196     @Test
197     public void getUiDataTransferFromServiceByParams_FORWARDING_PATHS() {
198         UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("forwardingPaths"));
199         assertThat(componentDTO.getForwardingPaths()).isEmpty();
200     }
201
202     @Test
203     public void getUiDataTransferFromServiceByParams_METADATA() {
204         UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("metadata"));
205         assertThat(componentDTO.getMetadata().getNamingPolicy()).isEqualTo("");
206     }
207
208     @Test
209     public void getUiDataTransferFromServiceByParams_INTERFACES() {
210         UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("interfaces"));
211         assertThat(componentDTO.getInterfaces()).isEmpty();
212     }
213
214     @Test
215     public void getUiDataTransferFromResourceByParams_policies() {
216         Resource resourceWithPolicies = buildResourceWithPolicies();
217         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithPolicies, Collections.singletonList("policies"));
218         List<PolicyDefinition> expectedPolicies = resourceWithPolicies.resolvePoliciesList();
219         assertThat(componentDTO.getPolicies()).containsExactlyInAnyOrder((PolicyDefinition[]) expectedPolicies.toArray(new PolicyDefinition[expectedPolicies.size()]));
220     }
221
222     @Test
223     public void getUiDataTransferFromServiceByParams_policies() {
224         Service resourceWithPolicies = buildServiceWithPolicies();
225         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(resourceWithPolicies, Collections.singletonList("policies"));
226         List<PolicyDefinition> expectedPolicies = resourceWithPolicies.resolvePoliciesList();
227         assertThat(componentDTO.getPolicies()).containsExactlyInAnyOrder((PolicyDefinition[]) expectedPolicies.toArray(new PolicyDefinition[expectedPolicies.size()]));
228     }
229
230     @Test
231     public void getUiDataTransferFromResourceByParams_policies_excludedPolicies() {
232         Resource resourceWithPolicies = buildResourceWithPolicies();
233         when(policyTypeBusinessLogic.getExcludedPolicyTypes("VFC")).thenReturn(buildExcludedTypesList());
234         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithPolicies, Collections.singletonList("nonExcludedPolicies"));
235         List<PolicyDefinition> policies = componentDTO.getPolicies();
236         assertThat(policies.size()).isEqualTo(1);
237         assertThat(policies.get(0)).isEqualTo(policy2);
238     }
239
240     @Test
241     public void convertToUiComponentMetadataTestResource() {
242         Resource resourceWithPolicies = buildResourceWithPolicies();
243         when(policyTypeBusinessLogic.getExcludedPolicyTypes("VFC")).thenReturn(buildExcludedTypesList());
244         UiComponentMetadata componentMd = uiComponentDataConverter.convertToUiComponentMetadata(resourceWithPolicies);
245         assertThat(componentMd.getComponentType().getValue()).isEqualTo("Resource");
246
247     }
248
249     @Test
250     public void convertToUiComponentMetadataTestService() {
251         Service resourceWithPolicies = buildServiceWithPolicies();
252         when(policyTypeBusinessLogic.getExcludedPolicyTypes("VFC")).thenReturn(buildExcludedTypesList());
253         UiComponentMetadata componentMd = uiComponentDataConverter.convertToUiComponentMetadata(resourceWithPolicies);
254         assertThat(componentMd.getComponentType().getValue()).isEqualTo("Service");
255
256     }
257     @Test
258     public void getResourceWithoutGroupsAndPolicies_returnsEmptyLists() {
259         Resource resource = new ResourceBuilder().build();
260         UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource, Arrays.asList("nonExcludedPolicies", "nonExcludedGroups"));
261         List<PolicyDefinition> policies = componentDTO.getPolicies();
262         assertThat(policies.size()).isZero();
263         List<GroupDefinition> groups = componentDTO.getGroups();
264         assertThat(groups.size()).isZero();
265     }
266
267     @Test
268     public void testGetDeclaredPolicies() {
269         ComponentInstanceProperty property = new ComponentInstanceProperty();
270         property.setName(PROPERTY_UID);
271
272         GetPolicyValueDataDefinition getPolicy = new GetPolicyValueDataDefinition();
273         getPolicy.setPolicyId(PROPERTY_UID);
274         getPolicy.setPropertyName(PROPERTY_UID);
275         property.setGetPolicyValues(Collections.singletonList(getPolicy));
276
277         Map<String, List<ComponentInstanceProperty>> instanceProperties = new HashMap<>();
278         instanceProperties.put(COMPONENT_UID, Collections.singletonList(property));
279
280         Resource resource = new ResourceBuilder().build();
281         resource.setComponentInstancesProperties(instanceProperties);
282
283         UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
284                 Collections.singletonList("policies"));
285
286         assertThat(CollectionUtils.isNotEmpty(uiComponentDataTransfer.getPolicies()));
287     }
288
289     @Test
290     public void testGetNodeFilterEmptyList() {
291         Resource resource = new ResourceBuilder().build();
292         UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
293                 Collections.singletonList("nodeFilter"));
294
295         assertThat(MapUtils.isEmpty(uiComponentDataTransfer.getNodeFilter()));
296     }
297
298     @Test
299     public void testGetNodeFilter() {
300         CINodeFilterDataDefinition nodeFilter = new CINodeFilterDataDefinition();
301         nodeFilter.setID(NODE_FILTER_UID);
302
303         Map<String, CINodeFilterDataDefinition> nodeFilterMap = new HashMap<>();
304         nodeFilterMap.put(NODE_FILTER_UID, nodeFilter);
305
306         Resource resource = new ResourceBuilder().build();
307         resource.setNodeFilterComponents(nodeFilterMap);
308
309         UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
310                 Collections.singletonList("nodeFilter"));
311
312         assertThat(MapUtils.isNotEmpty(uiComponentDataTransfer.getNodeFilter()));
313     }
314
315     private Resource buildResourceWithGroups() {
316         return new ResourceBuilder()
317                 .addGroup(group1)
318                 .addGroup(group2)
319                 .build();
320     }
321
322     private Resource buildResourceWithInputs() {
323         return new ResourceBuilder()
324                 .addInput(input1)
325                 .build();
326     }
327
328     private Resource buildResourceWithParameter(String field) {
329         ResourceBuilder res =  new ResourceBuilder();
330         switch(field){
331             case "inputs":
332                 res.addInput(input1);
333                 break;
334             case "properties":
335                 //res.addProperty(propertyDef);
336                 break;
337
338
339         }
340
341
342         return new ResourceBuilder()
343                 .addInput(input1)
344                 .build();
345     }
346
347     private Resource buildResourceWithPolicies() {
348         return new ResourceBuilder()
349                 .addPolicy(policy1)
350                 .addPolicy(policy2)
351                 .build();
352     }
353
354     private Service buildServiceWithPolicies() {
355         return new ServiceBuilder()
356                 .addPolicy(policy1)
357                 .addPolicy(policy2)
358                 .build();
359     }
360
361     private Set<String> buildExcludedTypesList() {
362         return asSet("a");
363     }
364
365 }