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;
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;
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;
57 public class VnfAdapterObjectMapperTest {
58 private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/";
61 private VnfAdapterObjectMapper vnfAdapterObjectMapper = new VnfAdapterObjectMapper();
64 public void before() {
65 MockitoAnnotations.initMocks(this);
71 reset(vnfAdapterObjectMapper);
75 public void test_createVolumeGroupRequestMapper() throws Exception {
76 RequestContext requestContext = new RequestContext();
77 requestContext.setMsoRequestId("msoRequestId");
79 ServiceInstance serviceInstance = new ServiceInstance();
80 serviceInstance.setServiceInstanceId("serviceInstanceId");
82 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
83 modelInfoServiceInstance.setModelVersion("modelVersion");
84 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
86 GenericVnf genericVnf = new GenericVnf();
87 genericVnf.setVnfId("vnfId");
88 genericVnf.setVnfName("vnfName");
89 genericVnf.setVnfType("vnfType");
90 serviceInstance.getVnfs().add(genericVnf);
92 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
93 modelInfoVfModule.setModelName("modelName");
94 modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
96 VolumeGroup volumeGroup = new VolumeGroup();
97 volumeGroup.setVolumeGroupId("volumeGroupId");
98 volumeGroup.setVolumeGroupName("volumeGroupName");
99 volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
100 volumeGroup.setModelInfoVfModule(modelInfoVfModule);
102 serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
105 CloudRegion cloudRegion = new CloudRegion();
106 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
107 cloudRegion.setTenantId("tenantId");
109 OrchestrationContext orchestrationContext = new OrchestrationContext();
110 orchestrationContext.setIsRollbackEnabled(true);
112 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
114 CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
116 expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
117 expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
118 expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
119 expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
120 expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
121 expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
122 expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
123 expectedCreateVolumeGroupRequest.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.setSuppressBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
137 expectedCreateVolumeGroupRequest.setFailIfExists(true);
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 = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
152 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
156 public void test_createVolumeGroupRequestMapper_for_alaCarte_flow() throws Exception {
157 RequestContext requestContext = new RequestContext();
158 requestContext.setMsoRequestId("msoRequestId");
160 ServiceInstance serviceInstance = new ServiceInstance();
161 serviceInstance.setServiceInstanceId("serviceInstanceId");
163 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
164 modelInfoServiceInstance.setModelVersion("modelVersion");
165 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
167 GenericVnf genericVnf = new GenericVnf();
168 genericVnf.setVnfId("vnfId");
169 genericVnf.setVnfName("vnfName");
170 genericVnf.setVnfType("vnfType");
171 serviceInstance.getVnfs().add(genericVnf);
174 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
175 modelInfoVfModule.setModelName("modelName");
176 modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
178 VolumeGroup volumeGroup = new VolumeGroup();
179 volumeGroup.setVolumeGroupId("volumeGroupId");
180 volumeGroup.setVolumeGroupName("volumeGroupName");
181 volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
182 volumeGroup.setModelInfoVfModule(modelInfoVfModule);
183 serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
185 CloudRegion cloudRegion = new CloudRegion();
186 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
187 cloudRegion.setTenantId("tenantId");
189 OrchestrationContext orchestrationContext = new OrchestrationContext();
190 orchestrationContext.setIsRollbackEnabled(true);
192 CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
194 expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
195 expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
196 expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
197 expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
198 expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
199 expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
200 expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
201 expectedCreateVolumeGroupRequest.setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
203 Map<String, Object> volumeGroupParams = new HashMap<>();
204 volumeGroupParams.put("vnf_id", genericVnf.getVnfId());
205 volumeGroupParams.put("vnf_name", genericVnf.getVnfName());
206 volumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
207 volumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
209 expectedCreateVolumeGroupRequest.setVolumeGroupParams(volumeGroupParams);
211 expectedCreateVolumeGroupRequest.setSkipAAI(true);
212 expectedCreateVolumeGroupRequest.setSuppressBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
213 expectedCreateVolumeGroupRequest.setFailIfExists(true);
215 MsoRequest msoRequest = new MsoRequest();
216 msoRequest.setRequestId(requestContext.getMsoRequestId());
217 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
218 expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
220 expectedCreateVolumeGroupRequest.setMessageId("messageId");
221 expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
223 doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
224 doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
226 CreateVolumeGroupRequest actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, null);
228 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
232 public void test_deleteVolumeGroupHeatIdRequestMapper() throws Exception{
233 this.test_deleteVolumeGroupRequestMapper("heatStackId");
237 public void test_deleteVolumeGroupNoHeatIdRequestMapper() throws Exception{
238 this.test_deleteVolumeGroupRequestMapper(null);
241 private void test_deleteVolumeGroupRequestMapper(String heatStackId) throws Exception {
242 DeleteVolumeGroupRequest expectedDeleteVolumeGroupRequest = new DeleteVolumeGroupRequest();
244 CloudRegion cloudRegion = new CloudRegion();
245 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
246 expectedDeleteVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
248 cloudRegion.setTenantId("tenantId");
249 expectedDeleteVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
251 VolumeGroup volumeGroup = new VolumeGroup();
252 volumeGroup.setVolumeGroupId("volumeGroupId");
253 expectedDeleteVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
255 if (heatStackId != null){
256 volumeGroup.setHeatStackId("heatStackId");
257 expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getHeatStackId());
259 volumeGroup.setVolumeGroupName("volumeGroupName");
260 expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getVolumeGroupName());
263 expectedDeleteVolumeGroupRequest.setSkipAAI(true);
265 MsoRequest msoRequest = new MsoRequest();
266 RequestContext requestContext = new RequestContext();
267 requestContext.setMsoRequestId("msoRequestId");
268 msoRequest.setRequestId(requestContext.getMsoRequestId());
269 ServiceInstance serviceInstance = new ServiceInstance();
270 serviceInstance.setServiceInstanceId("serviceInstanceId");
271 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
272 expectedDeleteVolumeGroupRequest.setMsoRequest(msoRequest);
274 String messageId = "messageId";
275 String endpoint = "endpoint";
276 doReturn(messageId).when(vnfAdapterObjectMapper).getRandomUuid();
277 doReturn(endpoint).when(vnfAdapterObjectMapper).getProperty(isA(String.class));
278 expectedDeleteVolumeGroupRequest.setMessageId(messageId);
279 expectedDeleteVolumeGroupRequest.setNotificationUrl(endpoint + "/VNFAResponse/" + messageId);
281 DeleteVolumeGroupRequest actualDeleteVolumeGroupRequest = vnfAdapterObjectMapper.deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
283 assertThat(actualDeleteVolumeGroupRequest, sameBeanAs(expectedDeleteVolumeGroupRequest));
287 public void test_createVolumeGroupParams() throws Exception {
288 GenericVnf genericVnf = new GenericVnf();
289 genericVnf.setVnfId("vnfId");
290 genericVnf.setVnfName("vnfName");
292 RequestContext requestContext = new RequestContext();
294 VolumeGroup volumeGroup = new VolumeGroup();
295 volumeGroup.setVolumeGroupId("volumeGroupId");
296 volumeGroup.setVolumeGroupName("volumeGroupName");
298 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
300 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
301 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
302 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
303 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
304 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
305 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
306 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
307 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
309 Map<String, Object> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, sdncVfModuleQueryResponse);
311 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
315 public void test_createVolumeGroupParams_without_sdncResponse() throws Exception {
316 GenericVnf genericVnf = new GenericVnf();
317 genericVnf.setVnfId("vnfId");
318 genericVnf.setVnfName("vnfName");
320 VolumeGroup volumeGroup = new VolumeGroup();
321 volumeGroup.setVolumeGroupId("volumeGroupId");
322 volumeGroup.setVolumeGroupName("volumeGroupName");
324 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
325 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
326 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
327 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
328 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
329 RequestContext requestContext = new RequestContext();
330 Map<String, Object> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, null);
332 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
336 public void test_createVolumeGroupParams_with_user_params() throws Exception {
337 GenericVnf genericVnf = new GenericVnf();
338 genericVnf.setVnfId("vnfId");
339 genericVnf.setVnfName("vnfName");
341 RequestContext requestContext = new RequestContext();
342 Map<String, Object> userParamsMap = new HashMap<>();
343 userParamsMap.put("name", "userParamKey");
344 userParamsMap.put("value", "userParamValue");
345 List<Map<String, Object>> userParams = new ArrayList<>();
346 userParams.add(userParamsMap);
347 RequestParameters requestParameters = new RequestParameters();
348 requestParameters.setUserParams(userParams);
349 requestContext.setRequestParameters(requestParameters);
350 VolumeGroup volumeGroup = new VolumeGroup();
351 volumeGroup.setVolumeGroupId("volumeGroupId");
352 volumeGroup.setVolumeGroupName("volumeGroupName");
354 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
356 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
357 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
358 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
359 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
360 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
361 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
362 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
363 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
364 expectedVolumeGroupParams.put("userParamKey", "userParamValue");
366 Map<String, Object> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, sdncVfModuleQueryResponse);
368 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
372 public void test_createMsoRequest() {
373 RequestContext requestContext = new RequestContext();
374 requestContext.setMsoRequestId("msoRequestId");
376 ServiceInstance serviceInstance = new ServiceInstance();
377 serviceInstance.setServiceInstanceId("serviceInstanceId");
379 MsoRequest expectedMsoRequest = new MsoRequest();
380 expectedMsoRequest.setRequestId(requestContext.getMsoRequestId());
381 expectedMsoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
383 MsoRequest actualMsoRequest = vnfAdapterObjectMapper.createMsoRequest(requestContext, serviceInstance);
385 assertThat(expectedMsoRequest, sameBeanAs(actualMsoRequest));