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