2e77023757900578a6822a6715692211e5fc36f4
[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
154         assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
155     }
156
157     @Test
158     public void test_createVolumeGroupRequestMapper_for_alaCarte_flow() throws Exception {
159         RequestContext requestContext = new RequestContext();
160         requestContext.setMsoRequestId("msoRequestId");
161
162         ServiceInstance serviceInstance = new ServiceInstance();
163         serviceInstance.setServiceInstanceId("serviceInstanceId");
164
165         ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
166         modelInfoServiceInstance.setModelVersion("modelVersion");
167         serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
168
169         GenericVnf genericVnf = new GenericVnf();
170         genericVnf.setVnfId("vnfId");
171         genericVnf.setVnfName("vnfName");
172         genericVnf.setVnfType("vnfType");
173         serviceInstance.getVnfs().add(genericVnf);
174
175
176         ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
177         modelInfoVfModule.setModelName("modelName");
178         modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
179
180         VolumeGroup volumeGroup = new VolumeGroup();
181         volumeGroup.setVolumeGroupId("volumeGroupId");
182         volumeGroup.setVolumeGroupName("volumeGroupName");
183         volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
184         volumeGroup.setModelInfoVfModule(modelInfoVfModule);
185         serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
186
187         CloudRegion cloudRegion = new CloudRegion();
188         cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
189         cloudRegion.setTenantId("tenantId");
190
191         OrchestrationContext orchestrationContext = new OrchestrationContext();
192         orchestrationContext.setIsRollbackEnabled(true);
193
194         CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
195
196         expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
197         expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
198         expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
199         expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
200         expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
201         expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
202         expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
203         expectedCreateVolumeGroupRequest
204                 .setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
205
206         Map<String, Object> volumeGroupParams = new HashMap<>();
207         volumeGroupParams.put("vnf_id", genericVnf.getVnfId());
208         volumeGroupParams.put("vnf_name", genericVnf.getVnfName());
209         volumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
210         volumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
211
212         expectedCreateVolumeGroupRequest.setVolumeGroupParams(volumeGroupParams);
213
214         expectedCreateVolumeGroupRequest.setSkipAAI(true);
215         expectedCreateVolumeGroupRequest
216                 .setSuppressBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
217         expectedCreateVolumeGroupRequest.setFailIfExists(false);
218
219         MsoRequest msoRequest = new MsoRequest();
220         msoRequest.setRequestId(requestContext.getMsoRequestId());
221         msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
222         expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
223
224         expectedCreateVolumeGroupRequest.setMessageId("messageId");
225         expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
226
227         doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
228         doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
229
230         CreateVolumeGroupRequest actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(
231                 requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, null);
232
233         assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
234     }
235
236     @Test
237     public void test_deleteVolumeGroupHeatIdRequestMapper() throws Exception {
238         this.test_deleteVolumeGroupRequestMapper("heatStackId");
239     }
240
241     @Test
242     public void test_deleteVolumeGroupNoHeatIdRequestMapper() throws Exception {
243         this.test_deleteVolumeGroupRequestMapper(null);
244     }
245
246     private void test_deleteVolumeGroupRequestMapper(String heatStackId) throws Exception {
247         DeleteVolumeGroupRequest expectedDeleteVolumeGroupRequest = new DeleteVolumeGroupRequest();
248
249         CloudRegion cloudRegion = new CloudRegion();
250         cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
251         expectedDeleteVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
252
253         cloudRegion.setTenantId("tenantId");
254         expectedDeleteVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
255
256         VolumeGroup volumeGroup = new VolumeGroup();
257         volumeGroup.setVolumeGroupId("volumeGroupId");
258         expectedDeleteVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
259
260         if (heatStackId != null) {
261             volumeGroup.setHeatStackId("heatStackId");
262             expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getHeatStackId());
263         } else {
264             volumeGroup.setVolumeGroupName("volumeGroupName");
265             expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getVolumeGroupName());
266         }
267
268         expectedDeleteVolumeGroupRequest.setSkipAAI(true);
269
270         MsoRequest msoRequest = new MsoRequest();
271         RequestContext requestContext = new RequestContext();
272         requestContext.setMsoRequestId("msoRequestId");
273         msoRequest.setRequestId(requestContext.getMsoRequestId());
274         ServiceInstance serviceInstance = new ServiceInstance();
275         serviceInstance.setServiceInstanceId("serviceInstanceId");
276         msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
277         expectedDeleteVolumeGroupRequest.setMsoRequest(msoRequest);
278
279         String messageId = "messageId";
280         String endpoint = "endpoint";
281         doReturn(messageId).when(vnfAdapterObjectMapper).getRandomUuid();
282         doReturn(endpoint).when(vnfAdapterObjectMapper).getProperty(isA(String.class));
283         expectedDeleteVolumeGroupRequest.setMessageId(messageId);
284         expectedDeleteVolumeGroupRequest.setNotificationUrl(endpoint + "/VNFAResponse/" + messageId);
285
286         DeleteVolumeGroupRequest actualDeleteVolumeGroupRequest = vnfAdapterObjectMapper
287                 .deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
288
289         assertThat(actualDeleteVolumeGroupRequest, sameBeanAs(expectedDeleteVolumeGroupRequest));
290     }
291
292     @Test
293     public void test_createVolumeGroupParams() throws Exception {
294         GenericVnf genericVnf = new GenericVnf();
295         genericVnf.setVnfId("vnfId");
296         genericVnf.setVnfName("vnfName");
297
298         RequestContext requestContext = new RequestContext();
299
300         VolumeGroup volumeGroup = new VolumeGroup();
301         volumeGroup.setVolumeGroupId("volumeGroupId");
302         volumeGroup.setVolumeGroupName("volumeGroupName");
303
304         String sdncVfModuleQueryResponse = new String(Files
305                 .readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
306
307         Map<String, String> expectedVolumeGroupParams = new HashMap<>();
308         expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
309         expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
310         expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
311         expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
312         expectedVolumeGroupParams.put("paramOne", "paramOneValue");
313         expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
314         expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
315
316         Map<String, Object> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,
317                 genericVnf, volumeGroup, sdncVfModuleQueryResponse);
318
319         assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
320     }
321
322     @Test
323     public void test_createVolumeGroupParams_without_sdncResponse() throws Exception {
324         GenericVnf genericVnf = new GenericVnf();
325         genericVnf.setVnfId("vnfId");
326         genericVnf.setVnfName("vnfName");
327
328         VolumeGroup volumeGroup = new VolumeGroup();
329         volumeGroup.setVolumeGroupId("volumeGroupId");
330         volumeGroup.setVolumeGroupName("volumeGroupName");
331
332         Map<String, String> expectedVolumeGroupParams = new HashMap<>();
333         expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
334         expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
335         expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
336         expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
337         RequestContext requestContext = new RequestContext();
338         Map<String, Object> actualVolumeGroupParams =
339                 vnfAdapterObjectMapper.createVolumeGroupParams(requestContext, genericVnf, volumeGroup, null);
340
341         assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
342     }
343
344     @Test
345     public void test_createVolumeGroupParams_with_user_params() throws Exception {
346         GenericVnf genericVnf = new GenericVnf();
347         genericVnf.setVnfId("vnfId");
348         genericVnf.setVnfName("vnfName");
349
350         RequestContext requestContext = new RequestContext();
351         Map<String, Object> userParamsMap = new HashMap<>();
352         userParamsMap.put("name", "userParamKey");
353         userParamsMap.put("value", "userParamValue");
354         List<Map<String, Object>> userParams = new ArrayList<>();
355         userParams.add(userParamsMap);
356         RequestParameters requestParameters = new RequestParameters();
357         requestParameters.setUserParams(userParams);
358         requestContext.setRequestParameters(requestParameters);
359         VolumeGroup volumeGroup = new VolumeGroup();
360         volumeGroup.setVolumeGroupId("volumeGroupId");
361         volumeGroup.setVolumeGroupName("volumeGroupName");
362
363         String sdncVfModuleQueryResponse = new String(Files
364                 .readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
365
366         Map<String, String> expectedVolumeGroupParams = new HashMap<>();
367         expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
368         expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
369         expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
370         expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
371         expectedVolumeGroupParams.put("paramOne", "paramOneValue");
372         expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
373         expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
374         expectedVolumeGroupParams.put("userParamKey", "userParamValue");
375
376         Map<String, Object> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,
377                 genericVnf, volumeGroup, sdncVfModuleQueryResponse);
378
379         assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
380     }
381
382     @Test
383     public void test_createMsoRequest() {
384         RequestContext requestContext = new RequestContext();
385         requestContext.setMsoRequestId("msoRequestId");
386
387         ServiceInstance serviceInstance = new ServiceInstance();
388         serviceInstance.setServiceInstanceId("serviceInstanceId");
389
390         MsoRequest expectedMsoRequest = new MsoRequest();
391         expectedMsoRequest.setRequestId(requestContext.getMsoRequestId());
392         expectedMsoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
393
394         MsoRequest actualMsoRequest = vnfAdapterObjectMapper.createMsoRequest(requestContext, serviceInstance);
395
396         assertThat(expectedMsoRequest, sameBeanAs(actualMsoRequest));
397     }
398 }