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.Test;
38 import org.mockito.MockitoAnnotations;
39 import org.mockito.Spy;
40 import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
41 import org.onap.so.adapters.vnfrest.DeleteVolumeGroupRequest;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
46 import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext;
47 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
48 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
49 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
50 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
51 import org.onap.so.db.catalog.beans.OrchestrationStatus;
52 import org.onap.so.entity.MsoRequest;
54 public class VnfAdapterObjectMapperTest {
55 private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/";
58 private VnfAdapterObjectMapper vnfAdapterObjectMapper = new VnfAdapterObjectMapper();
61 public void before() {
62 MockitoAnnotations.initMocks(this);
68 reset(vnfAdapterObjectMapper);
72 public void test_createVolumeGroupRequestMapper() throws Exception {
73 RequestContext requestContext = new RequestContext();
74 requestContext.setMsoRequestId("msoRequestId");
76 ServiceInstance serviceInstance = new ServiceInstance();
77 serviceInstance.setServiceInstanceId("serviceInstanceId");
79 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
80 modelInfoServiceInstance.setModelVersion("modelVersion");
81 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
83 GenericVnf genericVnf = new GenericVnf();
84 genericVnf.setVnfId("vnfId");
85 genericVnf.setVnfName("vnfName");
86 genericVnf.setVnfType("vnfType");
87 serviceInstance.getVnfs().add(genericVnf);
89 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
90 modelInfoVfModule.setModelName("modelName");
91 modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
93 VolumeGroup volumeGroup = new VolumeGroup();
94 volumeGroup.setVolumeGroupId("volumeGroupId");
95 volumeGroup.setVolumeGroupName("volumeGroupName");
96 volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
97 volumeGroup.setModelInfoVfModule(modelInfoVfModule);
99 serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
102 CloudRegion cloudRegion = new CloudRegion();
103 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
104 cloudRegion.setTenantId("tenantId");
106 OrchestrationContext orchestrationContext = new OrchestrationContext();
107 orchestrationContext.setIsRollbackEnabled(true);
109 String sdncVfModuleQueryResponse = new String(Files
110 .readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
112 CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
114 expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
115 expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
116 expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
117 expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
118 expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
119 expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
120 expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
121 expectedCreateVolumeGroupRequest
122 .setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
124 Map<String, Object> 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);
134 expectedCreateVolumeGroupRequest.setSkipAAI(true);
135 expectedCreateVolumeGroupRequest
136 .setSuppressBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
137 expectedCreateVolumeGroupRequest.setFailIfExists(false);
139 MsoRequest msoRequest = new MsoRequest();
140 msoRequest.setRequestId(requestContext.getMsoRequestId());
141 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
142 expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
144 expectedCreateVolumeGroupRequest.setMessageId("messageId");
145 expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
147 doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
148 doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
150 CreateVolumeGroupRequest actualCreateVolumeGroupRequest =
151 vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext, cloudRegion, orchestrationContext,
152 serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
154 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
158 public void test_createVolumeGroupRequestMapper_for_alaCarte_flow() throws Exception {
159 RequestContext requestContext = new RequestContext();
160 requestContext.setMsoRequestId("msoRequestId");
162 ServiceInstance serviceInstance = new ServiceInstance();
163 serviceInstance.setServiceInstanceId("serviceInstanceId");
165 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
166 modelInfoServiceInstance.setModelVersion("modelVersion");
167 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
169 GenericVnf genericVnf = new GenericVnf();
170 genericVnf.setVnfId("vnfId");
171 genericVnf.setVnfName("vnfName");
172 genericVnf.setVnfType("vnfType");
173 serviceInstance.getVnfs().add(genericVnf);
176 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
177 modelInfoVfModule.setModelName("modelName");
178 modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
180 VolumeGroup volumeGroup = new VolumeGroup();
181 volumeGroup.setVolumeGroupId("volumeGroupId");
182 volumeGroup.setVolumeGroupName("volumeGroupName");
183 volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
184 volumeGroup.setModelInfoVfModule(modelInfoVfModule);
185 serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
187 CloudRegion cloudRegion = new CloudRegion();
188 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
189 cloudRegion.setTenantId("tenantId");
191 OrchestrationContext orchestrationContext = new OrchestrationContext();
192 orchestrationContext.setIsRollbackEnabled(true);
194 CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
196 expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
197 expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
198 expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
199 expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
200 expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
201 expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
202 expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
203 expectedCreateVolumeGroupRequest
204 .setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
206 Map<String, Object> volumeGroupParams = new HashMap<>();
207 volumeGroupParams.put("vnf_id", genericVnf.getVnfId());
208 volumeGroupParams.put("vnf_name", genericVnf.getVnfName());
209 volumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
210 volumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
212 expectedCreateVolumeGroupRequest.setVolumeGroupParams(volumeGroupParams);
214 expectedCreateVolumeGroupRequest.setSkipAAI(true);
215 expectedCreateVolumeGroupRequest
216 .setSuppressBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
217 expectedCreateVolumeGroupRequest.setFailIfExists(false);
219 MsoRequest msoRequest = new MsoRequest();
220 msoRequest.setRequestId(requestContext.getMsoRequestId());
221 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
222 expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
224 expectedCreateVolumeGroupRequest.setMessageId("messageId");
225 expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
227 doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
228 doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
230 CreateVolumeGroupRequest actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(
231 requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, null);
233 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
237 public void test_deleteVolumeGroupHeatIdRequestMapper() throws Exception {
238 this.test_deleteVolumeGroupRequestMapper("heatStackId");
242 public void test_deleteVolumeGroupNoHeatIdRequestMapper() throws Exception {
243 this.test_deleteVolumeGroupRequestMapper(null);
246 private void test_deleteVolumeGroupRequestMapper(String heatStackId) throws Exception {
247 DeleteVolumeGroupRequest expectedDeleteVolumeGroupRequest = new DeleteVolumeGroupRequest();
249 CloudRegion cloudRegion = new CloudRegion();
250 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
251 expectedDeleteVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
253 cloudRegion.setTenantId("tenantId");
254 expectedDeleteVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
256 VolumeGroup volumeGroup = new VolumeGroup();
257 volumeGroup.setVolumeGroupId("volumeGroupId");
258 expectedDeleteVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
260 if (heatStackId != null) {
261 volumeGroup.setHeatStackId("heatStackId");
262 expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getHeatStackId());
264 volumeGroup.setVolumeGroupName("volumeGroupName");
265 expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getVolumeGroupName());
268 expectedDeleteVolumeGroupRequest.setSkipAAI(true);
270 MsoRequest msoRequest = new MsoRequest();
271 RequestContext requestContext = new RequestContext();
272 requestContext.setMsoRequestId("msoRequestId");
273 msoRequest.setRequestId(requestContext.getMsoRequestId());
274 ServiceInstance serviceInstance = new ServiceInstance();
275 serviceInstance.setServiceInstanceId("serviceInstanceId");
276 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
277 expectedDeleteVolumeGroupRequest.setMsoRequest(msoRequest);
279 String messageId = "messageId";
280 String endpoint = "endpoint";
281 doReturn(messageId).when(vnfAdapterObjectMapper).getRandomUuid();
282 doReturn(endpoint).when(vnfAdapterObjectMapper).getProperty(isA(String.class));
283 expectedDeleteVolumeGroupRequest.setMessageId(messageId);
284 expectedDeleteVolumeGroupRequest.setNotificationUrl(endpoint + "/VNFAResponse/" + messageId);
286 DeleteVolumeGroupRequest actualDeleteVolumeGroupRequest = vnfAdapterObjectMapper
287 .deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
289 assertThat(actualDeleteVolumeGroupRequest, sameBeanAs(expectedDeleteVolumeGroupRequest));
293 public void test_createVolumeGroupParams() throws Exception {
294 GenericVnf genericVnf = new GenericVnf();
295 genericVnf.setVnfId("vnfId");
296 genericVnf.setVnfName("vnfName");
298 RequestContext requestContext = new RequestContext();
300 VolumeGroup volumeGroup = new VolumeGroup();
301 volumeGroup.setVolumeGroupId("volumeGroupId");
302 volumeGroup.setVolumeGroupName("volumeGroupName");
304 String sdncVfModuleQueryResponse = new String(Files
305 .readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
307 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
308 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
309 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
310 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
311 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
312 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
313 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
314 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
316 Map<String, Object> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,
317 genericVnf, volumeGroup, sdncVfModuleQueryResponse);
319 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
323 public void test_createVolumeGroupParams_without_sdncResponse() throws Exception {
324 GenericVnf genericVnf = new GenericVnf();
325 genericVnf.setVnfId("vnfId");
326 genericVnf.setVnfName("vnfName");
328 VolumeGroup volumeGroup = new VolumeGroup();
329 volumeGroup.setVolumeGroupId("volumeGroupId");
330 volumeGroup.setVolumeGroupName("volumeGroupName");
332 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
333 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
334 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
335 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
336 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
337 RequestContext requestContext = new RequestContext();
338 Map<String, Object> actualVolumeGroupParams =
339 vnfAdapterObjectMapper.createVolumeGroupParams(requestContext, genericVnf, volumeGroup, null);
341 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
345 public void test_createVolumeGroupParams_with_user_params() throws Exception {
346 GenericVnf genericVnf = new GenericVnf();
347 genericVnf.setVnfId("vnfId");
348 genericVnf.setVnfName("vnfName");
350 RequestContext requestContext = new RequestContext();
351 Map<String, Object> userParamsMap = new HashMap<>();
352 userParamsMap.put("name", "userParamKey");
353 userParamsMap.put("value", "userParamValue");
354 List<Map<String, Object>> userParams = new ArrayList<>();
355 userParams.add(userParamsMap);
356 RequestParameters requestParameters = new RequestParameters();
357 requestParameters.setUserParams(userParams);
358 requestContext.setRequestParameters(requestParameters);
359 VolumeGroup volumeGroup = new VolumeGroup();
360 volumeGroup.setVolumeGroupId("volumeGroupId");
361 volumeGroup.setVolumeGroupName("volumeGroupName");
363 String sdncVfModuleQueryResponse = new String(Files
364 .readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
366 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
367 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
368 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
369 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
370 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
371 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
372 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
373 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
374 expectedVolumeGroupParams.put("userParamKey", "userParamValue");
376 Map<String, Object> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,
377 genericVnf, volumeGroup, sdncVfModuleQueryResponse);
379 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
383 public void test_createMsoRequest() {
384 RequestContext requestContext = new RequestContext();
385 requestContext.setMsoRequestId("msoRequestId");
387 ServiceInstance serviceInstance = new ServiceInstance();
388 serviceInstance.setServiceInstanceId("serviceInstanceId");
390 MsoRequest expectedMsoRequest = new MsoRequest();
391 expectedMsoRequest.setRequestId(requestContext.getMsoRequestId());
392 expectedMsoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
394 MsoRequest actualMsoRequest = vnfAdapterObjectMapper.createMsoRequest(requestContext, serviceInstance);
396 assertThat(expectedMsoRequest, sameBeanAs(actualMsoRequest));