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.Matchers.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_deleteVolumeGroupRequestMapper() throws Exception {
234 DeleteVolumeGroupRequest expectedDeleteVolumeGroupRequest = new DeleteVolumeGroupRequest();
236 CloudRegion cloudRegion = new CloudRegion();
237 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
238 expectedDeleteVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
240 cloudRegion.setTenantId("tenantId");
241 expectedDeleteVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
243 VolumeGroup volumeGroup = new VolumeGroup();
244 volumeGroup.setVolumeGroupId("volumeGroupId");
245 expectedDeleteVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
247 volumeGroup.setHeatStackId("heatStackId");
248 expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getHeatStackId());
250 expectedDeleteVolumeGroupRequest.setSkipAAI(true);
252 MsoRequest msoRequest = new MsoRequest();
253 RequestContext requestContext = new RequestContext();
254 requestContext.setMsoRequestId("msoRequestId");
255 msoRequest.setRequestId(requestContext.getMsoRequestId());
256 ServiceInstance serviceInstance = new ServiceInstance();
257 serviceInstance.setServiceInstanceId("serviceInstanceId");
258 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
259 expectedDeleteVolumeGroupRequest.setMsoRequest(msoRequest);
261 String messageId = "messageId";
262 String endpoint = "endpoint";
263 doReturn(messageId).when(vnfAdapterObjectMapper).getRandomUuid();
264 doReturn(endpoint).when(vnfAdapterObjectMapper).getProperty(isA(String.class));
265 expectedDeleteVolumeGroupRequest.setMessageId(messageId);
266 expectedDeleteVolumeGroupRequest.setNotificationUrl(endpoint + "/VNFAResponse/" + messageId);
268 DeleteVolumeGroupRequest actualDeleteVolumeGroupRequest = vnfAdapterObjectMapper.deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
270 assertThat(actualDeleteVolumeGroupRequest, sameBeanAs(expectedDeleteVolumeGroupRequest));
275 public void test_createVolumeGroupParams() throws Exception {
276 GenericVnf genericVnf = new GenericVnf();
277 genericVnf.setVnfId("vnfId");
278 genericVnf.setVnfName("vnfName");
280 RequestContext requestContext = new RequestContext();
282 VolumeGroup volumeGroup = new VolumeGroup();
283 volumeGroup.setVolumeGroupId("volumeGroupId");
284 volumeGroup.setVolumeGroupName("volumeGroupName");
286 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
288 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
289 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
290 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
291 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
292 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
293 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
294 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
295 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
297 Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, sdncVfModuleQueryResponse);
299 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
303 public void test_createVolumeGroupParams_without_sdncResponse() throws Exception {
304 GenericVnf genericVnf = new GenericVnf();
305 genericVnf.setVnfId("vnfId");
306 genericVnf.setVnfName("vnfName");
308 VolumeGroup volumeGroup = new VolumeGroup();
309 volumeGroup.setVolumeGroupId("volumeGroupId");
310 volumeGroup.setVolumeGroupName("volumeGroupName");
312 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
313 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
314 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
315 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
316 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
317 RequestContext requestContext = new RequestContext();
318 Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, null);
320 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
325 public void test_createVolumeGroupParams_with_user_params() throws Exception {
326 GenericVnf genericVnf = new GenericVnf();
327 genericVnf.setVnfId("vnfId");
328 genericVnf.setVnfName("vnfName");
330 RequestContext requestContext = new RequestContext();
331 Map<String, Object> userParamsMap = new HashMap<>();
332 userParamsMap.put("name", "userParamKey");
333 userParamsMap.put("value", "userParamValue");
334 List<Map<String, Object>> userParams = new ArrayList<>();
335 userParams.add(userParamsMap);
336 RequestParameters requestParameters = new RequestParameters();
337 requestParameters.setUserParams(userParams);
338 requestContext.setRequestParameters(requestParameters);
339 VolumeGroup volumeGroup = new VolumeGroup();
340 volumeGroup.setVolumeGroupId("volumeGroupId");
341 volumeGroup.setVolumeGroupName("volumeGroupName");
343 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
345 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
346 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
347 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
348 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
349 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
350 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
351 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
352 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
353 expectedVolumeGroupParams.put("userParamKey", "userParamValue");
355 Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, sdncVfModuleQueryResponse);
357 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
361 public void test_createMsoRequest() {
362 RequestContext requestContext = new RequestContext();
363 requestContext.setMsoRequestId("msoRequestId");
365 ServiceInstance serviceInstance = new ServiceInstance();
366 serviceInstance.setServiceInstanceId("serviceInstanceId");
368 MsoRequest expectedMsoRequest = new MsoRequest();
369 expectedMsoRequest.setRequestId(requestContext.getMsoRequestId());
370 expectedMsoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
372 MsoRequest actualMsoRequest = vnfAdapterObjectMapper.createMsoRequest(requestContext, serviceInstance);
374 assertThat(expectedMsoRequest, sameBeanAs(actualMsoRequest));