2fd684e0f00b4a1bdbc8ecd1d1433980d9405a4b
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 package org.onap.so.client.sdnc.mapper;
22
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.net.URI;
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;
34 import java.util.Map;
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;
59
60 @RunWith(MockitoJUnitRunner.class)
61 public class VfModuleTopologyOperationRequestMapperTest {
62
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";
65
66     @Spy
67     private GeneralTopologyObjectMapper generalTopologyObjectMapper;
68
69     @InjectMocks
70     private VfModuleTopologyOperationRequestMapper mapper = new VfModuleTopologyOperationRequestMapper();
71
72     @Rule
73     public ExpectedException expectedException = ExpectedException.none();
74
75     @Test
76     public void assignGenericResourceApiVfModuleInformationTest() throws Exception {
77
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);
93
94         customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
95         //
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");
105
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);
117
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);
131
132         VolumeGroup volumeGroup = new VolumeGroup();
133         volumeGroup.setVolumeGroupId("volumeGroupId");
134         volumeGroup.setVolumeGroupName("volumeGroupName");
135
136         CloudRegion cloudRegion = new CloudRegion();
137
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"));
141
142         String jsonToCompare = new String(Files.readAllBytes(
143                 Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationAssign.json")));
144
145         ObjectMapper omapper = new ObjectMapper();
146         GenericResourceApiVfModuleOperationInformation reqMapper1 =
147                 omapper.readValue(jsonToCompare, GenericResourceApiVfModuleOperationInformation.class);
148
149         assertThat(vfModuleSDNCrequest, sameBeanAs(reqMapper1).ignoring("sdncRequestHeader.svcRequestId")
150                 .ignoring("requestInformation.requestId"));
151         assertEquals("MsoRequestId", vfModuleSDNCrequest.getRequestInformation().getRequestId());
152     }
153
154     @Test
155     public void unassignGenericResourceApiVfModuleInformationTest() throws Exception {
156
157         // prepare and set service instance
158         ServiceInstance serviceInstance = new ServiceInstance();
159         serviceInstance.setServiceInstanceId("serviceInstanceId");
160
161         // prepare and set vnf instance
162
163         GenericVnf vnf = new GenericVnf();
164         vnf.setVnfId("testVnfId");
165         vnf.setVnfType("testVnfType");
166
167         // prepare and set vf module instance
168
169         VfModule vfModule = new VfModule();
170         vfModule.setVfModuleId("testVfModuleId");
171         vfModule.setVfModuleName("testVfModuleName");
172
173         RequestContext requestContext = new RequestContext();
174         requestContext.setMsoRequestId("MsoRequestId");
175
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"));
179
180         String jsonToCompare = new String(Files.readAllBytes(
181                 Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationUnassign.json")));
182
183         ObjectMapper omapper = new ObjectMapper();
184         GenericResourceApiVfModuleOperationInformation reqMapper1 =
185                 omapper.readValue(jsonToCompare, GenericResourceApiVfModuleOperationInformation.class);
186
187         assertThat(vfModuleSDNCrequest, sameBeanAs(reqMapper1).ignoring("sdncRequestHeader.svcRequestId")
188                 .ignoring("requestInformation.requestId"));
189         assertEquals("MsoRequestId", vfModuleSDNCrequest.getRequestInformation().getRequestId());
190     }
191
192     @Test
193     public void unassignGenericResourceApiVfModuleInformationNullMsoReqIdTest() throws Exception {
194
195         // prepare and set service instance
196         ServiceInstance serviceInstance = new ServiceInstance();
197         serviceInstance.setServiceInstanceId("serviceInstanceId");
198
199         // prepare and set vnf instance
200
201         GenericVnf vnf = new GenericVnf();
202         vnf.setVnfId("testVnfId");
203         vnf.setVnfType("testVnfType");
204
205         // prepare and set vf module instance
206
207         VfModule vfModule = new VfModule();
208         vfModule.setVfModuleId("testVfModuleId");
209         vfModule.setVfModuleName("testVfModuleName");
210
211         RequestContext requestContext = new RequestContext();
212
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"));
216
217         assertNotNull(vfModuleSDNCrequest.getRequestInformation().getRequestId());
218     }
219
220     @Test
221     public void reqMapperTest() throws Exception {
222
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");
231
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);
239         //
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);
246
247         requestParameters.setUserParams(userParams);
248         requestContext.setRequestParameters(requestParameters);
249         requestContext.setProductFamilyId("productFamilyId");
250
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);
261
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);
272
273         CloudRegion cloudRegion = new CloudRegion();
274
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"));
278
279         assertNull(vfModuleSDNCrequest.getServiceInformation().getOnapModelInformation().getModelCustomizationUuid());
280         assertEquals("vnfModelCustomizationUuid",
281                 vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
282         assertEquals("vfModuleModelCustomizationUuid",
283                 vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());
284     }
285
286     @Test
287     public void reqMapperNoModelInfoTest() throws Exception {
288
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");
297
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);
305         //
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");
311
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);
322
323         VfModule vfModule = new VfModule();
324         vfModule.setVfModuleId("testVfModuleId");
325         vfModule.setVfModuleName("testVfModuleName");
326         vfModule.setModelInfoVfModule(null);
327
328         CloudRegion cloudRegion = new CloudRegion();
329
330         expectedException.expect(MapperException.class);
331         expectedException.expectMessage(ERRORMESSAGE);
332
333         mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf,
334                 serviceInstance, customer, cloudRegion, requestContext, null, new URI("http://localhost:8080"));
335     }
336
337     @Test
338     public void reqMapperChangeAssignTest() throws Exception {
339
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");
348
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);
356         //
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);
363
364         requestParameters.setUserParams(userParams);
365         requestContext.setRequestParameters(requestParameters);
366         requestContext.setProductFamilyId("productFamilyId");
367
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);
378
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);
389
390         CloudRegion cloudRegion = new CloudRegion();
391
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"));
395
396         assertEquals("vnfModelCustomizationUuid",
397                 vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
398         assertEquals("vfModuleModelCustomizationUuid",
399                 vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());
400     }
401
402 }