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.junit.Assert.assertEquals;
23 import static org.hibernate.validator.internal.util.CollectionHelper.asSet;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertTrue;
26 import static org.mockito.Mockito.mock;
27 import static org.mockito.Mockito.when;
29 import java.util.Arrays;
30 import java.util.Collections;
31 import java.util.HashMap;
32 import java.util.List;
35 import org.junit.Before;
36 import org.junit.BeforeClass;
37 import org.junit.Test;
38 import org.openecomp.sdc.be.components.impl.GroupTypeBusinessLogic;
39 import org.openecomp.sdc.be.components.impl.PolicyTypeBusinessLogic;
40 import org.openecomp.sdc.be.components.utils.GroupDefinitionBuilder;
41 import org.openecomp.sdc.be.components.utils.InputsBuilder;
42 import org.openecomp.sdc.be.components.utils.PolicyDefinitionBuilder;
43 import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
44 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
45 import org.openecomp.sdc.be.components.utils.ServiceBuilder;
46 import org.openecomp.sdc.be.datamodel.utils.UiComponentDataConverter;
47 import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition;
48 import org.openecomp.sdc.be.datatypes.elements.GetPolicyValueDataDefinition;
49 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
50 import org.openecomp.sdc.be.datatypes.elements.RequirementSubstitutionFilterPropertyDataDefinition;
51 import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterDataDefinition;
52 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
53 import org.openecomp.sdc.be.model.GroupDefinition;
54 import org.openecomp.sdc.be.model.InputDefinition;
55 import org.openecomp.sdc.be.model.InterfaceDefinition;
56 import org.openecomp.sdc.be.model.OutputDefinition;
57 import org.openecomp.sdc.be.model.PolicyDefinition;
58 import org.openecomp.sdc.be.model.PropertyDefinition;
59 import org.openecomp.sdc.be.model.Resource;
60 import org.openecomp.sdc.be.model.Service;
61 import org.openecomp.sdc.be.ui.model.UIConstraint;
62 import org.openecomp.sdc.be.ui.model.UiComponentDataTransfer;
63 import org.openecomp.sdc.be.ui.model.UiComponentMetadata;
64 import org.openecomp.sdc.be.ui.model.UiServiceDataTransfer;
66 public class UiComponentDataConverterTest {
68 private PolicyDefinition policy1, policy2;
69 private GroupDefinition group1, group2;
70 private InputDefinition input1;
71 private OutputDefinition output;
72 private PropertyDefinition propertyDef;
73 private InterfaceDefinition interfaceDef;
76 private static GroupTypeBusinessLogic groupTypeBusinessLogic;
77 private static PolicyTypeBusinessLogic policyTypeBusinessLogic;
78 private static UiComponentDataConverter uiComponentDataConverter;
80 private static final String PROPERTY_UID = "propertyUid";
81 private static final String NODE_FILTER_UID = "nodeFilterUid";
82 private static final String SUBSTITUTION_FILTER_UID = "substitutionFilterUid";
83 private static final String COMPONENT_UID = "componentUid";
86 public static void initClass() {
87 groupTypeBusinessLogic = mock(GroupTypeBusinessLogic.class);
88 policyTypeBusinessLogic = mock(PolicyTypeBusinessLogic.class);
89 uiComponentDataConverter = new UiComponentDataConverter(groupTypeBusinessLogic, policyTypeBusinessLogic);
93 public void setUp() throws Exception {
94 policy1 = PolicyDefinitionBuilder.create()
100 policy2 = PolicyDefinitionBuilder.create()
105 group1 = GroupDefinitionBuilder.create()
106 .setUniqueId("group1")
110 group2 = GroupDefinitionBuilder.create()
111 .setUniqueId("group2")
116 input1 = InputsBuilder.create()
118 .setPropertyId("inputid")
121 propertyDef = new PropertyDataDefinitionBuilder()
125 .setUniqueId("property1")
132 public void getUiDataTransferFromResourceByParams_groups_allGroups() {
133 Resource resourceWithGroups = buildResourceWithGroups();
134 UiComponentDataTransfer componentDTO1 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("PROPERTIES"));
135 UiComponentDataTransfer componentDTO2 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("properties"));
136 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("groups"));
137 assertThat(componentDTO.getGroups()).isEqualTo(resourceWithGroups.getGroups());
141 public void getUiDataTransferFromResourceByParams_groups_excludedGroups() {
142 Resource resourceWithGroups = buildResourceWithGroups();
143 when(groupTypeBusinessLogic.getExcludedGroupTypes("VFC")).thenReturn(buildExcludedTypesList());
144 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("nonExcludedGroups"));
145 List<GroupDefinition> groups = componentDTO.getGroups();
146 assertThat(groups.size()).isEqualTo(1);
147 assertThat(groups.get(0)).isEqualTo(group2);
151 public void getUiDataTransferFromResourceByParams_policies_noPoliciesForResource() {
152 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(new Resource(), Collections.singletonList("policies"));
153 assertThat(componentDTO.getPolicies()).isEmpty();
157 public void getUiDataTransferFromResourceByParams_All() {
158 Resource resourceWithGroups = buildResourceWithGroups();
159 Resource resourceWithInputs = buildResourceWithInputs();
160 Resource resourceWithOutputs = buildResourceWithOutputs();
162 UiComponentDataTransfer componentDTO1 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("PROPERTIES"));
163 UiComponentDataTransfer componentDTO2 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("properties"));
164 UiComponentDataTransfer componentDTO3 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("interfaces"));
165 UiComponentDataTransfer componentDTO4 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("attributes"));
166 UiComponentDataTransfer componentDTO5 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("metadata"));
167 UiComponentDataTransfer componentDTO6 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("derivedFrom"));
168 UiComponentDataTransfer componentDTO7 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("additionalInformation"));
170 UiComponentDataTransfer componentDTO8 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("inputs"));
171 UiComponentDataTransfer componentDTO81 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithInputs, Collections.singletonList("inputs"));
172 UiComponentDataTransfer componentDTO82 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithOutputs, Collections.singletonList("outputs"));
174 UiComponentDataTransfer componentDTO9 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("users"));
175 UiComponentDataTransfer componentDTO10 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstances"));
176 UiComponentDataTransfer componentDTO11 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesProperties"));
177 UiComponentDataTransfer componentDTO12 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("capabilities"));
178 UiComponentDataTransfer componentDTO13 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("requirements"));
179 UiComponentDataTransfer componentDTO14 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("allVersions"));
180 UiComponentDataTransfer componentDTO15 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("artifacts"));
182 UiComponentDataTransfer componentDTO16 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("interfaces"));
183 UiComponentDataTransfer componentDTO17 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesAttributes"));
184 UiComponentDataTransfer componentDTO18= uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesInputs"));
185 UiComponentDataTransfer componentDTO19 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("toscaArtifacts"));
187 UiComponentDataTransfer componentDTO21= uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("componentInstancesRelations"));
188 UiComponentDataTransfer componentDTO20 = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("deploymentArtifacts"));
190 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithGroups, Collections.singletonList("groups"));
191 assertThat(componentDTO.getGroups()).isEqualTo(resourceWithGroups.getGroups());
195 public void getUiDataTransferFromServiceByParams_policies_noPoliciesForResource() {
196 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("policies"));
197 assertThat(componentDTO.getPolicies()).isEmpty();
201 public void getUiDataTransferFromServiceByParams_SERVICE_API_ARTIFACTS() {
202 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("serviceApiArtifacts"));
203 assertThat(componentDTO.getArtifacts()).isNull();
207 public void getUiDataTransferFromServiceByParams_FORWARDING_PATHS() {
208 UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("forwardingPaths"));
209 assertThat(componentDTO.getForwardingPaths()).isEmpty();
213 public void getUiDataTransferFromServiceByParams_METADATA() {
214 UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("metadata"));
215 assertThat(componentDTO.getMetadata().getNamingPolicy()).isEmpty();
219 public void getUiDataTransferFromServiceByParams_INTERFACES() {
220 UiServiceDataTransfer componentDTO = (UiServiceDataTransfer) uiComponentDataConverter.getUiDataTransferFromServiceByParams(new Service(), Collections.singletonList("interfaces"));
221 assertThat(componentDTO.getInterfaces()).isEmpty();
225 public void getUiDataTransferFromResourceByParams_policies() {
226 Resource resourceWithPolicies = buildResourceWithPolicies();
227 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithPolicies, Collections.singletonList("policies"));
228 List<PolicyDefinition> expectedPolicies = resourceWithPolicies.resolvePoliciesList();
229 assertThat(componentDTO.getPolicies()).containsExactlyInAnyOrder((PolicyDefinition[]) expectedPolicies.toArray(new PolicyDefinition[expectedPolicies.size()]));
233 public void getUiDataTransferFromServiceByParams_policies() {
234 Service resourceWithPolicies = buildServiceWithPolicies();
235 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromServiceByParams(resourceWithPolicies, Collections.singletonList("policies"));
236 List<PolicyDefinition> expectedPolicies = resourceWithPolicies.resolvePoliciesList();
237 assertThat(componentDTO.getPolicies()).containsExactlyInAnyOrder((PolicyDefinition[]) expectedPolicies.toArray(new PolicyDefinition[expectedPolicies.size()]));
241 public void getUiDataTransferFromResourceByParams_policies_excludedPolicies() {
242 Resource resourceWithPolicies = buildResourceWithPolicies();
243 when(policyTypeBusinessLogic.getExcludedPolicyTypes("VFC")).thenReturn(buildExcludedTypesList());
244 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resourceWithPolicies, Collections.singletonList("nonExcludedPolicies"));
245 List<PolicyDefinition> policies = componentDTO.getPolicies();
246 assertThat(policies.size()).isEqualTo(1);
247 assertThat(policies.get(0)).isEqualTo(policy2);
251 public void convertToUiComponentMetadataTestResource() {
252 Resource resourceWithPolicies = buildResourceWithPolicies();
253 when(policyTypeBusinessLogic.getExcludedPolicyTypes("VFC")).thenReturn(buildExcludedTypesList());
254 UiComponentMetadata componentMd = uiComponentDataConverter.convertToUiComponentMetadata(resourceWithPolicies);
255 assertThat(componentMd.getComponentType().getValue()).isEqualTo("Resource");
260 public void convertToUiComponentMetadataTestService() {
261 Service resourceWithPolicies = buildServiceWithPolicies();
262 when(policyTypeBusinessLogic.getExcludedPolicyTypes("VFC")).thenReturn(buildExcludedTypesList());
263 UiComponentMetadata componentMd = uiComponentDataConverter.convertToUiComponentMetadata(resourceWithPolicies);
264 assertThat(componentMd.getComponentType().getValue()).isEqualTo("Service");
268 public void getResourceWithoutGroupsAndPolicies_returnsEmptyLists() {
269 Resource resource = new ResourceBuilder().build();
270 UiComponentDataTransfer componentDTO = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource, Arrays.asList("nonExcludedPolicies", "nonExcludedGroups"));
271 List<PolicyDefinition> policies = componentDTO.getPolicies();
272 assertThat(policies.size()).isZero();
273 List<GroupDefinition> groups = componentDTO.getGroups();
274 assertThat(groups.size()).isZero();
278 public void testGetDeclaredPolicies() {
279 ComponentInstanceProperty property = new ComponentInstanceProperty();
280 property.setName(PROPERTY_UID);
282 GetPolicyValueDataDefinition getPolicy = new GetPolicyValueDataDefinition();
283 getPolicy.setPolicyId(PROPERTY_UID);
284 getPolicy.setPropertyName(PROPERTY_UID);
285 property.setGetPolicyValues(Collections.singletonList(getPolicy));
287 Map<String, List<ComponentInstanceProperty>> instanceProperties = new HashMap<>();
288 instanceProperties.put(COMPONENT_UID, Collections.singletonList(property));
290 Resource resource = new ResourceBuilder().build();
291 resource.setComponentInstancesProperties(instanceProperties);
293 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
294 Collections.singletonList("policies"));
296 assertThat(uiComponentDataTransfer.getPolicies()).isNotEmpty();
300 public void testGetNodeFilterEmptyList() {
301 Resource resource = new ResourceBuilder().build();
302 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
303 Collections.singletonList("nodeFilter"));
305 assertThat(uiComponentDataTransfer.getNodeFilter()).isNull();
309 public void testGetNodeFilter() {
310 CINodeFilterDataDefinition nodeFilter = new CINodeFilterDataDefinition();
311 nodeFilter.setID(NODE_FILTER_UID);
313 Map<String, CINodeFilterDataDefinition> nodeFilterMap = new HashMap<>();
314 nodeFilterMap.put(NODE_FILTER_UID, nodeFilter);
316 Resource resource = new ResourceBuilder().build();
317 resource.setNodeFilterComponents(nodeFilterMap);
319 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
320 Collections.singletonList("nodeFilter"));
322 assertThat(uiComponentDataTransfer.getNodeFilterforNode()).isNotEmpty();
326 public void testGetSubstitutionFilterEmptyList() {
327 Resource resource = new ResourceBuilder().build();
328 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
329 Collections.singletonList("substitutionFilter"));
331 assertThat(uiComponentDataTransfer.getSubstitutionFilters()).isNull();
335 public void testGetSubstitutionFilter() {
336 SubstitutionFilterDataDefinition substitutionFilter = new SubstitutionFilterDataDefinition();
337 substitutionFilter.setID(SUBSTITUTION_FILTER_UID);
339 final ListDataDefinition<RequirementSubstitutionFilterPropertyDataDefinition> expectedPropertyFilters = new ListDataDefinition<>();
340 var filter1 = new RequirementSubstitutionFilterPropertyDataDefinition();
341 filter1.setName("filter1");
342 filter1.setConstraints(Collections.singletonList("constraint1: {equal: testvalue1}\n"));
343 expectedPropertyFilters.add(filter1);
345 var filter2 = new RequirementSubstitutionFilterPropertyDataDefinition();
346 filter2.setName("filter2");
347 filter2.setConstraints(Collections.singletonList("constraint2: {equal: testvalue2}\n"));
348 expectedPropertyFilters.add(filter2);
350 substitutionFilter.setProperties(expectedPropertyFilters);
352 Resource resource = new ResourceBuilder().build();
353 resource.setSubstitutionFilter(substitutionFilter);
355 UiComponentDataTransfer uiComponentDataTransfer = uiComponentDataConverter.getUiDataTransferFromResourceByParams(resource,
356 Collections.singletonList("substitutionFilter"));
357 assertThat(uiComponentDataTransfer.getSubstitutionFilters()).isNotNull();
359 List<UIConstraint> propertyFilters = uiComponentDataTransfer.getSubstitutionFilters().getProperties();
360 assertFalse(propertyFilters.isEmpty());
361 assertEquals(propertyFilters.size(), substitutionFilter.getProperties().getListToscaDataDefinition().size());
363 verifyPropertyFilters(propertyFilters.get(0), "constraint1", "testvalue1", "static", "equal");
364 verifyPropertyFilters(propertyFilters.get(1), "constraint2", "testvalue2", "static", "equal");
367 private void verifyPropertyFilters(UIConstraint uiConstraint, String propertyName, String value, String sourceType, String operator){
368 assertEquals(propertyName, uiConstraint.getServicePropertyName());
369 assertEquals(value, uiConstraint.getValue());
370 assertEquals(sourceType, uiConstraint.getSourceType());
371 assertEquals(operator, uiConstraint.getConstraintOperator());
374 private Resource buildResourceWithGroups() {
375 return new ResourceBuilder()
381 private Resource buildResourceWithInputs() {
382 return new ResourceBuilder()
387 private Resource buildResourceWithOutputs() {
388 return new ResourceBuilder()
393 private Resource buildResourceWithParameter(final String field) {
394 final ResourceBuilder res = new ResourceBuilder();
397 res.addInput(input1);
400 res.addOutput(output);
403 //res.addProperty(propertyDef);
408 return new ResourceBuilder()
414 private Resource buildResourceWithPolicies() {
415 return new ResourceBuilder()
421 private Service buildServiceWithPolicies() {
422 return new ServiceBuilder()
428 private Set<String> buildExcludedTypesList() {