2 * Copyright © 2016-2019 European Support Limited
3 * Modifications © 2020 AT&T
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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 package org.openecomp.sdc.be.datamodel;
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;
26 import java.util.Arrays;
27 import java.util.Collections;
28 import java.util.HashMap;
29 import java.util.List;
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;
60 public class UiComponentDataConverterTest {
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;
70 private static GroupTypeBusinessLogic groupTypeBusinessLogic;
71 private static PolicyTypeBusinessLogic policyTypeBusinessLogic;
72 private static UiComponentDataConverter uiComponentDataConverter;
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";
80 public static void initClass() {
81 groupTypeBusinessLogic = mock(GroupTypeBusinessLogic.class);
82 policyTypeBusinessLogic = mock(PolicyTypeBusinessLogic.class);
83 uiComponentDataConverter = new UiComponentDataConverter(groupTypeBusinessLogic, policyTypeBusinessLogic);
87 public void setUp() throws Exception {
88 policy1 = PolicyDefinitionBuilder.create()
94 policy2 = PolicyDefinitionBuilder.create()
99 group1 = GroupDefinitionBuilder.create()
100 .setUniqueId("group1")
104 group2 = GroupDefinitionBuilder.create()
105 .setUniqueId("group2")
110 input1 = InputsBuilder.create()
112 .setPropertyId("inputid")
115 propertyDef = new PropertyDataDefinitionBuilder()
119 .setUniqueId("property1")
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());
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);
145 public void getUiDataTransferFromResourceByParams_policies_noPoliciesForResource() {
146 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(new Resource(), Collections.singletonList("policies"));
147 assertThat(componentDTO.getPolicies()).isEmpty();
151 public void getUiDataTransferFromResourceByParams_All() {
152 Resource resourceWithGroups = buildResourceWithGroups();
153 Resource resourceWithInputs = buildResourceWithInputs();
154 Resource resourceWithOutputs = buildResourceWithOutputs();
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"));
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"));
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"));
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"));
181 UiComponentDataTransfer componentDTO21= uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesRelations"));
182 UiComponentDataTransfer componentDTO20 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("deploymentArtifacts"));
184 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("groups"));
185 assertThat(componentDTO.getGroups()).isEqualTo(resourceWithGroups.getGroups());
189 public void getUiDataTransferFromServiceByParams_policies_noPoliciesForResource() {
190 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("policies"));
191 assertThat(componentDTO.getPolicies()).isEmpty();
195 public void getUiDataTransferFromServiceByParams_SERVICE_API_ARTIFACTS() {
196 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("serviceApiArtifacts"));
197 assertThat(componentDTO.getArtifacts()).isNull();
201 public void getUiDataTransferFromServiceByParams_FORWARDING_PATHS() {
202 UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("forwardingPaths"));
203 assertThat(componentDTO.getForwardingPaths()).isEmpty();
207 public void getUiDataTransferFromServiceByParams_METADATA() {
208 UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("metadata"));
209 assertThat(componentDTO.getMetadata().getNamingPolicy()).isEmpty();
213 public void getUiDataTransferFromServiceByParams_INTERFACES() {
214 UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("interfaces"));
215 assertThat(componentDTO.getInterfaces()).isEmpty();
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()]));
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()]));
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);
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");
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");
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();
272 public void testGetDeclaredPolicies() {
273 ComponentInstanceProperty property = new ComponentInstanceProperty();
274 property.setName(PROPERTY_UID);
276 GetPolicyValueDataDefinition getPolicy = new GetPolicyValueDataDefinition();
277 getPolicy.setPolicyId(PROPERTY_UID);
278 getPolicy.setPropertyName(PROPERTY_UID);
279 property.setGetPolicyValues(Collections.singletonList(getPolicy));
281 Map<String, List<ComponentInstanceProperty>> instanceProperties = new HashMap<>();
282 instanceProperties.put(COMPONENT_UID, Collections.singletonList(property));
284 Resource resource = new ResourceBuilder().build();
285 resource.setComponentInstancesProperties(instanceProperties);
287 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
288 Collections.singletonList("policies"));
290 assertThat(uiComponentDataTransfer.getPolicies()).isNotEmpty();
294 public void testGetNodeFilterEmptyList() {
295 Resource resource = new ResourceBuilder().build();
296 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
297 Collections.singletonList("nodeFilter"));
299 assertThat(uiComponentDataTransfer.getNodeFilter()).isNull();
303 public void testGetNodeFilter() {
304 CINodeFilterDataDefinition nodeFilter = new CINodeFilterDataDefinition();
305 nodeFilter.setID(NODE_FILTER_UID);
307 Map<String, CINodeFilterDataDefinition> nodeFilterMap = new HashMap<>();
308 nodeFilterMap.put(NODE_FILTER_UID, nodeFilter);
310 Resource resource = new ResourceBuilder().build();
311 resource.setNodeFilterComponents(nodeFilterMap);
313 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
314 Collections.singletonList("nodeFilter"));
316 assertThat(uiComponentDataTransfer.getNodeFilterforNode()).isNotEmpty();
320 public void testGetSubstitutionFilterEmptyList() {
321 Resource resource = new ResourceBuilder().build();
322 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
323 Collections.singletonList("substitutionFilter"));
325 assertThat(uiComponentDataTransfer.getSubstitutionFilter()).isNull();
329 public void testGetSubstitutionFilter() {
330 SubstitutionFilterDataDefinition substitutionFilter = new SubstitutionFilterDataDefinition();
331 substitutionFilter.setID(SUBSTITUTION_FILTER_UID);
333 Resource resource = new ResourceBuilder().build();
334 resource.setSubstitutionFilter(substitutionFilter);
336 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
337 Collections.singletonList("substitutionFilter"));
339 assertThat(uiComponentDataTransfer.getSubstitutionFilterForTopologyTemplate()).isNotEmpty();
342 private Resource buildResourceWithGroups() {
343 return new ResourceBuilder()
349 private Resource buildResourceWithInputs() {
350 return new ResourceBuilder()
355 private Resource buildResourceWithOutputs() {
356 return new ResourceBuilder()
361 private Resource buildResourceWithParameter(final String field) {
362 final ResourceBuilder res = new ResourceBuilder();
365 res.addInput(input1);
368 res.addOutput(output);
371 //res.addProperty(propertyDef);
376 return new ResourceBuilder()
382 private Resource buildResourceWithPolicies() {
383 return new ResourceBuilder()
389 private Service buildServiceWithPolicies() {
390 return new ServiceBuilder()
396 private Set<String> buildExcludedTypesList() {