2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.so.client.adapter.vnf.mapper;
23 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertThat;
26 import static org.mockito.ArgumentMatchers.isA;
27 import static org.mockito.Mockito.doReturn;
28 import static org.mockito.Mockito.reset;
29 import java.nio.file.Files;
30 import java.nio.file.Paths;
31 import java.util.ArrayList;
32 import java.util.HashMap;
33 import java.util.List;
35 import org.junit.After;
36 import org.junit.Before;
37 import org.junit.Ignore;
38 import org.junit.Test;
39 import org.mockito.MockitoAnnotations;
40 import org.mockito.Spy;
41 import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
42 import org.onap.so.adapters.vnfrest.DeleteVolumeGroupRequest;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
47 import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext;
48 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
49 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
50 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
51 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
52 import org.onap.so.db.catalog.beans.OrchestrationStatus;
53 import org.onap.so.entity.MsoRequest;
55 public class VnfAdapterObjectMapperTest {
56 private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/";
59 private VnfAdapterObjectMapper vnfAdapterObjectMapper = new VnfAdapterObjectMapper();
62 public void before() {
63 MockitoAnnotations.initMocks(this);
69 reset(vnfAdapterObjectMapper);
73 public void test_createVolumeGroupRequestMapper() throws Exception {
74 RequestContext requestContext = new RequestContext();
75 requestContext.setMsoRequestId("msoRequestId");
77 ServiceInstance serviceInstance = new ServiceInstance();
78 serviceInstance.setServiceInstanceId("serviceInstanceId");
80 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
81 modelInfoServiceInstance.setModelVersion("modelVersion");
82 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
84 GenericVnf genericVnf = new GenericVnf();
85 genericVnf.setVnfId("vnfId");
86 genericVnf.setVnfName("vnfName");
87 genericVnf.setVnfType("vnfType");
88 serviceInstance.getVnfs().add(genericVnf);
90 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
91 modelInfoVfModule.setModelName("modelName");
92 modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
94 VolumeGroup volumeGroup = new VolumeGroup();
95 volumeGroup.setVolumeGroupId("volumeGroupId");
96 volumeGroup.setVolumeGroupName("volumeGroupName");
97 volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
98 volumeGroup.setModelInfoVfModule(modelInfoVfModule);
100 serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
103 CloudRegion cloudRegion = new CloudRegion();
104 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
105 cloudRegion.setTenantId("tenantId");
107 OrchestrationContext orchestrationContext = new OrchestrationContext();
108 orchestrationContext.setIsRollbackEnabled(true);
110 String sdncVfModuleQueryResponse = new String(Files
111 .readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
113 CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
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
123 .setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
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);
135 expectedCreateVolumeGroupRequest.setSkipAAI(true);
136 expectedCreateVolumeGroupRequest
137 .setSuppressBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
138 expectedCreateVolumeGroupRequest.setFailIfExists(true);
140 MsoRequest msoRequest = new MsoRequest();
141 msoRequest.setRequestId(requestContext.getMsoRequestId());
142 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
143 expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
145 expectedCreateVolumeGroupRequest.setMessageId("messageId");
146 expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
148 doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
149 doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
151 CreateVolumeGroupRequest actualCreateVolumeGroupRequest =
152 vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext, cloudRegion, orchestrationContext,
153 serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
155 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
159 public void test_createVolumeGroupRequestMapper_for_alaCarte_flow() throws Exception {
160 RequestContext requestContext = new RequestContext();
161 requestContext.setMsoRequestId("msoRequestId");
163 ServiceInstance serviceInstance = new ServiceInstance();
164 serviceInstance.setServiceInstanceId("serviceInstanceId");
166 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
167 modelInfoServiceInstance.setModelVersion("modelVersion");
168 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
170 GenericVnf genericVnf = new GenericVnf();
171 genericVnf.setVnfId("vnfId");
172 genericVnf.setVnfName("vnfName");
173 genericVnf.setVnfType("vnfType");
174 serviceInstance.getVnfs().add(genericVnf);
177 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
178 modelInfoVfModule.setModelName("modelName");
179 modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
181 VolumeGroup volumeGroup = new VolumeGroup();
182 volumeGroup.setVolumeGroupId("volumeGroupId");
183 volumeGroup.setVolumeGroupName("volumeGroupName");
184 volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
185 volumeGroup.setModelInfoVfModule(modelInfoVfModule);
186 serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
188 CloudRegion cloudRegion = new CloudRegion();
189 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
190 cloudRegion.setTenantId("tenantId");
192 OrchestrationContext orchestrationContext = new OrchestrationContext();
193 orchestrationContext.setIsRollbackEnabled(true);
195 CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
197 expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
198 expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
199 expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
200 expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
201 expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
202 expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
203 expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
204 expectedCreateVolumeGroupRequest
205 .setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
207 Map<String, Object> volumeGroupParams = new HashMap<>();
208 volumeGroupParams.put("vnf_id", genericVnf.getVnfId());
209 volumeGroupParams.put("vnf_name", genericVnf.getVnfName());
210 volumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
211 volumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
213 expectedCreateVolumeGroupRequest.setVolumeGroupParams(volumeGroupParams);
215 expectedCreateVolumeGroupRequest.setSkipAAI(true);
216 expectedCreateVolumeGroupRequest
217 .setSuppressBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
218 expectedCreateVolumeGroupRequest.setFailIfExists(true);
220 MsoRequest msoRequest = new MsoRequest();
221 msoRequest.setRequestId(requestContext.getMsoRequestId());
222 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
223 expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
225 expectedCreateVolumeGroupRequest.setMessageId("messageId");
226 expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
228 doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
229 doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
231 CreateVolumeGroupRequest actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(
232 requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, null);
234 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
238 public void test_deleteVolumeGroupHeatIdRequestMapper() throws Exception {
239 this.test_deleteVolumeGroupRequestMapper("heatStackId");
243 public void test_deleteVolumeGroupNoHeatIdRequestMapper() throws Exception {
244 this.test_deleteVolumeGroupRequestMapper(null);
247 private void test_deleteVolumeGroupRequestMapper(String heatStackId) throws Exception {
248 DeleteVolumeGroupRequest expectedDeleteVolumeGroupRequest = new DeleteVolumeGroupRequest();
250 CloudRegion cloudRegion = new CloudRegion();
251 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
252 expectedDeleteVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
254 cloudRegion.setTenantId("tenantId");
255 expectedDeleteVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
257 VolumeGroup volumeGroup = new VolumeGroup();
258 volumeGroup.setVolumeGroupId("volumeGroupId");
259 expectedDeleteVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
261 if (heatStackId != null) {
262 volumeGroup.setHeatStackId("heatStackId");
263 expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getHeatStackId());
265 volumeGroup.setVolumeGroupName("volumeGroupName");
266 expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getVolumeGroupName());
269 expectedDeleteVolumeGroupRequest.setSkipAAI(true);
271 MsoRequest msoRequest = new MsoRequest();
272 RequestContext requestContext = new RequestContext();
273 requestContext.setMsoRequestId("msoRequestId");
274 msoRequest.setRequestId(requestContext.getMsoRequestId());
275 ServiceInstance serviceInstance = new ServiceInstance();
276 serviceInstance.setServiceInstanceId("serviceInstanceId");
277 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
278 expectedDeleteVolumeGroupRequest.setMsoRequest(msoRequest);
280 String messageId = "messageId";
281 String endpoint = "endpoint";
282 doReturn(messageId).when(vnfAdapterObjectMapper).getRandomUuid();
283 doReturn(endpoint).when(vnfAdapterObjectMapper).getProperty(isA(String.class));
284 expectedDeleteVolumeGroupRequest.setMessageId(messageId);
285 expectedDeleteVolumeGroupRequest.setNotificationUrl(endpoint + "/VNFAResponse/" + messageId);
287 DeleteVolumeGroupRequest actualDeleteVolumeGroupRequest = vnfAdapterObjectMapper
288 .deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
290 assertThat(actualDeleteVolumeGroupRequest, sameBeanAs(expectedDeleteVolumeGroupRequest));
294 public void test_createVolumeGroupParams() throws Exception {
295 GenericVnf genericVnf = new GenericVnf();
296 genericVnf.setVnfId("vnfId");
297 genericVnf.setVnfName("vnfName");
299 RequestContext requestContext = new RequestContext();
301 VolumeGroup volumeGroup = new VolumeGroup();
302 volumeGroup.setVolumeGroupId("volumeGroupId");
303 volumeGroup.setVolumeGroupName("volumeGroupName");
305 String sdncVfModuleQueryResponse = new String(Files
306 .readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
308 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
309 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
310 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
311 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
312 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
313 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
314 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
315 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
317 Map<String, Object> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,
318 genericVnf, volumeGroup, sdncVfModuleQueryResponse);
320 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
324 public void test_createVolumeGroupParams_without_sdncResponse() throws Exception {
325 GenericVnf genericVnf = new GenericVnf();
326 genericVnf.setVnfId("vnfId");
327 genericVnf.setVnfName("vnfName");
329 VolumeGroup volumeGroup = new VolumeGroup();
330 volumeGroup.setVolumeGroupId("volumeGroupId");
331 volumeGroup.setVolumeGroupName("volumeGroupName");
333 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
334 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
335 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
336 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
337 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
338 RequestContext requestContext = new RequestContext();
339 Map<String, Object> actualVolumeGroupParams =
340 vnfAdapterObjectMapper.createVolumeGroupParams(requestContext, genericVnf, volumeGroup, null);
342 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
346 public void test_createVolumeGroupParams_with_user_params() throws Exception {
347 GenericVnf genericVnf = new GenericVnf();
348 genericVnf.setVnfId("vnfId");
349 genericVnf.setVnfName("vnfName");
351 RequestContext requestContext = new RequestContext();
352 Map<String, Object> userParamsMap = new HashMap<>();
353 userParamsMap.put("name", "userParamKey");
354 userParamsMap.put("value", "userParamValue");
355 List<Map<String, Object>> userParams = new ArrayList<>();
356 userParams.add(userParamsMap);
357 RequestParameters requestParameters = new RequestParameters();
358 requestParameters.setUserParams(userParams);
359 requestContext.setRequestParameters(requestParameters);
360 VolumeGroup volumeGroup = new VolumeGroup();
361 volumeGroup.setVolumeGroupId("volumeGroupId");
362 volumeGroup.setVolumeGroupName("volumeGroupName");
364 String sdncVfModuleQueryResponse = new String(Files
365 .readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
367 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
368 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
369 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
370 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
371 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
372 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
373 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
374 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
375 expectedVolumeGroupParams.put("userParamKey", "userParamValue");
377 Map<String, Object> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,
378 genericVnf, volumeGroup, sdncVfModuleQueryResponse);
380 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
384 public void test_createMsoRequest() {
385 RequestContext requestContext = new RequestContext();
386 requestContext.setMsoRequestId("msoRequestId");
388 ServiceInstance serviceInstance = new ServiceInstance();
389 serviceInstance.setServiceInstanceId("serviceInstanceId");
391 MsoRequest expectedMsoRequest = new MsoRequest();
392 expectedMsoRequest.setRequestId(requestContext.getMsoRequestId());
393 expectedMsoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
395 MsoRequest actualMsoRequest = vnfAdapterObjectMapper.createMsoRequest(requestContext, serviceInstance);
397 assertThat(expectedMsoRequest, sameBeanAs(actualMsoRequest));