2 * Copyright © 2016-2019 European Support Limited
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 package org.openecomp.sdc.be.datamodel;
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;
48 import java.util.Arrays;
49 import java.util.Collections;
50 import java.util.HashMap;
51 import java.util.List;
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;
60 public class UiComponentDataConverterTest {
62 private PolicyDefinition policy1, policy2;
63 private GroupDefinition group1, group2;
64 private InputDefinition input1;
65 private PropertyDefinition propertyDef;
66 private InterfaceDefinition interfaceDef;
69 private static GroupTypeBusinessLogic groupTypeBusinessLogic;
70 private static PolicyTypeBusinessLogic policyTypeBusinessLogic;
71 private static UiComponentDataConverter uiComponentDataConverter;
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";
78 public static void initClass() {
79 groupTypeBusinessLogic = mock(GroupTypeBusinessLogic.class);
80 policyTypeBusinessLogic = mock(PolicyTypeBusinessLogic.class);
81 uiComponentDataConverter = new UiComponentDataConverter(groupTypeBusinessLogic, policyTypeBusinessLogic);
85 public void setUp() throws Exception {
86 policy1 = PolicyDefinitionBuilder.create()
92 policy2 = PolicyDefinitionBuilder.create()
97 group1 = GroupDefinitionBuilder.create()
98 .setUniqueId("group1")
102 group2 = GroupDefinitionBuilder.create()
103 .setUniqueId("group2")
108 input1 = InputsBuilder.create()
110 .setPropertyId("inputid")
113 propertyDef = new PropertyDataDefinitionBuilder()
117 .setUniqueId("property1")
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());
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);
143 public void getUiDataTransferFromResourceByParams_policies_noPoliciesForResource() {
144 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(new Resource(), Collections.singletonList("policies"));
145 assertThat(componentDTO.getPolicies()).isEmpty();
149 public void getUiDataTransferFromResourceByParams_All() {
150 Resource resourceWithGroups = buildResourceWithGroups();
151 Resource resourceWithInputs = buildResourceWithInputs();
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"));
161 UiComponentDataTransfer componentDTO8 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("inputs"));
162 UiComponentDataTransfer componentDTO81 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithInputs, Collections.singletonList("inputs"));
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"));
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"));
177 UiComponentDataTransfer componentDTO21= uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesRelations"));
178 UiComponentDataTransfer componentDTO20 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("deploymentArtifacts"));
180 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("groups"));
181 assertThat(componentDTO.getGroups()).isEqualTo(resourceWithGroups.getGroups());
185 public void getUiDataTransferFromServiceByParams_policies_noPoliciesForResource() {
186 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("policies"));
187 assertThat(componentDTO.getPolicies()).isEmpty();
191 public void getUiDataTransferFromServiceByParams_SERVICE_API_ARTIFACTS() {
192 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("serviceApiArtifacts"));
193 assertThat(componentDTO.getArtifacts()).isNull();
197 public void getUiDataTransferFromServiceByParams_FORWARDING_PATHS() {
198 UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("forwardingPaths"));
199 assertThat(componentDTO.getForwardingPaths()).isEmpty();
203 public void getUiDataTransferFromServiceByParams_METADATA() {
204 UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("metadata"));
205 assertThat(componentDTO.getMetadata().getNamingPolicy()).isEqualTo("");
209 public void getUiDataTransferFromServiceByParams_INTERFACES() {
210 UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("interfaces"));
211 assertThat(componentDTO.getInterfaces()).isEmpty();
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()]));
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()]));
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);
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");
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");
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();
268 public void testGetDeclaredPolicies() {
269 ComponentInstanceProperty property = new ComponentInstanceProperty();
270 property.setName(PROPERTY_UID);
272 GetPolicyValueDataDefinition getPolicy = new GetPolicyValueDataDefinition();
273 getPolicy.setPolicyId(PROPERTY_UID);
274 getPolicy.setPropertyName(PROPERTY_UID);
275 property.setGetPolicyValues(Collections.singletonList(getPolicy));
277 Map<String, List<ComponentInstanceProperty>> instanceProperties = new HashMap<>();
278 instanceProperties.put(COMPONENT_UID, Collections.singletonList(property));
280 Resource resource = new ResourceBuilder().build();
281 resource.setComponentInstancesProperties(instanceProperties);
283 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
284 Collections.singletonList("policies"));
286 assertThat(CollectionUtils.isNotEmpty(uiComponentDataTransfer.getPolicies()));
290 public void testGetNodeFilterEmptyList() {
291 Resource resource = new ResourceBuilder().build();
292 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
293 Collections.singletonList("nodeFilter"));
295 assertThat(MapUtils.isEmpty(uiComponentDataTransfer.getNodeFilter()));
299 public void testGetNodeFilter() {
300 CINodeFilterDataDefinition nodeFilter = new CINodeFilterDataDefinition();
301 nodeFilter.setID(NODE_FILTER_UID);
303 Map<String, CINodeFilterDataDefinition> nodeFilterMap = new HashMap<>();
304 nodeFilterMap.put(NODE_FILTER_UID, nodeFilter);
306 Resource resource = new ResourceBuilder().build();
307 resource.setNodeFilterComponents(nodeFilterMap);
309 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
310 Collections.singletonList("nodeFilter"));
312 assertThat(MapUtils.isNotEmpty(uiComponentDataTransfer.getNodeFilter()));
315 private Resource buildResourceWithGroups() {
316 return new ResourceBuilder()
322 private Resource buildResourceWithInputs() {
323 return new ResourceBuilder()
328 private Resource buildResourceWithParameter(String field) {
329 ResourceBuilder res = new ResourceBuilder();
332 res.addInput(input1);
335 //res.addProperty(propertyDef);
342 return new ResourceBuilder()
347 private Resource buildResourceWithPolicies() {
348 return new ResourceBuilder()
354 private Service buildServiceWithPolicies() {
355 return new ServiceBuilder()
361 private Set<String> buildExcludedTypesList() {