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);
153 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
155 doReturn("false").when(vnfAdapterObjectMapper).getProperty("mso.bridgeEnabled");
156 actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext,
157 cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
158 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
160 doReturn(null).when(vnfAdapterObjectMapper).getProperty("mso.bridgeEnabled");
161 expectedCreateVolumeGroupRequest.setEnableBridge(true);
162 actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext,
163 cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
164 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
166 doReturn("true").when(vnfAdapterObjectMapper).getProperty("mso.bridgeEnabled");
167 expectedCreateVolumeGroupRequest.setEnableBridge(true);
168 actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext,
169 cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
170 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
174 public void test_createVolumeGroupRequestMapper_for_alaCarte_flow() throws Exception {
175 RequestContext requestContext = new RequestContext();
176 requestContext.setMsoRequestId("msoRequestId");
178 ServiceInstance serviceInstance = new ServiceInstance();
179 serviceInstance.setServiceInstanceId("serviceInstanceId");
181 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
182 modelInfoServiceInstance.setModelVersion("modelVersion");
183 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
185 GenericVnf genericVnf = new GenericVnf();
186 genericVnf.setVnfId("vnfId");
187 genericVnf.setVnfName("vnfName");
188 genericVnf.setVnfType("vnfType");
189 serviceInstance.getVnfs().add(genericVnf);
192 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
193 modelInfoVfModule.setModelName("modelName");
194 modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
196 VolumeGroup volumeGroup = new VolumeGroup();
197 volumeGroup.setVolumeGroupId("volumeGroupId");
198 volumeGroup.setVolumeGroupName("volumeGroupName");
199 volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
200 volumeGroup.setModelInfoVfModule(modelInfoVfModule);
201 serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
203 CloudRegion cloudRegion = new CloudRegion();
204 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
205 cloudRegion.setTenantId("tenantId");
207 OrchestrationContext orchestrationContext = new OrchestrationContext();
208 orchestrationContext.setIsRollbackEnabled(true);
210 CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
212 expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
213 expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
214 expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
215 expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
216 expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
217 expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
218 expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
219 expectedCreateVolumeGroupRequest
220 .setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
222 Map<String, Object> volumeGroupParams = new HashMap<>();
223 volumeGroupParams.put("vnf_id", genericVnf.getVnfId());
224 volumeGroupParams.put("vnf_name", genericVnf.getVnfName());
225 volumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
226 volumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
228 expectedCreateVolumeGroupRequest.setVolumeGroupParams(volumeGroupParams);
230 expectedCreateVolumeGroupRequest.setSkipAAI(true);
231 expectedCreateVolumeGroupRequest
232 .setSuppressBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
233 expectedCreateVolumeGroupRequest.setFailIfExists(false);
235 MsoRequest msoRequest = new MsoRequest();
236 msoRequest.setRequestId(requestContext.getMsoRequestId());
237 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
238 expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
240 expectedCreateVolumeGroupRequest.setMessageId("messageId");
241 expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
243 doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
244 doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
246 CreateVolumeGroupRequest actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(
247 requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, null);
249 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
253 public void test_deleteVolumeGroupHeatIdRequestMapper() throws Exception {
254 this.test_deleteVolumeGroupRequestMapper("heatStackId");
258 public void test_deleteVolumeGroupNoHeatIdRequestMapper() throws Exception {
259 this.test_deleteVolumeGroupRequestMapper(null);
262 private void test_deleteVolumeGroupRequestMapper(String heatStackId) throws Exception {
263 DeleteVolumeGroupRequest expectedDeleteVolumeGroupRequest = new DeleteVolumeGroupRequest();
265 CloudRegion cloudRegion = new CloudRegion();
266 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
267 expectedDeleteVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
269 cloudRegion.setTenantId("tenantId");
270 expectedDeleteVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
272 VolumeGroup volumeGroup = new VolumeGroup();
273 volumeGroup.setVolumeGroupId("volumeGroupId");
274 expectedDeleteVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
276 if (heatStackId != null) {
277 volumeGroup.setHeatStackId("heatStackId");
278 expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getHeatStackId());
280 volumeGroup.setVolumeGroupName("volumeGroupName");
281 expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getVolumeGroupName());
284 expectedDeleteVolumeGroupRequest.setSkipAAI(true);
286 MsoRequest msoRequest = new MsoRequest();
287 RequestContext requestContext = new RequestContext();
288 requestContext.setMsoRequestId("msoRequestId");
289 msoRequest.setRequestId(requestContext.getMsoRequestId());
290 ServiceInstance serviceInstance = new ServiceInstance();
291 serviceInstance.setServiceInstanceId("serviceInstanceId");
292 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
293 expectedDeleteVolumeGroupRequest.setMsoRequest(msoRequest);
295 String messageId = "messageId";
296 String endpoint = "endpoint";
297 doReturn(messageId).when(vnfAdapterObjectMapper).getRandomUuid();
298 doReturn(endpoint).when(vnfAdapterObjectMapper).getProperty(isA(String.class));
299 expectedDeleteVolumeGroupRequest.setMessageId(messageId);
300 expectedDeleteVolumeGroupRequest.setNotificationUrl(endpoint + "/VNFAResponse/" + messageId);
302 DeleteVolumeGroupRequest actualDeleteVolumeGroupRequest = vnfAdapterObjectMapper
303 .deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
305 assertThat(actualDeleteVolumeGroupRequest, sameBeanAs(expectedDeleteVolumeGroupRequest));
309 public void test_createVolumeGroupParams() throws Exception {
310 GenericVnf genericVnf = new GenericVnf();
311 genericVnf.setVnfId("vnfId");
312 genericVnf.setVnfName("vnfName");
314 RequestContext requestContext = new RequestContext();
316 VolumeGroup volumeGroup = new VolumeGroup();
317 volumeGroup.setVolumeGroupId("volumeGroupId");
318 volumeGroup.setVolumeGroupName("volumeGroupName");
320 String sdncVfModuleQueryResponse = new String(Files
321 .readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
323 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
324 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
325 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
326 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
327 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
328 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
329 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
330 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
332 Map<String, Object> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,
333 genericVnf, volumeGroup, sdncVfModuleQueryResponse);
335 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
339 public void test_createVolumeGroupParams_without_sdncResponse() throws Exception {
340 GenericVnf genericVnf = new GenericVnf();
341 genericVnf.setVnfId("vnfId");
342 genericVnf.setVnfName("vnfName");
344 VolumeGroup volumeGroup = new VolumeGroup();
345 volumeGroup.setVolumeGroupId("volumeGroupId");
346 volumeGroup.setVolumeGroupName("volumeGroupName");
348 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
349 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
350 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
351 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
352 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
353 RequestContext requestContext = new RequestContext();
354 Map<String, Object> actualVolumeGroupParams =
355 vnfAdapterObjectMapper.createVolumeGroupParams(requestContext, genericVnf, volumeGroup, null);
357 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
361 public void test_createVolumeGroupParams_with_user_params() throws Exception {
362 GenericVnf genericVnf = new GenericVnf();
363 genericVnf.setVnfId("vnfId");
364 genericVnf.setVnfName("vnfName");
366 RequestContext requestContext = new RequestContext();
367 Map<String, Object> userParamsMap = new HashMap<>();
368 userParamsMap.put("name", "userParamKey");
369 userParamsMap.put("value", "userParamValue");
370 List<Map<String, Object>> userParams = new ArrayList<>();
371 userParams.add(userParamsMap);
372 RequestParameters requestParameters = new RequestParameters();
373 requestParameters.setUserParams(userParams);
374 requestContext.setRequestParameters(requestParameters);
375 VolumeGroup volumeGroup = new VolumeGroup();
376 volumeGroup.setVolumeGroupId("volumeGroupId");
377 volumeGroup.setVolumeGroupName("volumeGroupName");
379 String sdncVfModuleQueryResponse = new String(Files
380 .readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
382 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
383 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
384 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
385 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
386 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
387 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
388 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
389 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
390 expectedVolumeGroupParams.put("userParamKey", "userParamValue");
392 Map<String, Object> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,
393 genericVnf, volumeGroup, sdncVfModuleQueryResponse);
395 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
399 public void test_createMsoRequest() {
400 RequestContext requestContext = new RequestContext();
401 requestContext.setMsoRequestId("msoRequestId");
403 ServiceInstance serviceInstance = new ServiceInstance();
404 serviceInstance.setServiceInstanceId("serviceInstanceId");
406 MsoRequest expectedMsoRequest = new MsoRequest();
407 expectedMsoRequest.setRequestId(requestContext.getMsoRequestId());
408 expectedMsoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
410 MsoRequest actualMsoRequest = vnfAdapterObjectMapper.createMsoRequest(requestContext, serviceInstance);
412 assertThat(expectedMsoRequest, sameBeanAs(actualMsoRequest));