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.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.servicedecomposition.bbobjects.CloudRegion;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
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.ServiceSubscription;
48 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
49 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
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.ModelInfoGenericVnf;
53 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
54 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
55 import org.onap.so.client.exception.MapperException;
56 import org.onap.so.client.sdnc.beans.SDNCSvcAction;
57 import org.onap.so.client.sdnc.beans.SDNCSvcOperation;
58 import com.fasterxml.jackson.databind.ObjectMapper;
60 @RunWith(MockitoJUnitRunner.class)
61 public class VfModuleTopologyOperationRequestMapperTest {
63 private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/";
64 private final static String ERRORMESSAGE = "VF Module model info is null for testVfModuleId";
67 private GeneralTopologyObjectMapper generalTopologyObjectMapper;
70 private VfModuleTopologyOperationRequestMapper mapper = new VfModuleTopologyOperationRequestMapper();
73 public ExpectedException expectedException = ExpectedException.none();
76 public void assignGenericResourceApiVfModuleInformationTest() throws Exception {
78 // prepare and set service instance
79 ServiceInstance serviceInstance = new ServiceInstance();
80 serviceInstance.setServiceInstanceId("serviceInstanceId");
81 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
82 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
83 modelInfoServiceInstance.setModelName("serviceModelName");
84 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
85 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
86 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
87 // prepare Customer object
88 Customer customer = new Customer();
89 customer.setGlobalCustomerId("globalCustomerId");
90 ServiceSubscription serviceSubscription = new ServiceSubscription();
91 serviceSubscription.setServiceType("productFamilyId");
92 customer.setServiceSubscription(serviceSubscription);
94 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
96 RequestContext requestContext = new RequestContext();
97 Map<String, Object> userParams = new HashMap<>();
98 userParams.put("key1", "value1");
99 requestContext.setUserParams(userParams);
100 requestContext.setProductFamilyId("productFamilyId");
101 RequestParameters requestParameters = new RequestParameters();
102 requestParameters.setUsePreload(true);
103 requestContext.setRequestParameters(requestParameters);
104 requestContext.setMsoRequestId("MsoRequestId");
106 GenericVnf vnf = new GenericVnf();
107 vnf.setVnfId("testVnfId");
108 vnf.setVnfType("testVnfType");
109 vnf.setVnfName("testVnfName");
110 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
111 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
112 modelInfoGenericVnf.setModelName("vnfModelName");
113 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
114 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
115 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
116 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
118 VfModule vfModule = new VfModule();
119 vfModule.setVfModuleId("testVfModuleId");
120 vfModule.setVfModuleName("testVfModuleName");
121 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
122 modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
123 modelInfoVfModule.setModelName("vfModuleModelName");
124 modelInfoVfModule.setModelVersion("vfModuleModelVersion");
125 modelInfoVfModule.setModelUUID("vfModuleModelUuid");
126 modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
127 vfModule.setModelInfoVfModule(modelInfoVfModule);
128 HashMap<String, String> cloudParams = new HashMap<String, String>();
129 cloudParams.put("key2", "value2");
130 vfModule.setCloudParams(cloudParams);
132 VolumeGroup volumeGroup = new VolumeGroup();
133 volumeGroup.setVolumeGroupId("volumeGroupId");
134 volumeGroup.setVolumeGroupName("volumeGroupName");
136 CloudRegion cloudRegion = new CloudRegion();
138 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
139 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, volumeGroup, vnf,
140 serviceInstance, customer, cloudRegion, requestContext, null, new URI("http://localhost:8080"));
142 String jsonToCompare = new String(Files.readAllBytes(
143 Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationAssign.json")));
145 ObjectMapper omapper = new ObjectMapper();
146 GenericResourceApiVfModuleOperationInformation reqMapper1 =
147 omapper.readValue(jsonToCompare, GenericResourceApiVfModuleOperationInformation.class);
149 assertThat(vfModuleSDNCrequest, sameBeanAs(reqMapper1).ignoring("sdncRequestHeader.svcRequestId")
150 .ignoring("requestInformation.requestId"));
151 assertEquals("MsoRequestId", vfModuleSDNCrequest.getRequestInformation().getRequestId());
155 public void unassignGenericResourceApiVfModuleInformationTest() throws Exception {
157 // prepare and set service instance
158 ServiceInstance serviceInstance = new ServiceInstance();
159 serviceInstance.setServiceInstanceId("serviceInstanceId");
161 // prepare and set vnf instance
163 GenericVnf vnf = new GenericVnf();
164 vnf.setVnfId("testVnfId");
165 vnf.setVnfType("testVnfType");
167 // prepare and set vf module instance
169 VfModule vfModule = new VfModule();
170 vfModule.setVfModuleId("testVfModuleId");
171 vfModule.setVfModuleName("testVfModuleName");
173 RequestContext requestContext = new RequestContext();
174 requestContext.setMsoRequestId("MsoRequestId");
176 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest =
177 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null,
178 vnf, serviceInstance, null, null, requestContext, null, new URI("http://localhost:8080"));
180 String jsonToCompare = new String(Files.readAllBytes(
181 Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationUnassign.json")));
183 ObjectMapper omapper = new ObjectMapper();
184 GenericResourceApiVfModuleOperationInformation reqMapper1 =
185 omapper.readValue(jsonToCompare, GenericResourceApiVfModuleOperationInformation.class);
187 assertThat(vfModuleSDNCrequest, sameBeanAs(reqMapper1).ignoring("sdncRequestHeader.svcRequestId")
188 .ignoring("requestInformation.requestId"));
189 assertEquals("MsoRequestId", vfModuleSDNCrequest.getRequestInformation().getRequestId());
193 public void unassignGenericResourceApiVfModuleInformationNullMsoReqIdTest() throws Exception {
195 // prepare and set service instance
196 ServiceInstance serviceInstance = new ServiceInstance();
197 serviceInstance.setServiceInstanceId("serviceInstanceId");
199 // prepare and set vnf instance
201 GenericVnf vnf = new GenericVnf();
202 vnf.setVnfId("testVnfId");
203 vnf.setVnfType("testVnfType");
205 // prepare and set vf module instance
207 VfModule vfModule = new VfModule();
208 vfModule.setVfModuleId("testVfModuleId");
209 vfModule.setVfModuleName("testVfModuleName");
211 RequestContext requestContext = new RequestContext();
213 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest =
214 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null,
215 vnf, serviceInstance, null, null, requestContext, null, new URI("http://localhost:8080"));
217 assertNotNull(vfModuleSDNCrequest.getRequestInformation().getRequestId());
221 public void reqMapperTest() throws Exception {
223 // prepare and set service instance
224 ServiceInstance serviceInstance = new ServiceInstance();
225 serviceInstance.setServiceInstanceId("serviceInstanceId");
226 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
227 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
228 modelInfoServiceInstance.setModelName("serviceModelName");
229 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
230 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
232 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
233 // prepare Customer object
234 Customer customer = new Customer();
235 customer.setGlobalCustomerId("globalCustomerId");
236 customer.setServiceSubscription(new ServiceSubscription());
237 // set Customer on service instance
238 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
240 RequestContext requestContext = new RequestContext();
241 RequestParameters requestParameters = new RequestParameters();
242 HashMap<String, Object> userParams1 = new HashMap<>();
243 userParams1.put("key1", "value1");
244 List<Map<String, Object>> userParams = new ArrayList<>();
245 userParams.add(userParams1);
247 requestParameters.setUserParams(userParams);
248 requestContext.setRequestParameters(requestParameters);
249 requestContext.setProductFamilyId("productFamilyId");
251 GenericVnf vnf = new GenericVnf();
252 vnf.setVnfId("testVnfId");
253 vnf.setVnfType("testVnfType");
254 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
255 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
256 modelInfoGenericVnf.setModelName("vnfModelName");
257 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
258 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
259 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
260 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
262 VfModule vfModule = new VfModule();
263 vfModule.setVfModuleId("testVfModuleId");
264 vfModule.setVfModuleName("testVfModuleName");
265 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
266 modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
267 modelInfoVfModule.setModelName("vfModuleModelName");
268 modelInfoVfModule.setModelVersion("vfModuleModelVersion");
269 modelInfoVfModule.setModelUUID("vfModuleModelUuid");
270 modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
271 vfModule.setModelInfoVfModule(modelInfoVfModule);
273 CloudRegion cloudRegion = new CloudRegion();
275 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
276 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf,
277 serviceInstance, customer, cloudRegion, requestContext, null, new URI("http://localhost:8080"));
279 assertNull(vfModuleSDNCrequest.getServiceInformation().getOnapModelInformation().getModelCustomizationUuid());
280 assertEquals("vnfModelCustomizationUuid",
281 vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
282 assertEquals("vfModuleModelCustomizationUuid",
283 vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());
287 public void reqMapperNoModelInfoTest() throws Exception {
289 // prepare and set service instance
290 ServiceInstance serviceInstance = new ServiceInstance();
291 serviceInstance.setServiceInstanceId("serviceInstanceId");
292 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
293 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
294 modelInfoServiceInstance.setModelName("serviceModelName");
295 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
296 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
298 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
299 // prepare Customer object
300 Customer customer = new Customer();
301 customer.setGlobalCustomerId("globalCustomerId");
302 customer.setServiceSubscription(new ServiceSubscription());
303 // set Customer on service instance
304 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
306 RequestContext requestContext = new RequestContext();
307 Map<String, Object> userParams = new HashMap<String, Object>();
308 userParams.put("key1", "value1");
309 requestContext.setUserParams(userParams);
310 requestContext.setProductFamilyId("productFamilyId");
312 GenericVnf vnf = new GenericVnf();
313 vnf.setVnfId("testVnfId");
314 vnf.setVnfType("testVnfType");
315 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
316 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
317 modelInfoGenericVnf.setModelName("vnfModelName");
318 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
319 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
320 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
321 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
323 VfModule vfModule = new VfModule();
324 vfModule.setVfModuleId("testVfModuleId");
325 vfModule.setVfModuleName("testVfModuleName");
326 vfModule.setModelInfoVfModule(null);
328 CloudRegion cloudRegion = new CloudRegion();
330 expectedException.expect(MapperException.class);
331 expectedException.expectMessage(ERRORMESSAGE);
333 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf,
334 serviceInstance, customer, cloudRegion, requestContext, null, new URI("http://localhost:8080"));
338 public void reqMapperChangeAssignTest() throws Exception {
340 // prepare and set service instance
341 ServiceInstance serviceInstance = new ServiceInstance();
342 serviceInstance.setServiceInstanceId("serviceInstanceId");
343 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
344 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
345 modelInfoServiceInstance.setModelName("serviceModelName");
346 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
347 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
349 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
350 // prepare Customer object
351 Customer customer = new Customer();
352 customer.setGlobalCustomerId("globalCustomerId");
353 customer.setServiceSubscription(new ServiceSubscription());
354 // set Customer on service instance
355 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
357 RequestContext requestContext = new RequestContext();
358 RequestParameters requestParameters = new RequestParameters();
359 HashMap<String, Object> userParams1 = new HashMap<>();
360 userParams1.put("key1", "value1");
361 List<Map<String, Object>> userParams = new ArrayList<>();
362 userParams.add(userParams1);
364 requestParameters.setUserParams(userParams);
365 requestContext.setRequestParameters(requestParameters);
366 requestContext.setProductFamilyId("productFamilyId");
368 GenericVnf vnf = new GenericVnf();
369 vnf.setVnfId("testVnfId");
370 vnf.setVnfType("testVnfType");
371 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
372 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
373 modelInfoGenericVnf.setModelName("vnfModelName");
374 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
375 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
376 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
377 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
379 VfModule vfModule = new VfModule();
380 vfModule.setVfModuleId("testVfModuleId");
381 vfModule.setVfModuleName("testVfModuleName");
382 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
383 modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
384 modelInfoVfModule.setModelName("vfModuleModelName");
385 modelInfoVfModule.setModelVersion("vfModuleModelVersion");
386 modelInfoVfModule.setModelUUID("vfModuleModelUuid");
387 modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
388 vfModule.setModelInfoVfModule(modelInfoVfModule);
390 CloudRegion cloudRegion = new CloudRegion();
392 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
393 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.CHANGE_ASSIGN, vfModule, null, vnf,
394 serviceInstance, customer, cloudRegion, requestContext, null, new URI("http://localhost:8080"));
396 assertEquals("vnfModelCustomizationUuid",
397 vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
398 assertEquals("vfModuleModelCustomizationUuid",
399 vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());