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.bpmn.infrastructure.sdnc.mapper;
23 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
24 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNotNull;
27 import static org.junit.Assert.assertNull;
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.Rule;
36 import org.junit.Test;
37 import org.junit.rules.ExpectedException;
38 import org.junit.runner.RunWith;
39 import org.mockito.InjectMocks;
40 import org.mockito.Spy;
41 import org.mockito.junit.MockitoJUnitRunner;
42 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfModuleOperationInformation;
43 import org.onap.so.bpmn.infrastructure.sdnc.mapper.GeneralTopologyObjectMapper;
44 import org.onap.so.bpmn.infrastructure.sdnc.mapper.VfModuleTopologyOperationRequestMapper;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
48 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
49 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
50 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
51 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
52 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
53 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
54 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
55 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
56 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
57 import org.onap.so.client.exception.MapperException;
58 import org.onap.so.client.sdnc.beans.SDNCSvcAction;
59 import org.onap.so.client.sdnc.beans.SDNCSvcOperation;
60 import com.fasterxml.jackson.databind.ObjectMapper;
62 @RunWith(MockitoJUnitRunner.class)
63 public class VfModuleTopologyOperationRequestMapperTest {
65 private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/";
66 private final static String ERRORMESSAGE = "VF Module model info is null for testVfModuleId";
69 private GeneralTopologyObjectMapper generalTopologyObjectMapper;
72 private VfModuleTopologyOperationRequestMapper mapper = new VfModuleTopologyOperationRequestMapper();
75 public ExpectedException expectedException = ExpectedException.none();
78 public void assignGenericResourceApiVfModuleInformationTest() throws Exception {
80 // prepare and set service instance
81 ServiceInstance serviceInstance = new ServiceInstance();
82 serviceInstance.setServiceInstanceId("serviceInstanceId");
83 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
84 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
85 modelInfoServiceInstance.setModelName("serviceModelName");
86 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
87 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
88 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
89 // prepare Customer object
90 Customer customer = new Customer();
91 customer.setGlobalCustomerId("globalCustomerId");
92 ServiceSubscription serviceSubscription = new ServiceSubscription();
93 serviceSubscription.setServiceType("productFamilyId");
94 customer.setServiceSubscription(serviceSubscription);
96 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
98 RequestContext requestContext = new RequestContext();
99 Map<String, Object> userParams = new HashMap<>();
100 userParams.put("key1", "value1");
101 requestContext.setUserParams(userParams);
102 requestContext.setProductFamilyId("productFamilyId");
103 RequestParameters requestParameters = new RequestParameters();
104 requestParameters.setUsePreload(true);
105 requestContext.setRequestParameters(requestParameters);
106 requestContext.setMsoRequestId("MsoRequestId");
108 GenericVnf vnf = new GenericVnf();
109 vnf.setVnfId("testVnfId");
110 vnf.setVnfType("testVnfType");
111 vnf.setVnfName("testVnfName");
112 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
113 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
114 modelInfoGenericVnf.setModelName("vnfModelName");
115 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
116 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
117 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
118 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
120 VfModule vfModule = new VfModule();
121 vfModule.setVfModuleId("testVfModuleId");
122 vfModule.setVfModuleName("testVfModuleName");
123 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
124 modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
125 modelInfoVfModule.setModelName("vfModuleModelName");
126 modelInfoVfModule.setModelVersion("vfModuleModelVersion");
127 modelInfoVfModule.setModelUUID("vfModuleModelUuid");
128 modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
129 vfModule.setModelInfoVfModule(modelInfoVfModule);
130 HashMap<String, String> cloudParams = new HashMap<String, String>();
131 cloudParams.put("key2", "value2");
132 vfModule.setCloudParams(cloudParams);
134 VolumeGroup volumeGroup = new VolumeGroup();
135 volumeGroup.setVolumeGroupId("volumeGroupId");
136 volumeGroup.setVolumeGroupName("volumeGroupName");
138 CloudRegion cloudRegion = new CloudRegion();
140 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
141 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, volumeGroup, vnf,
142 serviceInstance, customer, cloudRegion, requestContext, null, new URI("http://localhost:8080"));
144 String jsonToCompare = new String(Files.readAllBytes(
145 Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationAssign.json")));
147 ObjectMapper omapper = new ObjectMapper();
148 GenericResourceApiVfModuleOperationInformation reqMapper1 =
149 omapper.readValue(jsonToCompare, GenericResourceApiVfModuleOperationInformation.class);
151 assertThat(vfModuleSDNCrequest, sameBeanAs(reqMapper1).ignoring("sdncRequestHeader.svcRequestId")
152 .ignoring("requestInformation.requestId"));
153 assertEquals("MsoRequestId", vfModuleSDNCrequest.getRequestInformation().getRequestId());
157 public void unassignGenericResourceApiVfModuleInformationTest() throws Exception {
159 // prepare and set service instance
160 ServiceInstance serviceInstance = new ServiceInstance();
161 serviceInstance.setServiceInstanceId("serviceInstanceId");
163 // prepare and set vnf instance
165 GenericVnf vnf = new GenericVnf();
166 vnf.setVnfId("testVnfId");
167 vnf.setVnfType("testVnfType");
169 // prepare and set vf module instance
171 VfModule vfModule = new VfModule();
172 vfModule.setVfModuleId("testVfModuleId");
173 vfModule.setVfModuleName("testVfModuleName");
175 RequestContext requestContext = new RequestContext();
176 requestContext.setMsoRequestId("MsoRequestId");
178 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest =
179 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null,
180 vnf, serviceInstance, null, null, requestContext, null, new URI("http://localhost:8080"));
182 String jsonToCompare = new String(Files.readAllBytes(
183 Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationUnassign.json")));
185 ObjectMapper omapper = new ObjectMapper();
186 GenericResourceApiVfModuleOperationInformation reqMapper1 =
187 omapper.readValue(jsonToCompare, GenericResourceApiVfModuleOperationInformation.class);
189 assertThat(vfModuleSDNCrequest, sameBeanAs(reqMapper1).ignoring("sdncRequestHeader.svcRequestId")
190 .ignoring("requestInformation.requestId"));
191 assertEquals("MsoRequestId", vfModuleSDNCrequest.getRequestInformation().getRequestId());
195 public void unassignGenericResourceApiVfModuleInformationNullMsoReqIdTest() throws Exception {
197 // prepare and set service instance
198 ServiceInstance serviceInstance = new ServiceInstance();
199 serviceInstance.setServiceInstanceId("serviceInstanceId");
201 // prepare and set vnf instance
203 GenericVnf vnf = new GenericVnf();
204 vnf.setVnfId("testVnfId");
205 vnf.setVnfType("testVnfType");
207 // prepare and set vf module instance
209 VfModule vfModule = new VfModule();
210 vfModule.setVfModuleId("testVfModuleId");
211 vfModule.setVfModuleName("testVfModuleName");
213 RequestContext requestContext = new RequestContext();
215 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest =
216 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null,
217 vnf, serviceInstance, null, null, requestContext, null, new URI("http://localhost:8080"));
219 assertNotNull(vfModuleSDNCrequest.getRequestInformation().getRequestId());
223 public void reqMapperTest() throws Exception {
225 // prepare and set service instance
226 ServiceInstance serviceInstance = new ServiceInstance();
227 serviceInstance.setServiceInstanceId("serviceInstanceId");
228 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
229 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
230 modelInfoServiceInstance.setModelName("serviceModelName");
231 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
232 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
234 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
235 // prepare Customer object
236 Customer customer = new Customer();
237 customer.setGlobalCustomerId("globalCustomerId");
238 customer.setServiceSubscription(new ServiceSubscription());
239 // set Customer on service instance
240 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
242 RequestContext requestContext = new RequestContext();
243 RequestParameters requestParameters = new RequestParameters();
244 HashMap<String, Object> userParams1 = new HashMap<>();
245 userParams1.put("key1", "value1");
246 List<Map<String, Object>> userParams = new ArrayList<>();
247 userParams.add(userParams1);
249 requestParameters.setUserParams(userParams);
250 requestContext.setRequestParameters(requestParameters);
251 requestContext.setProductFamilyId("productFamilyId");
253 GenericVnf vnf = new GenericVnf();
254 vnf.setVnfId("testVnfId");
255 vnf.setVnfType("testVnfType");
256 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
257 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
258 modelInfoGenericVnf.setModelName("vnfModelName");
259 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
260 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
261 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
262 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
264 VfModule vfModule = new VfModule();
265 vfModule.setVfModuleId("testVfModuleId");
266 vfModule.setVfModuleName("testVfModuleName");
267 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
268 modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
269 modelInfoVfModule.setModelName("vfModuleModelName");
270 modelInfoVfModule.setModelVersion("vfModuleModelVersion");
271 modelInfoVfModule.setModelUUID("vfModuleModelUuid");
272 modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
273 vfModule.setModelInfoVfModule(modelInfoVfModule);
275 CloudRegion cloudRegion = new CloudRegion();
277 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
278 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf,
279 serviceInstance, customer, cloudRegion, requestContext, null, new URI("http://localhost:8080"));
281 assertNull(vfModuleSDNCrequest.getServiceInformation().getOnapModelInformation().getModelCustomizationUuid());
282 assertEquals("vnfModelCustomizationUuid",
283 vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
284 assertEquals("vfModuleModelCustomizationUuid",
285 vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());
289 public void reqMapperNoModelInfoTest() throws Exception {
291 // prepare and set service instance
292 ServiceInstance serviceInstance = new ServiceInstance();
293 serviceInstance.setServiceInstanceId("serviceInstanceId");
294 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
295 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
296 modelInfoServiceInstance.setModelName("serviceModelName");
297 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
298 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
300 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
301 // prepare Customer object
302 Customer customer = new Customer();
303 customer.setGlobalCustomerId("globalCustomerId");
304 customer.setServiceSubscription(new ServiceSubscription());
305 // set Customer on service instance
306 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
308 RequestContext requestContext = new RequestContext();
309 Map<String, Object> userParams = new HashMap<String, Object>();
310 userParams.put("key1", "value1");
311 requestContext.setUserParams(userParams);
312 requestContext.setProductFamilyId("productFamilyId");
314 GenericVnf vnf = new GenericVnf();
315 vnf.setVnfId("testVnfId");
316 vnf.setVnfType("testVnfType");
317 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
318 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
319 modelInfoGenericVnf.setModelName("vnfModelName");
320 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
321 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
322 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
323 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
325 VfModule vfModule = new VfModule();
326 vfModule.setVfModuleId("testVfModuleId");
327 vfModule.setVfModuleName("testVfModuleName");
328 vfModule.setModelInfoVfModule(null);
330 CloudRegion cloudRegion = new CloudRegion();
332 expectedException.expect(MapperException.class);
333 expectedException.expectMessage(ERRORMESSAGE);
335 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf,
336 serviceInstance, customer, cloudRegion, requestContext, null, new URI("http://localhost:8080"));
340 public void reqMapperChangeAssignTest() throws Exception {
342 // prepare and set service instance
343 ServiceInstance serviceInstance = new ServiceInstance();
344 serviceInstance.setServiceInstanceId("serviceInstanceId");
345 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
346 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
347 modelInfoServiceInstance.setModelName("serviceModelName");
348 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
349 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
351 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
352 // prepare Customer object
353 Customer customer = new Customer();
354 customer.setGlobalCustomerId("globalCustomerId");
355 customer.setServiceSubscription(new ServiceSubscription());
356 // set Customer on service instance
357 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
359 RequestContext requestContext = new RequestContext();
360 RequestParameters requestParameters = new RequestParameters();
361 HashMap<String, Object> userParams1 = new HashMap<>();
362 userParams1.put("key1", "value1");
363 List<Map<String, Object>> userParams = new ArrayList<>();
364 userParams.add(userParams1);
366 requestParameters.setUserParams(userParams);
367 requestContext.setRequestParameters(requestParameters);
368 requestContext.setProductFamilyId("productFamilyId");
370 GenericVnf vnf = new GenericVnf();
371 vnf.setVnfId("testVnfId");
372 vnf.setVnfType("testVnfType");
373 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
374 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
375 modelInfoGenericVnf.setModelName("vnfModelName");
376 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
377 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
378 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
379 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
381 VfModule vfModule = new VfModule();
382 vfModule.setVfModuleId("testVfModuleId");
383 vfModule.setVfModuleName("testVfModuleName");
384 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
385 modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
386 modelInfoVfModule.setModelName("vfModuleModelName");
387 modelInfoVfModule.setModelVersion("vfModuleModelVersion");
388 modelInfoVfModule.setModelUUID("vfModuleModelUuid");
389 modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
390 vfModule.setModelInfoVfModule(modelInfoVfModule);
392 CloudRegion cloudRegion = new CloudRegion();
394 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
395 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.CHANGE_ASSIGN, vfModule, null, vnf,
396 serviceInstance, customer, cloudRegion, requestContext, null, new URI("http://localhost:8080"));
398 assertEquals("vnfModelCustomizationUuid",
399 vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
400 assertEquals("vfModuleModelCustomizationUuid",
401 vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());