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;
36 import org.junit.Rule;
37 import org.junit.Test;
38 import org.junit.rules.ExpectedException;
39 import org.junit.runner.RunWith;
40 import org.mockito.InjectMocks;
41 import org.mockito.Spy;
42 import org.mockito.junit.MockitoJUnitRunner;
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;
59 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfModuleOperationInformation;
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, serviceInstance, customer,
142 cloudRegion, requestContext, null);
144 String jsonToCompare = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationAssign.json")));
146 ObjectMapper omapper = new ObjectMapper();
147 GenericResourceApiVfModuleOperationInformation reqMapper1 = omapper.readValue(
149 GenericResourceApiVfModuleOperationInformation.class);
151 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).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 = mapper.reqMapper(
179 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null, vnf, serviceInstance, null,
180 null, requestContext, null);
182 String jsonToCompare = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationUnassign.json")));
184 ObjectMapper omapper = new ObjectMapper();
185 GenericResourceApiVfModuleOperationInformation reqMapper1 = omapper.readValue(
187 GenericResourceApiVfModuleOperationInformation.class);
189 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).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 = mapper.reqMapper(
216 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null, vnf, serviceInstance, null,
217 null, requestContext, null);
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, serviceInstance, customer,
279 cloudRegion, requestContext, null);
281 assertNull(vfModuleSDNCrequest.getServiceInformation().getOnapModelInformation().getModelCustomizationUuid());
282 assertEquals("vnfModelCustomizationUuid", vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
283 assertEquals("vfModuleModelCustomizationUuid", 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, serviceInstance, customer,
334 cloudRegion, requestContext, null);