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;
28 import java.nio.file.Files;
29 import java.nio.file.Paths;
30 import java.util.ArrayList;
31 import java.util.HashMap;
32 import java.util.List;
34 import org.junit.Rule;
35 import org.junit.Test;
36 import org.junit.rules.ExpectedException;
37 import org.junit.runner.RunWith;
38 import org.mockito.InjectMocks;
39 import org.mockito.Spy;
40 import org.mockito.junit.MockitoJUnitRunner;
41 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
48 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
49 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
50 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
51 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
52 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
53 import org.onap.so.client.exception.MapperException;
54 import org.onap.so.client.sdnc.beans.SDNCSvcAction;
55 import org.onap.so.client.sdnc.beans.SDNCSvcOperation;
56 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfModuleOperationInformation;
57 import com.fasterxml.jackson.databind.ObjectMapper;
59 @RunWith(MockitoJUnitRunner.class)
60 public class VfModuleTopologyOperationRequestMapperTest {
62 private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/";
63 private final static String ERRORMESSAGE = "VF Module model info is null for testVfModuleId";
66 private GeneralTopologyObjectMapper generalTopologyObjectMapper;
69 private VfModuleTopologyOperationRequestMapper mapper = new VfModuleTopologyOperationRequestMapper();
72 public ExpectedException expectedException = ExpectedException.none();
75 public void assignGenericResourceApiVfModuleInformationTest() throws Exception {
77 // prepare and set service instance
78 ServiceInstance serviceInstance = new ServiceInstance();
79 serviceInstance.setServiceInstanceId("serviceInstanceId");
80 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
81 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
82 modelInfoServiceInstance.setModelName("serviceModelName");
83 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
84 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
85 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
86 // prepare Customer object
87 Customer customer = new Customer();
88 customer.setGlobalCustomerId("globalCustomerId");
89 ServiceSubscription serviceSubscription = new ServiceSubscription();
90 serviceSubscription.setServiceType("productFamilyId");
91 customer.setServiceSubscription(serviceSubscription);
93 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
95 RequestContext requestContext = new RequestContext();
96 Map<String, Object> userParams = new HashMap<>();
97 userParams.put("key1", "value1");
98 requestContext.setUserParams(userParams);
99 requestContext.setProductFamilyId("productFamilyId");
100 RequestParameters requestParameters = new RequestParameters();
101 requestParameters.setUsePreload(true);
102 requestContext.setRequestParameters(requestParameters);
103 requestContext.setMsoRequestId("MsoRequestId");
105 GenericVnf vnf = new GenericVnf();
106 vnf.setVnfId("testVnfId");
107 vnf.setVnfType("testVnfType");
108 vnf.setVnfName("testVnfName");
109 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
110 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
111 modelInfoGenericVnf.setModelName("vnfModelName");
112 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
113 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
114 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
115 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
117 VfModule vfModule = new VfModule();
118 vfModule.setVfModuleId("testVfModuleId");
119 vfModule.setVfModuleName("testVfModuleName");
120 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
121 modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
122 modelInfoVfModule.setModelName("vfModuleModelName");
123 modelInfoVfModule.setModelVersion("vfModuleModelVersion");
124 modelInfoVfModule.setModelUUID("vfModuleModelUuid");
125 modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
126 vfModule.setModelInfoVfModule(modelInfoVfModule);
127 HashMap<String, String> cloudParams = new HashMap<String, String>();
128 cloudParams.put("key2", "value2");
129 vfModule.setCloudParams(cloudParams);
131 VolumeGroup volumeGroup = new VolumeGroup();
132 volumeGroup.setVolumeGroupId("volumeGroupId");
133 volumeGroup.setVolumeGroupName("volumeGroupName");
135 CloudRegion cloudRegion = new CloudRegion();
137 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest =
138 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule,
139 volumeGroup, vnf, serviceInstance, customer, cloudRegion, requestContext, null);
141 String jsonToCompare = new String(Files.readAllBytes(
142 Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationAssign.json")));
144 ObjectMapper omapper = new ObjectMapper();
145 GenericResourceApiVfModuleOperationInformation reqMapper1 =
146 omapper.readValue(jsonToCompare, GenericResourceApiVfModuleOperationInformation.class);
148 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).ignoring("sdncRequestHeader.svcRequestId")
149 .ignoring("requestInformation.requestId"));
150 assertEquals("MsoRequestId", vfModuleSDNCrequest.getRequestInformation().getRequestId());
154 public void unassignGenericResourceApiVfModuleInformationTest() throws Exception {
156 // prepare and set service instance
157 ServiceInstance serviceInstance = new ServiceInstance();
158 serviceInstance.setServiceInstanceId("serviceInstanceId");
160 // prepare and set vnf instance
162 GenericVnf vnf = new GenericVnf();
163 vnf.setVnfId("testVnfId");
164 vnf.setVnfType("testVnfType");
166 // prepare and set vf module instance
168 VfModule vfModule = new VfModule();
169 vfModule.setVfModuleId("testVfModuleId");
170 vfModule.setVfModuleName("testVfModuleName");
172 RequestContext requestContext = new RequestContext();
173 requestContext.setMsoRequestId("MsoRequestId");
175 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest =
176 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null,
177 vnf, serviceInstance, null, null, requestContext, null);
179 String jsonToCompare = new String(Files.readAllBytes(
180 Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationUnassign.json")));
182 ObjectMapper omapper = new ObjectMapper();
183 GenericResourceApiVfModuleOperationInformation reqMapper1 =
184 omapper.readValue(jsonToCompare, GenericResourceApiVfModuleOperationInformation.class);
186 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).ignoring("sdncRequestHeader.svcRequestId")
187 .ignoring("requestInformation.requestId"));
188 assertEquals("MsoRequestId", vfModuleSDNCrequest.getRequestInformation().getRequestId());
192 public void unassignGenericResourceApiVfModuleInformationNullMsoReqIdTest() throws Exception {
194 // prepare and set service instance
195 ServiceInstance serviceInstance = new ServiceInstance();
196 serviceInstance.setServiceInstanceId("serviceInstanceId");
198 // prepare and set vnf instance
200 GenericVnf vnf = new GenericVnf();
201 vnf.setVnfId("testVnfId");
202 vnf.setVnfType("testVnfType");
204 // prepare and set vf module instance
206 VfModule vfModule = new VfModule();
207 vfModule.setVfModuleId("testVfModuleId");
208 vfModule.setVfModuleName("testVfModuleName");
210 RequestContext requestContext = new RequestContext();
212 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest =
213 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null,
214 vnf, serviceInstance, null, null, requestContext, null);
216 assertNotNull(vfModuleSDNCrequest.getRequestInformation().getRequestId());
220 public void reqMapperTest() throws Exception {
222 // prepare and set service instance
223 ServiceInstance serviceInstance = new ServiceInstance();
224 serviceInstance.setServiceInstanceId("serviceInstanceId");
225 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
226 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
227 modelInfoServiceInstance.setModelName("serviceModelName");
228 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
229 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
231 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
232 // prepare Customer object
233 Customer customer = new Customer();
234 customer.setGlobalCustomerId("globalCustomerId");
235 customer.setServiceSubscription(new ServiceSubscription());
236 // set Customer on service instance
237 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
239 RequestContext requestContext = new RequestContext();
240 RequestParameters requestParameters = new RequestParameters();
241 HashMap<String, Object> userParams1 = new HashMap<>();
242 userParams1.put("key1", "value1");
243 List<Map<String, Object>> userParams = new ArrayList<>();
244 userParams.add(userParams1);
246 requestParameters.setUserParams(userParams);
247 requestContext.setRequestParameters(requestParameters);
248 requestContext.setProductFamilyId("productFamilyId");
250 GenericVnf vnf = new GenericVnf();
251 vnf.setVnfId("testVnfId");
252 vnf.setVnfType("testVnfType");
253 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
254 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
255 modelInfoGenericVnf.setModelName("vnfModelName");
256 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
257 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
258 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
259 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
261 VfModule vfModule = new VfModule();
262 vfModule.setVfModuleId("testVfModuleId");
263 vfModule.setVfModuleName("testVfModuleName");
264 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
265 modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
266 modelInfoVfModule.setModelName("vfModuleModelName");
267 modelInfoVfModule.setModelVersion("vfModuleModelVersion");
268 modelInfoVfModule.setModelUUID("vfModuleModelUuid");
269 modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
270 vfModule.setModelInfoVfModule(modelInfoVfModule);
272 CloudRegion cloudRegion = new CloudRegion();
274 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest =
275 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null,
276 vnf, serviceInstance, customer, cloudRegion, requestContext, null);
278 assertNull(vfModuleSDNCrequest.getServiceInformation().getOnapModelInformation().getModelCustomizationUuid());
279 assertEquals("vnfModelCustomizationUuid",
280 vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
281 assertEquals("vfModuleModelCustomizationUuid",
282 vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());
286 public void reqMapperNoModelInfoTest() throws Exception {
288 // prepare and set service instance
289 ServiceInstance serviceInstance = new ServiceInstance();
290 serviceInstance.setServiceInstanceId("serviceInstanceId");
291 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
292 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
293 modelInfoServiceInstance.setModelName("serviceModelName");
294 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
295 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
297 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
298 // prepare Customer object
299 Customer customer = new Customer();
300 customer.setGlobalCustomerId("globalCustomerId");
301 customer.setServiceSubscription(new ServiceSubscription());
302 // set Customer on service instance
303 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
305 RequestContext requestContext = new RequestContext();
306 Map<String, Object> userParams = new HashMap<String, Object>();
307 userParams.put("key1", "value1");
308 requestContext.setUserParams(userParams);
309 requestContext.setProductFamilyId("productFamilyId");
311 GenericVnf vnf = new GenericVnf();
312 vnf.setVnfId("testVnfId");
313 vnf.setVnfType("testVnfType");
314 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
315 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
316 modelInfoGenericVnf.setModelName("vnfModelName");
317 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
318 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
319 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
320 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
322 VfModule vfModule = new VfModule();
323 vfModule.setVfModuleId("testVfModuleId");
324 vfModule.setVfModuleName("testVfModuleName");
325 vfModule.setModelInfoVfModule(null);
327 CloudRegion cloudRegion = new CloudRegion();
329 expectedException.expect(MapperException.class);
330 expectedException.expectMessage(ERRORMESSAGE);
332 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf,
333 serviceInstance, customer, cloudRegion, requestContext, null);