8f5c8dfb5ec90966fffa852470aafb26db2e1d22
[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.Matchers.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_deleteVolumeGroupRequestMapper() throws Exception {
234                 DeleteVolumeGroupRequest expectedDeleteVolumeGroupRequest = new DeleteVolumeGroupRequest();
235                 
236                 CloudRegion cloudRegion = new CloudRegion();
237                 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
238                 expectedDeleteVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
239                 
240                 cloudRegion.setTenantId("tenantId");
241                 expectedDeleteVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
242                 
243                 VolumeGroup volumeGroup = new VolumeGroup();
244                 volumeGroup.setVolumeGroupId("volumeGroupId");
245                 expectedDeleteVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
246                 
247                 volumeGroup.setHeatStackId("heatStackId");
248                 expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getHeatStackId());
249                 
250                 expectedDeleteVolumeGroupRequest.setSkipAAI(true);
251                 
252                 MsoRequest msoRequest = new MsoRequest();
253                 RequestContext requestContext = new RequestContext();
254                 requestContext.setMsoRequestId("msoRequestId");
255                 msoRequest.setRequestId(requestContext.getMsoRequestId());
256                 ServiceInstance serviceInstance = new ServiceInstance();
257                 serviceInstance.setServiceInstanceId("serviceInstanceId");
258                 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
259                 expectedDeleteVolumeGroupRequest.setMsoRequest(msoRequest);
260                 
261                 String messageId = "messageId";
262                 String endpoint = "endpoint";
263                 doReturn(messageId).when(vnfAdapterObjectMapper).getRandomUuid();
264                 doReturn(endpoint).when(vnfAdapterObjectMapper).getProperty(isA(String.class));
265                 expectedDeleteVolumeGroupRequest.setMessageId(messageId);
266                 expectedDeleteVolumeGroupRequest.setNotificationUrl(endpoint + "/VNFAResponse/" + messageId);
267                 
268                 DeleteVolumeGroupRequest actualDeleteVolumeGroupRequest = vnfAdapterObjectMapper.deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
269                 
270                 assertThat(actualDeleteVolumeGroupRequest, sameBeanAs(expectedDeleteVolumeGroupRequest));
271         }
272
273         @Test
274         @Ignore
275         public void test_createVolumeGroupParams() throws Exception {
276                 GenericVnf genericVnf = new GenericVnf();
277                 genericVnf.setVnfId("vnfId");
278                 genericVnf.setVnfName("vnfName");
279
280                 RequestContext requestContext = new RequestContext();
281                 
282                 VolumeGroup volumeGroup = new VolumeGroup();
283                 volumeGroup.setVolumeGroupId("volumeGroupId");
284                 volumeGroup.setVolumeGroupName("volumeGroupName");
285                 
286                 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
287                 
288                 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
289                 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
290                 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
291                 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
292                 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
293                 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
294                 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
295                 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
296                 
297                 Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, sdncVfModuleQueryResponse);
298                 
299                 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
300         }
301
302         @Test
303         public void test_createVolumeGroupParams_without_sdncResponse() throws Exception {
304                 GenericVnf genericVnf = new GenericVnf();
305                 genericVnf.setVnfId("vnfId");
306                 genericVnf.setVnfName("vnfName");
307
308                 VolumeGroup volumeGroup = new VolumeGroup();
309                 volumeGroup.setVolumeGroupId("volumeGroupId");
310                 volumeGroup.setVolumeGroupName("volumeGroupName");
311
312                 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
313                 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
314                 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
315                 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
316                 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
317                 RequestContext requestContext = new RequestContext();
318                 Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, null);
319
320                 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
321         }
322
323     @Test
324     @Ignore
325     public void test_createVolumeGroupParams_with_user_params() throws Exception {
326         GenericVnf genericVnf = new GenericVnf();
327         genericVnf.setVnfId("vnfId");
328         genericVnf.setVnfName("vnfName");
329
330         RequestContext requestContext = new RequestContext();
331         Map<String, Object> userParamsMap = new HashMap<>();
332         userParamsMap.put("name", "userParamKey");
333         userParamsMap.put("value", "userParamValue");
334         List<Map<String, Object>> userParams = new ArrayList<>();
335         userParams.add(userParamsMap);
336         RequestParameters requestParameters = new RequestParameters();
337         requestParameters.setUserParams(userParams);
338         requestContext.setRequestParameters(requestParameters);
339         VolumeGroup volumeGroup = new VolumeGroup();
340         volumeGroup.setVolumeGroupId("volumeGroupId");
341         volumeGroup.setVolumeGroupName("volumeGroupName");
342
343         String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
344
345         Map<String, String> expectedVolumeGroupParams = new HashMap<>();
346         expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
347         expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
348         expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
349         expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
350         expectedVolumeGroupParams.put("paramOne", "paramOneValue");
351         expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
352         expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
353         expectedVolumeGroupParams.put("userParamKey", "userParamValue");
354
355         Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, sdncVfModuleQueryResponse);
356
357         assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
358     }
359
360         @Test
361         public void test_createMsoRequest() {
362                 RequestContext requestContext = new RequestContext();
363                 requestContext.setMsoRequestId("msoRequestId");
364                 
365                 ServiceInstance serviceInstance = new ServiceInstance();
366                 serviceInstance.setServiceInstanceId("serviceInstanceId");
367                 
368                 MsoRequest expectedMsoRequest = new MsoRequest();
369                 expectedMsoRequest.setRequestId(requestContext.getMsoRequestId());
370                 expectedMsoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
371                 
372                 MsoRequest actualMsoRequest = vnfAdapterObjectMapper.createMsoRequest(requestContext, serviceInstance);
373                 
374                 assertThat(expectedMsoRequest, sameBeanAs(actualMsoRequest));
375         }
376 }