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