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