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 org.apache.commons.collections.CollectionUtils;
22 import org.apache.commons.collections.MapUtils;
23 import org.junit.Before;
24 import org.junit.BeforeClass;
25 import org.junit.Test;
26 import org.openecomp.sdc.be.components.impl.GroupTypeBusinessLogic;
27 import org.openecomp.sdc.be.components.impl.PolicyTypeBusinessLogic;
28 import org.openecomp.sdc.be.components.utils.GroupDefinitionBuilder;
29 import org.openecomp.sdc.be.components.utils.InputsBuilder;
30 import org.openecomp.sdc.be.components.utils.PolicyDefinitionBuilder;
31 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
32 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
33 import org.openecomp.sdc.be.components.utils.ServiceBuilder;
34 import org.openecomp.sdc.be.datamodel.utils.UiComponentDataConverter;
35 import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition;
36 import org.openecomp.sdc.be.datatypes.elements.GetPolicyValueDataDefinition;
37 import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterDataDefinition;
38 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
39 import org.openecomp.sdc.be.model.GroupDefinition;
40 import org.openecomp.sdc.be.model.InputDefinition;
41 import org.openecomp.sdc.be.model.InterfaceDefinition;
42 import org.openecomp.sdc.be.model.PolicyDefinition;
43 import org.openecomp.sdc.be.model.PropertyDefinition;
44 import org.openecomp.sdc.be.model.Resource;
45 import org.openecomp.sdc.be.model.Service;
46 import org.openecomp.sdc.be.ui.model.UiComponentDataTransfer;
47 import org.openecomp.sdc.be.ui.model.UiComponentMetadata;
48 import org.openecomp.sdc.be.ui.model.UiServiceDataTransfer;
50 import java.util.Arrays;
51 import java.util.Collections;
52 import java.util.HashMap;
53 import java.util.List;
57 import static org.assertj.core.api.Assertions.assertThat;
58 import static org.hibernate.validator.internal.util.CollectionHelper.asSet;
59 import static org.mockito.Mockito.mock;
60 import static org.mockito.Mockito.when;
62 public class UiComponentDataConverterTest {
64 private PolicyDefinition policy1, policy2;
65 private GroupDefinition group1, group2;
66 private InputDefinition input1;
67 private PropertyDefinition propertyDef;
68 private InterfaceDefinition interfaceDef;
71 private static GroupTypeBusinessLogic groupTypeBusinessLogic;
72 private static PolicyTypeBusinessLogic policyTypeBusinessLogic;
73 private static UiComponentDataConverter uiComponentDataConverter;
75 private static final String PROPERTY_UID = "propertyUid";
76 private static final String NODE_FILTER_UID = "nodeFilterUid";
77 private static final String SUBSTITUTION_FILTER_UID = "substitutionFilterUid";
78 private static final String COMPONENT_UID = "componentUid";
81 public static void initClass() {
82 groupTypeBusinessLogic = mock(GroupTypeBusinessLogic.class);
83 policyTypeBusinessLogic = mock(PolicyTypeBusinessLogic.class);
84 uiComponentDataConverter = new UiComponentDataConverter(groupTypeBusinessLogic, policyTypeBusinessLogic);
88 public void setUp() throws Exception {
89 policy1 = PolicyDefinitionBuilder.create()
95 policy2 = PolicyDefinitionBuilder.create()
100 group1 = GroupDefinitionBuilder.create()
101 .setUniqueId("group1")
105 group2 = GroupDefinitionBuilder.create()
106 .setUniqueId("group2")
111 input1 = InputsBuilder.create()
113 .setPropertyId("inputid")
116 propertyDef = new PropertyDataDefinitionBuilder()
120 .setUniqueId("property1")
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());
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);
146 public void getUiDataTransferFromResourceByParams_policies_noPoliciesForResource() {
147 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(new Resource(), Collections.singletonList("policies"));
148 assertThat(componentDTO.getPolicies()).isEmpty();
152 public void getUiDataTransferFromResourceByParams_All() {
153 Resource resourceWithGroups = buildResourceWithGroups();
154 Resource resourceWithInputs = buildResourceWithInputs();
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"));
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"));
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"));
180 UiComponentDataTransfer componentDTO21= uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesRelations"));
181 UiComponentDataTransfer componentDTO20 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("deploymentArtifacts"));
183 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("groups"));
184 assertThat(componentDTO.getGroups()).isEqualTo(resourceWithGroups.getGroups());
188 public void getUiDataTransferFromServiceByParams_policies_noPoliciesForResource() {
189 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("policies"));
190 assertThat(componentDTO.getPolicies()).isEmpty();
194 public void getUiDataTransferFromServiceByParams_SERVICE_API_ARTIFACTS() {
195 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("serviceApiArtifacts"));
196 assertThat(componentDTO.getArtifacts()).isNull();
200 public void getUiDataTransferFromServiceByParams_FORWARDING_PATHS() {
201 UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("forwardingPaths"));
202 assertThat(componentDTO.getForwardingPaths()).isEmpty();
206 public void getUiDataTransferFromServiceByParams_METADATA() {
207 UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("metadata"));
208 assertThat(componentDTO.getMetadata().getNamingPolicy()).isEqualTo("");
212 public void getUiDataTransferFromServiceByParams_INTERFACES() {
213 UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("interfaces"));
214 assertThat(componentDTO.getInterfaces()).isEmpty();
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()]));
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()]));
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);
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");
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");
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();
271 public void testGetDeclaredPolicies() {
272 ComponentInstanceProperty property = new ComponentInstanceProperty();
273 property.setName(PROPERTY_UID);
275 GetPolicyValueDataDefinition getPolicy = new GetPolicyValueDataDefinition();
276 getPolicy.setPolicyId(PROPERTY_UID);
277 getPolicy.setPropertyName(PROPERTY_UID);
278 property.setGetPolicyValues(Collections.singletonList(getPolicy));
280 Map<String, List<ComponentInstanceProperty>> instanceProperties = new HashMap<>();
281 instanceProperties.put(COMPONENT_UID, Collections.singletonList(property));
283 Resource resource = new ResourceBuilder().build();
284 resource.setComponentInstancesProperties(instanceProperties);
286 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
287 Collections.singletonList("policies"));
289 assertThat(uiComponentDataTransfer.getPolicies()).isNotEmpty();
293 public void testGetNodeFilterEmptyList() {
294 Resource resource = new ResourceBuilder().build();
295 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
296 Collections.singletonList("nodeFilter"));
298 assertThat(uiComponentDataTransfer.getNodeFilter()).isNull();
302 public void testGetNodeFilter() {
303 CINodeFilterDataDefinition nodeFilter = new CINodeFilterDataDefinition();
304 nodeFilter.setID(NODE_FILTER_UID);
306 Map<String, CINodeFilterDataDefinition> nodeFilterMap = new HashMap<>();
307 nodeFilterMap.put(NODE_FILTER_UID, nodeFilter);
309 Resource resource = new ResourceBuilder().build();
310 resource.setNodeFilterComponents(nodeFilterMap);
312 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
313 Collections.singletonList("nodeFilter"));
315 assertThat(uiComponentDataTransfer.getNodeFilter()).isNotEmpty();
319 public void testGetSubstitutionFilterEmptyList() {
320 Resource resource = new ResourceBuilder().build();
321 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
322 Collections.singletonList("substitutionFilter"));
324 assertThat(uiComponentDataTransfer.getSubstitutionFilter()).isNull();
328 public void testGetSubstitutionFilter() {
329 SubstitutionFilterDataDefinition substitutionFilter = new SubstitutionFilterDataDefinition();
330 substitutionFilter.setID(SUBSTITUTION_FILTER_UID);
332 Resource resource = new ResourceBuilder().build();
333 resource.setSubstitutionFilter(substitutionFilter);
335 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
336 Collections.singletonList("substitutionFilter"));
338 assertThat(uiComponentDataTransfer.getSubstitutionFilterForTopologyTemplate()).isNotEmpty();
341 private Resource buildResourceWithGroups() {
342 return new ResourceBuilder()
348 private Resource buildResourceWithInputs() {
349 return new ResourceBuilder()
354 private Resource buildResourceWithParameter(String field) {
355 ResourceBuilder res = new ResourceBuilder();
358 res.addInput(input1);
361 //res.addProperty(propertyDef);
368 return new ResourceBuilder()
373 private Resource buildResourceWithPolicies() {
374 return new ResourceBuilder()
380 private Service buildServiceWithPolicies() {
381 return new ServiceBuilder()
387 private Set<String> buildExcludedTypesList() {