a482da515821301f04fa7dbeeb737d49731b0790
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.client.adapter.vnf.mapper;
22
23 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertThat;
26 import static org.mockito.ArgumentMatchers.isA;
27 import static org.mockito.Mockito.doReturn;
28 import static org.mockito.Mockito.reset;
29 import java.nio.file.Files;
30 import java.nio.file.Paths;
31 import java.util.ArrayList;
32 import java.util.HashMap;
33 import java.util.List;
34 import java.util.Map;
35 import org.junit.After;
36 import org.junit.Before;
37 import org.junit.Test;
38 import org.mockito.MockitoAnnotations;
39 import org.mockito.Spy;
40 import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
41 import org.onap.so.adapters.vnfrest.DeleteVolumeGroupRequest;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
46 import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext;
47 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
48 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
49 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
50 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
51 import org.onap.so.db.catalog.beans.OrchestrationStatus;
52 import org.onap.so.entity.MsoRequest;
53
54 public class VnfAdapterObjectMapperTest {
55     private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/";
56
57     @Spy
58     private VnfAdapterObjectMapper vnfAdapterObjectMapper = new VnfAdapterObjectMapper();
59
60     @Before
61     public void before() {
62         MockitoAnnotations.initMocks(this);
63
64     }
65
66     @After
67     public void after() {
68         reset(vnfAdapterObjectMapper);
69     }
70
71     @Test
72     public void test_createVolumeGroupRequestMapper() throws Exception {
73         RequestContext requestContext = new RequestContext();
74         requestContext.setMsoRequestId("msoRequestId");
75
76         ServiceInstance serviceInstance = new ServiceInstance();
77         serviceInstance.setServiceInstanceId("serviceInstanceId");
78
79         ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
80         modelInfoServiceInstance.setModelVersion("modelVersion");
81         serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
82
83         GenericVnf genericVnf = new GenericVnf();
84         genericVnf.setVnfId("vnfId");
85         genericVnf.setVnfName("vnfName");
86         genericVnf.setVnfType("vnfType");
87         serviceInstance.getVnfs().add(genericVnf);
88
89         ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
90         modelInfoVfModule.setModelName("modelName");
91         modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
92
93         VolumeGroup volumeGroup = new VolumeGroup();
94         volumeGroup.setVolumeGroupId("volumeGroupId");
95         volumeGroup.setVolumeGroupName("volumeGroupName");
96         volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
97         volumeGroup.setModelInfoVfModule(modelInfoVfModule);
98
99         serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
100
101
102         CloudRegion cloudRegion = new CloudRegion();
103         cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
104         cloudRegion.setTenantId("tenantId");
105
106         OrchestrationContext orchestrationContext = new OrchestrationContext();
107         orchestrationContext.setIsRollbackEnabled(true);
108
109         String sdncVfModuleQueryResponse = new String(Files
110                 .readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
111
112         CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
113
114         expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
115         expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
116         expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
117         expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
118         expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
119         expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
120         expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
121         expectedCreateVolumeGroupRequest
122                 .setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
123
124         Map<String, Object> volumeGroupParams = new HashMap<>();
125         volumeGroupParams.put("vnf_id", genericVnf.getVnfId());
126         volumeGroupParams.put("vnf_name", genericVnf.getVnfName());
127         volumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
128         volumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
129         volumeGroupParams.put("paramOne", "paramOneValue");
130         volumeGroupParams.put("paramTwo", "paramTwoValue");
131         volumeGroupParams.put("paramThree", "paramThreeValue");
132         expectedCreateVolumeGroupRequest.setVolumeGroupParams(volumeGroupParams);
133
134         expectedCreateVolumeGroupRequest.setSkipAAI(true);
135         expectedCreateVolumeGroupRequest
136                 .setSuppressBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
137         expectedCreateVolumeGroupRequest.setFailIfExists(false);
138
139         MsoRequest msoRequest = new MsoRequest();
140         msoRequest.setRequestId(requestContext.getMsoRequestId());
141         msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
142         expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
143
144         expectedCreateVolumeGroupRequest.setMessageId("messageId");
145         expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
146
147         doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
148         doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
149
150         CreateVolumeGroupRequest actualCreateVolumeGroupRequest =
151                 vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext, cloudRegion, orchestrationContext,
152                         serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
153         assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
154
155         doReturn("false").when(vnfAdapterObjectMapper).getProperty("mso.bridgeEnabled");
156         actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext,
157                 cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
158         assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
159
160         doReturn(null).when(vnfAdapterObjectMapper).getProperty("mso.bridgeEnabled");
161         expectedCreateVolumeGroupRequest.setEnableBridge(true);
162         actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext,
163                 cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
164         assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
165
166         doReturn("true").when(vnfAdapterObjectMapper).getProperty("mso.bridgeEnabled");
167         expectedCreateVolumeGroupRequest.setEnableBridge(true);
168         actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext,
169                 cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
170         assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
171     }
172
173     @Test
174     public void test_createVolumeGroupRequestMapper_for_alaCarte_flow() throws Exception {
175         RequestContext requestContext = new RequestContext();
176         requestContext.setMsoRequestId("msoRequestId");
177
178         ServiceInstance serviceInstance = new ServiceInstance();
179         serviceInstance.setServiceInstanceId("serviceInstanceId");
180
181         ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
182         modelInfoServiceInstance.setModelVersion("modelVersion");
183         serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
184
185         GenericVnf genericVnf = new GenericVnf();
186         genericVnf.setVnfId("vnfId");
187         genericVnf.setVnfName("vnfName");
188         genericVnf.setVnfType("vnfType");
189         serviceInstance.getVnfs().add(genericVnf);
190
191
192         ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
193         modelInfoVfModule.setModelName("modelName");
194         modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
195
196         VolumeGroup volumeGroup = new VolumeGroup();
197         volumeGroup.setVolumeGroupId("volumeGroupId");
198         volumeGroup.setVolumeGroupName("volumeGroupName");
199         volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
200         volumeGroup.setModelInfoVfModule(modelInfoVfModule);
201         serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
202
203         CloudRegion cloudRegion = new CloudRegion();
204         cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
205         cloudRegion.setTenantId("tenantId");
206
207         OrchestrationContext orchestrationContext = new OrchestrationContext();
208         orchestrationContext.setIsRollbackEnabled(true);
209
210         CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
211
212         expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
213         expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
214         expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
215         expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
216         expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
217         expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
218         expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
219         expectedCreateVolumeGroupRequest
220                 .setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
221
222         Map<String, Object> volumeGroupParams = new HashMap<>();
223         volumeGroupParams.put("vnf_id", genericVnf.getVnfId());
224         volumeGroupParams.put("vnf_name", genericVnf.getVnfName());
225         volumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
226         volumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
227
228         expectedCreateVolumeGroupRequest.setVolumeGroupParams(volumeGroupParams);
229
230         expectedCreateVolumeGroupRequest.setSkipAAI(true);
231         expectedCreateVolumeGroupRequest
232                 .setSuppressBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
233         expectedCreateVolumeGroupRequest.setFailIfExists(false);
234
235         MsoRequest msoRequest = new MsoRequest();
236         msoRequest.setRequestId(requestContext.getMsoRequestId());
237         msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
238         expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
239
240         expectedCreateVolumeGroupRequest.setMessageId("messageId");
241         expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
242
243         doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
244         doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
245
246         CreateVolumeGroupRequest actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(
247                 requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, null);
248
249         assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
250     }
251
252     @Test
253     public void test_deleteVolumeGroupHeatIdRequestMapper() throws Exception {
254         this.test_deleteVolumeGroupRequestMapper("heatStackId");
255     }
256
257     @Test
258     public void test_deleteVolumeGroupNoHeatIdRequestMapper() throws Exception {
259         this.test_deleteVolumeGroupRequestMapper(null);
260     }
261
262     private void test_deleteVolumeGroupRequestMapper(String heatStackId) throws Exception {
263         DeleteVolumeGroupRequest expectedDeleteVolumeGroupRequest = new DeleteVolumeGroupRequest();
264
265         CloudRegion cloudRegion = new CloudRegion();
266         cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
267         expectedDeleteVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
268
269         cloudRegion.setTenantId("tenantId");
270         expectedDeleteVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
271
272         VolumeGroup volumeGroup = new VolumeGroup();
273         volumeGroup.setVolumeGroupId("volumeGroupId");
274         expectedDeleteVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
275
276         if (heatStackId != null) {
277             volumeGroup.setHeatStackId("heatStackId");
278             expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getHeatStackId());
279         } else {
280             volumeGroup.setVolumeGroupName("volumeGroupName");
281             expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getVolumeGroupName());
282         }
283
284         expectedDeleteVolumeGroupRequest.setSkipAAI(true);
285
286         MsoRequest msoRequest = new MsoRequest();
287         RequestContext requestContext = new RequestContext();
288         requestContext.setMsoRequestId("msoRequestId");
289         msoRequest.setRequestId(requestContext.getMsoRequestId());
290         ServiceInstance serviceInstance = new ServiceInstance();
291         serviceInstance.setServiceInstanceId("serviceInstanceId");
292         msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
293         expectedDeleteVolumeGroupRequest.setMsoRequest(msoRequest);
294
295         String messageId = "messageId";
296         String endpoint = "endpoint";
297         doReturn(messageId).when(vnfAdapterObjectMapper).getRandomUuid();
298         doReturn(endpoint).when(vnfAdapterObjectMapper).getProperty(isA(String.class));
299         expectedDeleteVolumeGroupRequest.setMessageId(messageId);
300         expectedDeleteVolumeGroupRequest.setNotificationUrl(endpoint + "/VNFAResponse/" + messageId);
301
302         DeleteVolumeGroupRequest actualDeleteVolumeGroupRequest = vnfAdapterObjectMapper
303                 .deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
304
305         assertThat(actualDeleteVolumeGroupRequest, sameBeanAs(expectedDeleteVolumeGroupRequest));
306     }
307
308     @Test
309     public void test_createVolumeGroupParams() throws Exception {
310         GenericVnf genericVnf = new GenericVnf();
311         genericVnf.setVnfId("vnfId");
312         genericVnf.setVnfName("vnfName");
313
314         RequestContext requestContext = new RequestContext();
315
316         VolumeGroup volumeGroup = new VolumeGroup();
317         volumeGroup.setVolumeGroupId("volumeGroupId");
318         volumeGroup.setVolumeGroupName("volumeGroupName");
319
320         String sdncVfModuleQueryResponse = new String(Files
321                 .readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
322
323         Map<String, String> expectedVolumeGroupParams = new HashMap<>();
324         expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
325         expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
326         expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
327         expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
328         expectedVolumeGroupParams.put("paramOne", "paramOneValue");
329         expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
330         expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
331
332         Map<String, Object> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,
333                 genericVnf, volumeGroup, sdncVfModuleQueryResponse);
334
335         assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
336     }
337
338     @Test
339     public void test_createVolumeGroupParams_without_sdncResponse() throws Exception {
340         GenericVnf genericVnf = new GenericVnf();
341         genericVnf.setVnfId("vnfId");
342         genericVnf.setVnfName("vnfName");
343
344         VolumeGroup volumeGroup = new VolumeGroup();
345         volumeGroup.setVolumeGroupId("volumeGroupId");
346         volumeGroup.setVolumeGroupName("volumeGroupName");
347
348         Map<String, String> expectedVolumeGroupParams = new HashMap<>();
349         expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
350         expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
351         expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
352         expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
353         RequestContext requestContext = new RequestContext();
354         Map<String, Object> actualVolumeGroupParams =
355                 vnfAdapterObjectMapper.createVolumeGroupParams(requestContext, genericVnf, volumeGroup, null);
356
357         assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
358     }
359
360     @Test
361     public void test_createVolumeGroupParams_with_user_params() throws Exception {
362         GenericVnf genericVnf = new GenericVnf();
363         genericVnf.setVnfId("vnfId");
364         genericVnf.setVnfName("vnfName");
365
366         RequestContext requestContext = new RequestContext();
367         Map<String, Object> userParamsMap = new HashMap<>();
368         userParamsMap.put("name", "userParamKey");
369         userParamsMap.put("value", "userParamValue");
370         List<Map<String, Object>> userParams = new ArrayList<>();
371         userParams.add(userParamsMap);
372         RequestParameters requestParameters = new RequestParameters();
373         requestParameters.setUserParams(userParams);
374         requestContext.setRequestParameters(requestParameters);
375         VolumeGroup volumeGroup = new VolumeGroup();
376         volumeGroup.setVolumeGroupId("volumeGroupId");
377         volumeGroup.setVolumeGroupName("volumeGroupName");
378
379         String sdncVfModuleQueryResponse = new String(Files
380                 .readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
381
382         Map<String, String> expectedVolumeGroupParams = new HashMap<>();
383         expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
384         expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
385         expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
386         expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
387         expectedVolumeGroupParams.put("paramOne", "paramOneValue");
388         expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
389         expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
390         expectedVolumeGroupParams.put("userParamKey", "userParamValue");
391
392         Map<String, Object> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,
393                 genericVnf, volumeGroup, sdncVfModuleQueryResponse);
394
395         assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
396     }
397
398     @Test
399     public void test_createMsoRequest() {
400         RequestContext requestContext = new RequestContext();
401         requestContext.setMsoRequestId("msoRequestId");
402
403         ServiceInstance serviceInstance = new ServiceInstance();
404         serviceInstance.setServiceInstanceId("serviceInstanceId");
405
406         MsoRequest expectedMsoRequest = new MsoRequest();
407         expectedMsoRequest.setRequestId(requestContext.getMsoRequestId());
408         expectedMsoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
409
410         MsoRequest actualMsoRequest = vnfAdapterObjectMapper.createMsoRequest(requestContext, serviceInstance);
411
412         assertThat(expectedMsoRequest, sameBeanAs(actualMsoRequest));
413     }
414 }