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