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.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;
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.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
48 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
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.ModelInfoGenericVnf;
52 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
53 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
54 import org.onap.so.client.exception.MapperException;
55 import org.onap.so.client.sdnc.beans.SDNCSvcAction;
56 import org.onap.so.client.sdnc.beans.SDNCSvcOperation;
58 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfModuleOperationInformation;
59 import com.fasterxml.jackson.databind.ObjectMapper;
61 @RunWith(MockitoJUnitRunner.class)
62 public class VfModuleTopologyOperationRequestMapperTest {
64 private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/";
65 private final static String ERRORMESSAGE = "VF Module model info is null for testVfModuleId";
68 private GeneralTopologyObjectMapper generalTopologyObjectMapper;
71 private VfModuleTopologyOperationRequestMapper mapper = new VfModuleTopologyOperationRequestMapper();
74 public ExpectedException expectedException = ExpectedException.none();
77 public void assignGenericResourceApiVfModuleInformationTest() throws Exception {
79 // prepare and set service instance
80 ServiceInstance serviceInstance = new ServiceInstance();
81 serviceInstance.setServiceInstanceId("serviceInstanceId");
82 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
83 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
84 modelInfoServiceInstance.setModelName("serviceModelName");
85 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
86 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
87 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
88 // prepare Customer object
89 Customer customer = new Customer();
90 customer.setGlobalCustomerId("globalCustomerId");
91 ServiceSubscription serviceSubscription = new ServiceSubscription();
92 serviceSubscription.setServiceType("productFamilyId");
93 customer.setServiceSubscription(serviceSubscription);
95 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
97 RequestContext requestContext = new RequestContext();
98 Map<String,Object> userParams = new HashMap<>();
99 userParams.put("key1", "value1");
100 requestContext.setUserParams(userParams);
101 requestContext.setProductFamilyId("productFamilyId");
102 RequestParameters requestParameters = new RequestParameters();
103 requestParameters.setUsePreload(true);
104 requestContext.setRequestParameters(requestParameters);
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, serviceInstance, customer,
140 cloudRegion, requestContext, null);
142 String jsonToCompare = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationAssign.json")));
144 ObjectMapper omapper = new ObjectMapper();
145 GenericResourceApiVfModuleOperationInformation reqMapper1 = omapper.readValue(
147 GenericResourceApiVfModuleOperationInformation.class);
149 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).ignoring("sdncRequestHeader.svcRequestId")
150 .ignoring("requestInformation.requestId"));
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 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
173 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null, vnf, serviceInstance, null,
176 String jsonToCompare = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationUnassign.json")));
178 ObjectMapper omapper = new ObjectMapper();
179 GenericResourceApiVfModuleOperationInformation reqMapper1 = omapper.readValue(
181 GenericResourceApiVfModuleOperationInformation.class);
183 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).ignoring("sdncRequestHeader.svcRequestId")
184 .ignoring("requestInformation.requestId"));
188 public void reqMapperTest() throws Exception {
190 // prepare and set service instance
191 ServiceInstance serviceInstance = new ServiceInstance();
192 serviceInstance.setServiceInstanceId("serviceInstanceId");
193 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
194 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
195 modelInfoServiceInstance.setModelName("serviceModelName");
196 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
197 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
199 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
200 // prepare Customer object
201 Customer customer = new Customer();
202 customer.setGlobalCustomerId("globalCustomerId");
203 customer.setServiceSubscription(new ServiceSubscription());
204 // set Customer on service instance
205 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
207 RequestContext requestContext = new RequestContext();
208 RequestParameters requestParameters = new RequestParameters();
209 HashMap<String,Object> userParams1 = new HashMap<>();
210 userParams1.put("key1", "value1");
211 List<Map<String,Object>> userParams = new ArrayList<>();
212 userParams.add(userParams1);
214 requestParameters.setUserParams(userParams);
215 requestContext.setRequestParameters(requestParameters);
216 requestContext.setProductFamilyId("productFamilyId");
218 GenericVnf vnf = new GenericVnf();
219 vnf.setVnfId("testVnfId");
220 vnf.setVnfType("testVnfType");
221 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
222 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
223 modelInfoGenericVnf.setModelName("vnfModelName");
224 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
225 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
226 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
227 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
229 VfModule vfModule = new VfModule();
230 vfModule.setVfModuleId("testVfModuleId");
231 vfModule.setVfModuleName("testVfModuleName");
232 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
233 modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
234 modelInfoVfModule.setModelName("vfModuleModelName");
235 modelInfoVfModule.setModelVersion("vfModuleModelVersion");
236 modelInfoVfModule.setModelUUID("vfModuleModelUuid");
237 modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
238 vfModule.setModelInfoVfModule(modelInfoVfModule);
240 CloudRegion cloudRegion = new CloudRegion();
242 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
243 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf, serviceInstance, customer,
244 cloudRegion, requestContext, null);
246 assertNull(vfModuleSDNCrequest.getServiceInformation().getOnapModelInformation().getModelCustomizationUuid());
247 assertEquals("vnfModelCustomizationUuid", vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
248 assertEquals("vfModuleModelCustomizationUuid", vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());
252 public void reqMapperNoModelInfoTest() throws Exception {
254 // prepare and set service instance
255 ServiceInstance serviceInstance = new ServiceInstance();
256 serviceInstance.setServiceInstanceId("serviceInstanceId");
257 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
258 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
259 modelInfoServiceInstance.setModelName("serviceModelName");
260 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
261 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
263 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
264 // prepare Customer object
265 Customer customer = new Customer();
266 customer.setGlobalCustomerId("globalCustomerId");
267 customer.setServiceSubscription(new ServiceSubscription());
268 // set Customer on service instance
269 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
271 RequestContext requestContext = new RequestContext();
272 Map<String, Object> userParams = new HashMap<String, Object>();
273 userParams.put("key1", "value1");
274 requestContext.setUserParams(userParams);
275 requestContext.setProductFamilyId("productFamilyId");
277 GenericVnf vnf = new GenericVnf();
278 vnf.setVnfId("testVnfId");
279 vnf.setVnfType("testVnfType");
280 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
281 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
282 modelInfoGenericVnf.setModelName("vnfModelName");
283 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
284 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
285 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
286 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
288 VfModule vfModule = new VfModule();
289 vfModule.setVfModuleId("testVfModuleId");
290 vfModule.setVfModuleName("testVfModuleName");
291 vfModule.setModelInfoVfModule(null);
293 CloudRegion cloudRegion = new CloudRegion();
295 expectedException.expect(MapperException.class);
296 expectedException.expectMessage(ERRORMESSAGE);
298 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf, serviceInstance, customer,
299 cloudRegion, requestContext, null);