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);
76 public void test_createVolumeGroupRequestMapper() throws Exception {
77 RequestContext requestContext = new RequestContext();
78 requestContext.setMsoRequestId("msoRequestId");
80 ServiceInstance serviceInstance = new ServiceInstance();
81 serviceInstance.setServiceInstanceId("serviceInstanceId");
83 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
84 modelInfoServiceInstance.setModelVersion("modelVersion");
85 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
87 GenericVnf genericVnf = new GenericVnf();
88 genericVnf.setVnfId("vnfId");
89 genericVnf.setVnfName("vnfName");
90 genericVnf.setVnfType("vnfType");
91 serviceInstance.getVnfs().add(genericVnf);
93 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
94 modelInfoVfModule.setModelName("modelName");
95 modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
97 VolumeGroup volumeGroup = new VolumeGroup();
98 volumeGroup.setVolumeGroupId("volumeGroupId");
99 volumeGroup.setVolumeGroupName("volumeGroupName");
100 volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
101 volumeGroup.setModelInfoVfModule(modelInfoVfModule);
103 serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
106 CloudRegion cloudRegion = new CloudRegion();
107 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
108 cloudRegion.setTenantId("tenantId");
110 OrchestrationContext orchestrationContext = new OrchestrationContext();
111 orchestrationContext.setIsRollbackEnabled(true);
113 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
115 CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
117 expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
118 expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
119 expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
120 expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
121 expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
122 expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
123 expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
124 expectedCreateVolumeGroupRequest.setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
126 Map<String, String> volumeGroupParams = new HashMap<>();
127 volumeGroupParams.put("vnf_id", genericVnf.getVnfId());
128 volumeGroupParams.put("vnf_name", genericVnf.getVnfName());
129 volumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
130 volumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
131 volumeGroupParams.put("paramOne", "paramOneValue");
132 volumeGroupParams.put("paramTwo", "paramTwoValue");
133 volumeGroupParams.put("paramThree", "paramThreeValue");
134 expectedCreateVolumeGroupRequest.setVolumeGroupParams(volumeGroupParams);
136 expectedCreateVolumeGroupRequest.setSkipAAI(true);
137 expectedCreateVolumeGroupRequest.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 = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
153 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
157 public void test_createVolumeGroupRequestMapper_for_alaCarte_flow() throws Exception {
158 RequestContext requestContext = new RequestContext();
159 requestContext.setMsoRequestId("msoRequestId");
161 ServiceInstance serviceInstance = new ServiceInstance();
162 serviceInstance.setServiceInstanceId("serviceInstanceId");
164 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
165 modelInfoServiceInstance.setModelVersion("modelVersion");
166 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
168 GenericVnf genericVnf = new GenericVnf();
169 genericVnf.setVnfId("vnfId");
170 genericVnf.setVnfName("vnfName");
171 genericVnf.setVnfType("vnfType");
172 serviceInstance.getVnfs().add(genericVnf);
175 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
176 modelInfoVfModule.setModelName("modelName");
177 modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
179 VolumeGroup volumeGroup = new VolumeGroup();
180 volumeGroup.setVolumeGroupId("volumeGroupId");
181 volumeGroup.setVolumeGroupName("volumeGroupName");
182 volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
183 volumeGroup.setModelInfoVfModule(modelInfoVfModule);
184 serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
186 CloudRegion cloudRegion = new CloudRegion();
187 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
188 cloudRegion.setTenantId("tenantId");
190 OrchestrationContext orchestrationContext = new OrchestrationContext();
191 orchestrationContext.setIsRollbackEnabled(true);
193 CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
195 expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
196 expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
197 expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
198 expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
199 expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
200 expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
201 expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
202 expectedCreateVolumeGroupRequest.setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
204 Map<String, String> volumeGroupParams = new HashMap<>();
205 volumeGroupParams.put("vnf_id", genericVnf.getVnfId());
206 volumeGroupParams.put("vnf_name", genericVnf.getVnfName());
207 volumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
208 volumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
210 expectedCreateVolumeGroupRequest.setVolumeGroupParams(volumeGroupParams);
212 expectedCreateVolumeGroupRequest.setSkipAAI(true);
213 expectedCreateVolumeGroupRequest.setSuppressBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
214 expectedCreateVolumeGroupRequest.setFailIfExists(true);
216 MsoRequest msoRequest = new MsoRequest();
217 msoRequest.setRequestId(requestContext.getMsoRequestId());
218 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
219 expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
221 expectedCreateVolumeGroupRequest.setMessageId("messageId");
222 expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
224 doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
225 doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
227 CreateVolumeGroupRequest actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, null);
229 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
233 public void test_deleteVolumeGroupHeatIdRequestMapper() throws Exception{
234 this.test_deleteVolumeGroupRequestMapper("heatStackId");
238 public void test_deleteVolumeGroupNoHeatIdRequestMapper() throws Exception{
239 this.test_deleteVolumeGroupRequestMapper(null);
242 private void test_deleteVolumeGroupRequestMapper(String heatStackId) throws Exception {
243 DeleteVolumeGroupRequest expectedDeleteVolumeGroupRequest = new DeleteVolumeGroupRequest();
245 CloudRegion cloudRegion = new CloudRegion();
246 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
247 expectedDeleteVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
249 cloudRegion.setTenantId("tenantId");
250 expectedDeleteVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
252 VolumeGroup volumeGroup = new VolumeGroup();
253 volumeGroup.setVolumeGroupId("volumeGroupId");
254 expectedDeleteVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
256 if (heatStackId != null){
257 volumeGroup.setHeatStackId("heatStackId");
258 expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getHeatStackId());
260 volumeGroup.setVolumeGroupName("volumeGroupName");
261 expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getVolumeGroupName());
264 expectedDeleteVolumeGroupRequest.setSkipAAI(true);
266 MsoRequest msoRequest = new MsoRequest();
267 RequestContext requestContext = new RequestContext();
268 requestContext.setMsoRequestId("msoRequestId");
269 msoRequest.setRequestId(requestContext.getMsoRequestId());
270 ServiceInstance serviceInstance = new ServiceInstance();
271 serviceInstance.setServiceInstanceId("serviceInstanceId");
272 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
273 expectedDeleteVolumeGroupRequest.setMsoRequest(msoRequest);
275 String messageId = "messageId";
276 String endpoint = "endpoint";
277 doReturn(messageId).when(vnfAdapterObjectMapper).getRandomUuid();
278 doReturn(endpoint).when(vnfAdapterObjectMapper).getProperty(isA(String.class));
279 expectedDeleteVolumeGroupRequest.setMessageId(messageId);
280 expectedDeleteVolumeGroupRequest.setNotificationUrl(endpoint + "/VNFAResponse/" + messageId);
282 DeleteVolumeGroupRequest actualDeleteVolumeGroupRequest = vnfAdapterObjectMapper.deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
284 assertThat(actualDeleteVolumeGroupRequest, sameBeanAs(expectedDeleteVolumeGroupRequest));
289 public void test_createVolumeGroupParams() throws Exception {
290 GenericVnf genericVnf = new GenericVnf();
291 genericVnf.setVnfId("vnfId");
292 genericVnf.setVnfName("vnfName");
294 RequestContext requestContext = new RequestContext();
296 VolumeGroup volumeGroup = new VolumeGroup();
297 volumeGroup.setVolumeGroupId("volumeGroupId");
298 volumeGroup.setVolumeGroupName("volumeGroupName");
300 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
302 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
303 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
304 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
305 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
306 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
307 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
308 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
309 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
311 Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, sdncVfModuleQueryResponse);
313 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
317 public void test_createVolumeGroupParams_without_sdncResponse() throws Exception {
318 GenericVnf genericVnf = new GenericVnf();
319 genericVnf.setVnfId("vnfId");
320 genericVnf.setVnfName("vnfName");
322 VolumeGroup volumeGroup = new VolumeGroup();
323 volumeGroup.setVolumeGroupId("volumeGroupId");
324 volumeGroup.setVolumeGroupName("volumeGroupName");
326 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
327 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
328 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
329 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
330 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
331 RequestContext requestContext = new RequestContext();
332 Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, null);
334 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
339 public void test_createVolumeGroupParams_with_user_params() throws Exception {
340 GenericVnf genericVnf = new GenericVnf();
341 genericVnf.setVnfId("vnfId");
342 genericVnf.setVnfName("vnfName");
344 RequestContext requestContext = new RequestContext();
345 Map<String, Object> userParamsMap = new HashMap<>();
346 userParamsMap.put("name", "userParamKey");
347 userParamsMap.put("value", "userParamValue");
348 List<Map<String, Object>> userParams = new ArrayList<>();
349 userParams.add(userParamsMap);
350 RequestParameters requestParameters = new RequestParameters();
351 requestParameters.setUserParams(userParams);
352 requestContext.setRequestParameters(requestParameters);
353 VolumeGroup volumeGroup = new VolumeGroup();
354 volumeGroup.setVolumeGroupId("volumeGroupId");
355 volumeGroup.setVolumeGroupName("volumeGroupName");
357 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
359 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
360 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
361 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
362 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
363 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
364 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
365 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
366 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
367 expectedVolumeGroupParams.put("userParamKey", "userParamValue");
369 Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, sdncVfModuleQueryResponse);
371 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
375 public void test_createMsoRequest() {
376 RequestContext requestContext = new RequestContext();
377 requestContext.setMsoRequestId("msoRequestId");
379 ServiceInstance serviceInstance = new ServiceInstance();
380 serviceInstance.setServiceInstanceId("serviceInstanceId");
382 MsoRequest expectedMsoRequest = new MsoRequest();
383 expectedMsoRequest.setRequestId(requestContext.getMsoRequestId());
384 expectedMsoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
386 MsoRequest actualMsoRequest = vnfAdapterObjectMapper.createMsoRequest(requestContext, serviceInstance);
388 assertThat(expectedMsoRequest, sameBeanAs(actualMsoRequest));