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.Test;
40 import org.mockito.MockitoAnnotations;
41 import org.mockito.Spy;
42 import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
43 import org.onap.so.adapters.vnfrest.DeleteVolumeGroupRequest;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
48 import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext;
49 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
50 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
51 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
52 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
53 import org.onap.so.db.catalog.beans.OrchestrationStatus;
54 import org.onap.so.entity.MsoRequest;
56 public class VnfAdapterObjectMapperTest {
57 private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/";
60 private VnfAdapterObjectMapper vnfAdapterObjectMapper = new VnfAdapterObjectMapper();
63 public void before() {
64 MockitoAnnotations.initMocks(this);
70 reset(vnfAdapterObjectMapper);
74 public void test_createVolumeGroupRequestMapper() throws Exception {
75 RequestContext requestContext = new RequestContext();
76 requestContext.setMsoRequestId("msoRequestId");
78 ServiceInstance serviceInstance = new ServiceInstance();
79 serviceInstance.setServiceInstanceId("serviceInstanceId");
81 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
82 modelInfoServiceInstance.setModelVersion("modelVersion");
83 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
85 GenericVnf genericVnf = new GenericVnf();
86 genericVnf.setVnfId("vnfId");
87 genericVnf.setVnfName("vnfName");
88 genericVnf.setVnfType("vnfType");
89 serviceInstance.getVnfs().add(genericVnf);
91 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
92 modelInfoVfModule.setModelName("modelName");
93 modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
95 VolumeGroup volumeGroup = new VolumeGroup();
96 volumeGroup.setVolumeGroupId("volumeGroupId");
97 volumeGroup.setVolumeGroupName("volumeGroupName");
98 volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
99 volumeGroup.setModelInfoVfModule(modelInfoVfModule);
101 serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
104 CloudRegion cloudRegion = new CloudRegion();
105 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
106 cloudRegion.setTenantId("tenantId");
108 OrchestrationContext orchestrationContext = new OrchestrationContext();
109 orchestrationContext.setIsRollbackEnabled(true);
111 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
113 CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
115 expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
116 expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
117 expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
118 expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
119 expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
120 expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
121 expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
122 expectedCreateVolumeGroupRequest.setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
124 Map<String, String> 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.setSuppressBackout(orchestrationContext.getIsRollbackEnabled());
136 expectedCreateVolumeGroupRequest.setFailIfExists(true);
138 MsoRequest msoRequest = new MsoRequest();
139 msoRequest.setRequestId(requestContext.getMsoRequestId());
140 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
141 expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
143 expectedCreateVolumeGroupRequest.setMessageId("messageId");
144 expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
146 doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
147 doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
149 CreateVolumeGroupRequest actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, sdncVfModuleQueryResponse);
151 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
155 public void test_createVolumeGroupRequestMapper_for_alaCarte_flow() throws Exception {
156 RequestContext requestContext = new RequestContext();
157 requestContext.setMsoRequestId("msoRequestId");
159 ServiceInstance serviceInstance = new ServiceInstance();
160 serviceInstance.setServiceInstanceId("serviceInstanceId");
162 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
163 modelInfoServiceInstance.setModelVersion("modelVersion");
164 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
166 GenericVnf genericVnf = new GenericVnf();
167 genericVnf.setVnfId("vnfId");
168 genericVnf.setVnfName("vnfName");
169 genericVnf.setVnfType("vnfType");
170 serviceInstance.getVnfs().add(genericVnf);
173 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
174 modelInfoVfModule.setModelName("modelName");
175 modelInfoVfModule.setModelCustomizationUUID("modelCustomizationUUID");
177 VolumeGroup volumeGroup = new VolumeGroup();
178 volumeGroup.setVolumeGroupId("volumeGroupId");
179 volumeGroup.setVolumeGroupName("volumeGroupName");
180 volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
181 volumeGroup.setModelInfoVfModule(modelInfoVfModule);
182 serviceInstance.getVnfs().get(0).getVolumeGroups().add(volumeGroup);
184 CloudRegion cloudRegion = new CloudRegion();
185 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
186 cloudRegion.setTenantId("tenantId");
188 OrchestrationContext orchestrationContext = new OrchestrationContext();
189 orchestrationContext.setIsRollbackEnabled(true);
191 CreateVolumeGroupRequest expectedCreateVolumeGroupRequest = new CreateVolumeGroupRequest();
193 expectedCreateVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
194 expectedCreateVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
195 expectedCreateVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
196 expectedCreateVolumeGroupRequest.setVolumeGroupName(volumeGroup.getVolumeGroupName());
197 expectedCreateVolumeGroupRequest.setVnfType(genericVnf.getVnfType());
198 expectedCreateVolumeGroupRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
199 expectedCreateVolumeGroupRequest.setVfModuleType(volumeGroup.getModelInfoVfModule().getModelName());
200 expectedCreateVolumeGroupRequest.setModelCustomizationUuid(volumeGroup.getModelInfoVfModule().getModelCustomizationUUID());
202 Map<String, String> volumeGroupParams = new HashMap<>();
203 volumeGroupParams.put("vnf_id", genericVnf.getVnfId());
204 volumeGroupParams.put("vnf_name", genericVnf.getVnfName());
205 volumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
206 volumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
208 expectedCreateVolumeGroupRequest.setVolumeGroupParams(volumeGroupParams);
210 expectedCreateVolumeGroupRequest.setSkipAAI(true);
211 expectedCreateVolumeGroupRequest.setSuppressBackout(orchestrationContext.getIsRollbackEnabled());
212 expectedCreateVolumeGroupRequest.setFailIfExists(true);
214 MsoRequest msoRequest = new MsoRequest();
215 msoRequest.setRequestId(requestContext.getMsoRequestId());
216 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
217 expectedCreateVolumeGroupRequest.setMsoRequest(msoRequest);
219 expectedCreateVolumeGroupRequest.setMessageId("messageId");
220 expectedCreateVolumeGroupRequest.setNotificationUrl("endpoint/VNFAResponse/messageId");
222 doReturn("endpoint/").when(vnfAdapterObjectMapper).getProperty(isA(String.class));
223 doReturn("messageId").when(vnfAdapterObjectMapper).getRandomUuid();
225 CreateVolumeGroupRequest actualCreateVolumeGroupRequest = vnfAdapterObjectMapper.createVolumeGroupRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, genericVnf, volumeGroup, null);
227 assertThat(actualCreateVolumeGroupRequest, sameBeanAs(expectedCreateVolumeGroupRequest));
231 public void test_deleteVolumeGroupRequestMapper() throws Exception {
232 DeleteVolumeGroupRequest expectedDeleteVolumeGroupRequest = new DeleteVolumeGroupRequest();
234 CloudRegion cloudRegion = new CloudRegion();
235 cloudRegion.setLcpCloudRegionId("lcpCloudRegionId");
236 expectedDeleteVolumeGroupRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
238 cloudRegion.setTenantId("tenantId");
239 expectedDeleteVolumeGroupRequest.setTenantId(cloudRegion.getTenantId());
241 VolumeGroup volumeGroup = new VolumeGroup();
242 volumeGroup.setVolumeGroupId("volumeGroupId");
243 expectedDeleteVolumeGroupRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
245 volumeGroup.setHeatStackId("heatStackId");
246 expectedDeleteVolumeGroupRequest.setVolumeGroupStackId(volumeGroup.getHeatStackId());
248 expectedDeleteVolumeGroupRequest.setSkipAAI(true);
250 MsoRequest msoRequest = new MsoRequest();
251 RequestContext requestContext = new RequestContext();
252 requestContext.setMsoRequestId("msoRequestId");
253 msoRequest.setRequestId(requestContext.getMsoRequestId());
254 ServiceInstance serviceInstance = new ServiceInstance();
255 serviceInstance.setServiceInstanceId("serviceInstanceId");
256 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
257 expectedDeleteVolumeGroupRequest.setMsoRequest(msoRequest);
259 String messageId = "messageId";
260 String endpoint = "endpoint";
261 doReturn(messageId).when(vnfAdapterObjectMapper).getRandomUuid();
262 doReturn(endpoint).when(vnfAdapterObjectMapper).getProperty(isA(String.class));
263 expectedDeleteVolumeGroupRequest.setMessageId(messageId);
264 expectedDeleteVolumeGroupRequest.setNotificationUrl(endpoint + "/VNFAResponse/" + messageId);
266 DeleteVolumeGroupRequest actualDeleteVolumeGroupRequest = vnfAdapterObjectMapper.deleteVolumeGroupRequestMapper(requestContext, cloudRegion, serviceInstance, volumeGroup);
268 assertThat(actualDeleteVolumeGroupRequest, sameBeanAs(expectedDeleteVolumeGroupRequest));
272 public void test_createVolumeGroupParams() throws Exception {
273 GenericVnf genericVnf = new GenericVnf();
274 genericVnf.setVnfId("vnfId");
275 genericVnf.setVnfName("vnfName");
277 RequestContext requestContext = new RequestContext();
279 VolumeGroup volumeGroup = new VolumeGroup();
280 volumeGroup.setVolumeGroupId("volumeGroupId");
281 volumeGroup.setVolumeGroupName("volumeGroupName");
283 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
285 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
286 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
287 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
288 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
289 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
290 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
291 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
292 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
294 Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, sdncVfModuleQueryResponse);
296 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
300 public void test_createVolumeGroupParams_without_sdncResponse() throws Exception {
301 GenericVnf genericVnf = new GenericVnf();
302 genericVnf.setVnfId("vnfId");
303 genericVnf.setVnfName("vnfName");
305 VolumeGroup volumeGroup = new VolumeGroup();
306 volumeGroup.setVolumeGroupId("volumeGroupId");
307 volumeGroup.setVolumeGroupName("volumeGroupName");
309 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
310 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
311 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
312 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
313 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
314 RequestContext requestContext = new RequestContext();
315 Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, null);
317 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
321 public void test_createVolumeGroupParams_with_user_params() throws Exception {
322 GenericVnf genericVnf = new GenericVnf();
323 genericVnf.setVnfId("vnfId");
324 genericVnf.setVnfName("vnfName");
326 RequestContext requestContext = new RequestContext();
327 Map<String, Object> userParamsMap = new HashMap<>();
328 userParamsMap.put("name", "userParamKey");
329 userParamsMap.put("value", "userParamValue");
330 List<Map<String, Object>> userParams = new ArrayList<>();
331 userParams.add(userParamsMap);
332 RequestParameters requestParameters = new RequestParameters();
333 requestParameters.setUserParams(userParams);
334 requestContext.setRequestParameters(requestParameters);
335 VolumeGroup volumeGroup = new VolumeGroup();
336 volumeGroup.setVolumeGroupId("volumeGroupId");
337 volumeGroup.setVolumeGroupName("volumeGroupName");
339 String sdncVfModuleQueryResponse = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleSdncVfModuleTopology.json")));
341 Map<String, String> expectedVolumeGroupParams = new HashMap<>();
342 expectedVolumeGroupParams.put("vnf_id", genericVnf.getVnfId());
343 expectedVolumeGroupParams.put("vnf_name", genericVnf.getVnfName());
344 expectedVolumeGroupParams.put("vf_module_id", volumeGroup.getVolumeGroupId());
345 expectedVolumeGroupParams.put("vf_module_name", volumeGroup.getVolumeGroupName());
346 expectedVolumeGroupParams.put("paramOne", "paramOneValue");
347 expectedVolumeGroupParams.put("paramTwo", "paramTwoValue");
348 expectedVolumeGroupParams.put("paramThree", "paramThreeValue");
349 expectedVolumeGroupParams.put("userParamKey", "userParamValue");
351 Map<String, String> actualVolumeGroupParams = vnfAdapterObjectMapper.createVolumeGroupParams(requestContext,genericVnf, volumeGroup, sdncVfModuleQueryResponse);
353 assertEquals(expectedVolumeGroupParams, actualVolumeGroupParams);
357 public void test_createMsoRequest() {
358 RequestContext requestContext = new RequestContext();
359 requestContext.setMsoRequestId("msoRequestId");
361 ServiceInstance serviceInstance = new ServiceInstance();
362 serviceInstance.setServiceInstanceId("serviceInstanceId");
364 MsoRequest expectedMsoRequest = new MsoRequest();
365 expectedMsoRequest.setRequestId(requestContext.getMsoRequestId());
366 expectedMsoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
368 MsoRequest actualMsoRequest = vnfAdapterObjectMapper.createMsoRequest(requestContext, serviceInstance);
370 assertThat(expectedMsoRequest, sameBeanAs(actualMsoRequest));