Merge 'origin/casablanca' into master
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / client / adapter / vnf / mapper / VnfAdapterObjectMapperTest.java
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
30 import java.nio.file.Files;
31 import java.nio.file.Paths;
32 import java.util.ArrayList;
33 import java.util.HashMap;
34 import java.util.List;
35 import java.util.Map;
36
37 import org.junit.After;
38 import org.junit.Before;
39 import org.junit.Ignore;
40 import org.junit.Test;
41 import org.mockito.MockitoAnnotations;
42 import org.mockito.Spy;
43 import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
44 import org.onap.so.adapters.vnfrest.DeleteVolumeGroupRequest;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
48 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
49 import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext;
50 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
51 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
52 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
53 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
54 import org.onap.so.db.catalog.beans.OrchestrationStatus;
55 import org.onap.so.entity.MsoRequest;
56
57 public class VnfAdapterObjectMapperTest {
58         private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/";
59
60         @Spy
61         private VnfAdapterObjectMapper vnfAdapterObjectMapper = new VnfAdapterObjectMapper();
62         
63         @Before
64         public void before() {
65                 MockitoAnnotations.initMocks(this);
66
67         }
68         
69         @After
70         public void after() {
71                 reset(vnfAdapterObjectMapper);
72         }
73         
74         @Test
75         @Ignore
76         public void test_createVolumeGroupRequestMapper() throws Exception {
77                 RequestContext requestContext = new RequestContext();
78                 requestContext.setMsoRequestId("msoRequestId");
79                 
80                 ServiceInstance serviceInstance = new ServiceInstance();
81                 serviceInstance.setServiceInstanceId("serviceInstanceId");
82                 
83                 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
84                 modelInfoServiceInstance.setModelVersion("modelVersion");
85                 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
86                 
87                 GenericVnf genericVnf = new GenericVnf();
88                 genericVnf.setVnfId("vnfId");
89                 genericVnf.setVnfName("vnfName");
90                 genericVnf.setVnfType("vnfType");
91                 serviceInstance.getVnfs().add(genericVnf);
92                 
93                 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
94                 modelInfoVfModule.setModelName("modelName");
95                 modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
96                 
97                 VolumeGroup volumeGroup = new VolumeGroup();
98                 volumeGroup.setVolumeGroupId("volumeGroupId");
99                 volumeGroup.setVolumeGroupName("volumeGroupName");
100                 volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
101                 volumeGroup.setModelInfoVfModule(modelInfoVfModule);
102
103                 serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
104                 
105                 
106                 CloudRegion cloudRegion = new CloudRegion();
107                 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
108                 cloudRegion.setTenantId("tenantId");
109                 
110                 OrchestrationContext orchestrationContext = new OrchestrationContext();
111                 orchestrationContext.setIsRollbackEnabled(true);
112                 
113                 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
114                 
115                 CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
116                 
117                 expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
118                 expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
119                 expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
120                 expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
121                 expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
122                 expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
123                 expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
124                 expectedCreateVolumeGroupRequest.setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
125                 
126                 Map<String, String> volumeGroupParams = new HashMap<>();
127                 volumeGroupParams.put("vnf_id", genericVnf.getVnfId());
128                 volumeGroupParams.put("vnf_name", genericVnf.getVnfName());
129                 volumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
130                 volumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
131                 volumeGroupParams.put("paramOne", "paramOneValue");
132                 volumeGroupParams.put("paramTwo", "paramTwoValue");
133                 volumeGroupParams.put("paramThree", "paramThreeValue");
134                 expectedCreateVolumeGroupRequest.setVolumeGroupParams(volumeGroupParams);
135                 
136                 expectedCreateVolumeGroupRequest.setSkipAAI(true);
137                 expectedCreateVolumeGroupRequest.setSuppressBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
138                 expectedCreateVolumeGroupRequest.setFailIfExists(true);
139                 
140                 MsoRequest msoRequest = new MsoRequest();
141                 msoRequest.setRequestId(requestContext.getMsoRequestId());
142                 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
143                 expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
144                 
145                 expectedCreateVolumeGroupRequest.setMessageId("messageId");
146                 expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
147                 
148                 doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
149                 doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
150                 
151                 CreateVolumeGroupRequest actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
152                 
153                 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
154         }
155
156         @Test
157         public void test_createVolumeGroupRequestMapper_for_alaCarte_flow() throws Exception {
158                 RequestContext requestContext = new RequestContext();
159                 requestContext.setMsoRequestId("msoRequestId");
160
161                 ServiceInstance serviceInstance = new ServiceInstance();
162                 serviceInstance.setServiceInstanceId("serviceInstanceId");
163
164                 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
165                 modelInfoServiceInstance.setModelVersion("modelVersion");
166                 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
167
168                 GenericVnf genericVnf = new GenericVnf();
169                 genericVnf.setVnfId("vnfId");
170                 genericVnf.setVnfName("vnfName");
171                 genericVnf.setVnfType("vnfType");
172                 serviceInstance.getVnfs().add(genericVnf);
173
174
175                 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
176                 modelInfoVfModule.setModelName("modelName");
177                 modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
178                 
179                 VolumeGroup volumeGroup = new VolumeGroup();
180                 volumeGroup.setVolumeGroupId("volumeGroupId");
181                 volumeGroup.setVolumeGroupName("volumeGroupName");
182                 volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
183                 volumeGroup.setModelInfoVfModule(modelInfoVfModule);
184                 serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
185
186                 CloudRegion cloudRegion = new CloudRegion();
187                 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
188                 cloudRegion.setTenantId("tenantId");
189
190                 OrchestrationContext orchestrationContext = new OrchestrationContext();
191                 orchestrationContext.setIsRollbackEnabled(true);
192
193                 CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
194
195                 expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
196                 expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
197                 expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
198                 expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
199                 expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
200                 expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
201                 expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
202                 expectedCreateVolumeGroupRequest.setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
203
204                 Map<String, String> volumeGroupParams = new HashMap<>();
205                 volumeGroupParams.put("vnf_id", genericVnf.getVnfId());
206                 volumeGroupParams.put("vnf_name", genericVnf.getVnfName());
207                 volumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
208                 volumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
209
210                 expectedCreateVolumeGroupRequest.setVolumeGroupParams(volumeGroupParams);
211
212                 expectedCreateVolumeGroupRequest.setSkipAAI(true);
213                 expectedCreateVolumeGroupRequest.setSuppressBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
214                 expectedCreateVolumeGroupRequest.setFailIfExists(true);
215
216                 MsoRequest msoRequest = new MsoRequest();
217                 msoRequest.setRequestId(requestContext.getMsoRequestId());
218                 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
219                 expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
220
221                 expectedCreateVolumeGroupRequest.setMessageId("messageId");
222                 expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
223
224                 doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
225                 doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
226
227                 CreateVolumeGroupRequest actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, null);
228
229                 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
230         }
231         
232         @Test
233         public void test_deleteVolumeGroupHeatIdRequestMapper() throws Exception{
234                 this.test_deleteVolumeGroupRequestMapper("heatStackId");
235         }
236
237         @Test
238         public void test_deleteVolumeGroupNoHeatIdRequestMapper() throws Exception{
239                 this.test_deleteVolumeGroupRequestMapper(null);
240         }
241         
242         private void test_deleteVolumeGroupRequestMapper(String heatStackId) throws Exception {
243                 DeleteVolumeGroupRequest expectedDeleteVolumeGroupRequest = new DeleteVolumeGroupRequest();
244                 
245                 CloudRegion cloudRegion = new CloudRegion();
246                 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
247                 expectedDeleteVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
248                 
249                 cloudRegion.setTenantId("tenantId");
250                 expectedDeleteVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
251                 
252                 VolumeGroup volumeGroup = new VolumeGroup();
253                 volumeGroup.setVolumeGroupId("volumeGroupId");
254                 expectedDeleteVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
255                 
256                 if (heatStackId != null){
257                         volumeGroup.setHeatStackId("heatStackId");
258                         expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getHeatStackId());
259                 } else {
260                         volumeGroup.setVolumeGroupName("volumeGroupName");
261                         expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getVolumeGroupName());
262                 }
263                 
264                 expectedDeleteVolumeGroupRequest.setSkipAAI(true);
265                 
266                 MsoRequest msoRequest = new MsoRequest();
267                 RequestContext requestContext = new RequestContext();
268                 requestContext.setMsoRequestId("msoRequestId");
269                 msoRequest.setRequestId(requestContext.getMsoRequestId());
270                 ServiceInstance serviceInstance = new ServiceInstance();
271                 serviceInstance.setServiceInstanceId("serviceInstanceId");
272                 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
273                 expectedDeleteVolumeGroupRequest.setMsoRequest(msoRequest);
274                 
275                 String messageId = "messageId";
276                 String endpoint = "endpoint";
277                 doReturn(messageId).when(vnfAdapterObjectMapper).getRandomUuid();
278                 doReturn(endpoint).when(vnfAdapterObjectMapper).getProperty(isA(String.class));
279                 expectedDeleteVolumeGroupRequest.setMessageId(messageId);
280                 expectedDeleteVolumeGroupRequest.setNotificationUrl(endpoint + "/VNFAResponse/" + messageId);
281                 
282                 DeleteVolumeGroupRequest actualDeleteVolumeGroupRequest = vnfAdapterObjectMapper.deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
283                 
284                 assertThat(actualDeleteVolumeGroupRequest, sameBeanAs(expectedDeleteVolumeGroupRequest));
285         }
286         
287         @Test
288         @Ignore
289         public void test_createVolumeGroupParams() throws Exception {
290                 GenericVnf genericVnf = new GenericVnf();
291                 genericVnf.setVnfId("vnfId");
292                 genericVnf.setVnfName("vnfName");
293
294                 RequestContext requestContext = new RequestContext();
295                 
296                 VolumeGroup volumeGroup = new VolumeGroup();
297                 volumeGroup.setVolumeGroupId("volumeGroupId");
298                 volumeGroup.setVolumeGroupName("volumeGroupName");
299                 
300                 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
301                 
302                 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
303                 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
304                 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
305                 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
306                 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
307                 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
308                 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
309                 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
310                 
311                 Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, sdncVfModuleQueryResponse);
312                 
313                 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
314         }
315
316         @Test
317         public void test_createVolumeGroupParams_without_sdncResponse() throws Exception {
318                 GenericVnf genericVnf = new GenericVnf();
319                 genericVnf.setVnfId("vnfId");
320                 genericVnf.setVnfName("vnfName");
321
322                 VolumeGroup volumeGroup = new VolumeGroup();
323                 volumeGroup.setVolumeGroupId("volumeGroupId");
324                 volumeGroup.setVolumeGroupName("volumeGroupName");
325
326                 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
327                 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
328                 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
329                 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
330                 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
331                 RequestContext requestContext = new RequestContext();
332                 Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, null);
333
334                 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
335         }
336
337     @Test
338     @Ignore
339     public void test_createVolumeGroupParams_with_user_params() throws Exception {
340         GenericVnf genericVnf = new GenericVnf();
341         genericVnf.setVnfId("vnfId");
342         genericVnf.setVnfName("vnfName");
343
344         RequestContext requestContext = new RequestContext();
345         Map<String, Object> userParamsMap = new HashMap<>();
346         userParamsMap.put("name", "userParamKey");
347         userParamsMap.put("value", "userParamValue");
348         List<Map<String, Object>> userParams = new ArrayList<>();
349         userParams.add(userParamsMap);
350         RequestParameters requestParameters = new RequestParameters();
351         requestParameters.setUserParams(userParams);
352         requestContext.setRequestParameters(requestParameters);
353         VolumeGroup volumeGroup = new VolumeGroup();
354         volumeGroup.setVolumeGroupId("volumeGroupId");
355         volumeGroup.setVolumeGroupName("volumeGroupName");
356
357         String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
358
359         Map<String, String> expectedVolumeGroupParams = new HashMap<>();
360         expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
361         expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
362         expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
363         expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
364         expectedVolumeGroupParams.put("paramOne", "paramOneValue");
365         expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
366         expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
367         expectedVolumeGroupParams.put("userParamKey", "userParamValue");
368
369         Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, sdncVfModuleQueryResponse);
370
371         assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
372     }
373
374         @Test
375         public void test_createMsoRequest() {
376                 RequestContext requestContext = new RequestContext();
377                 requestContext.setMsoRequestId("msoRequestId");
378                 
379                 ServiceInstance serviceInstance = new ServiceInstance();
380                 serviceInstance.setServiceInstanceId("serviceInstanceId");
381                 
382                 MsoRequest expectedMsoRequest = new MsoRequest();
383                 expectedMsoRequest.setRequestId(requestContext.getMsoRequestId());
384                 expectedMsoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
385                 
386                 MsoRequest actualMsoRequest = vnfAdapterObjectMapper.createMsoRequest(requestContext, serviceInstance);
387                 
388                 assertThat(expectedMsoRequest, sameBeanAs(actualMsoRequest));
389         }
390 }