e064300ab7ef34ecac4355fa2fadf0a5438e8110
[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.bpmn.infrastructure.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.infrastructure.sdnc.mapper.GeneralTopologyObjectMapper;
44 import org.onap.so.bpmn.infrastructure.sdnc.mapper.VfModuleTopologyOperationRequestMapper;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
48 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
49 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
50 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
51 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
52 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
53 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
54 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
55 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
56 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
57 import org.onap.so.client.exception.MapperException;
58 import org.onap.so.client.sdnc.beans.SDNCSvcAction;
59 import org.onap.so.client.sdnc.beans.SDNCSvcOperation;
60 import com.fasterxml.jackson.databind.ObjectMapper;
61
62 @RunWith(MockitoJUnitRunner.class)
63 public class VfModuleTopologyOperationRequestMapperTest {
64
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";
67
68     @Spy
69     private GeneralTopologyObjectMapper generalTopologyObjectMapper;
70
71     @InjectMocks
72     private VfModuleTopologyOperationRequestMapper mapper = new VfModuleTopologyOperationRequestMapper();
73
74     @Rule
75     public ExpectedException expectedException = ExpectedException.none();
76
77     @Test
78     public void assignGenericResourceApiVfModuleInformationTest() throws Exception {
79
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);
95
96         customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
97         //
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");
107
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);
119
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);
133
134         VolumeGroup volumeGroup = new VolumeGroup();
135         volumeGroup.setVolumeGroupId("volumeGroupId");
136         volumeGroup.setVolumeGroupName("volumeGroupName");
137
138         CloudRegion cloudRegion = new CloudRegion();
139
140         GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
141                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, volumeGroup, vnf,
142                 serviceInstance, customer, cloudRegion, requestContext, null, new URI("http://localhost:8080"));
143
144         String jsonToCompare = new String(Files.readAllBytes(
145                 Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationAssign.json")));
146
147         ObjectMapper omapper = new ObjectMapper();
148         GenericResourceApiVfModuleOperationInformation reqMapper1 =
149                 omapper.readValue(jsonToCompare, GenericResourceApiVfModuleOperationInformation.class);
150
151         assertThat(vfModuleSDNCrequest, sameBeanAs(reqMapper1).ignoring("sdncRequestHeader.svcRequestId")
152                 .ignoring("requestInformation.requestId"));
153         assertEquals("MsoRequestId", vfModuleSDNCrequest.getRequestInformation().getRequestId());
154     }
155
156     @Test
157     public void unassignGenericResourceApiVfModuleInformationTest() throws Exception {
158
159         // prepare and set service instance
160         ServiceInstance serviceInstance = new ServiceInstance();
161         serviceInstance.setServiceInstanceId("serviceInstanceId");
162
163         // prepare and set vnf instance
164
165         GenericVnf vnf = new GenericVnf();
166         vnf.setVnfId("testVnfId");
167         vnf.setVnfType("testVnfType");
168
169         // prepare and set vf module instance
170
171         VfModule vfModule = new VfModule();
172         vfModule.setVfModuleId("testVfModuleId");
173         vfModule.setVfModuleName("testVfModuleName");
174
175         RequestContext requestContext = new RequestContext();
176         requestContext.setMsoRequestId("MsoRequestId");
177
178         GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest =
179                 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null,
180                         vnf, serviceInstance, null, null, requestContext, null, new URI("http://localhost:8080"));
181
182         String jsonToCompare = new String(Files.readAllBytes(
183                 Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationUnassign.json")));
184
185         ObjectMapper omapper = new ObjectMapper();
186         GenericResourceApiVfModuleOperationInformation reqMapper1 =
187                 omapper.readValue(jsonToCompare, GenericResourceApiVfModuleOperationInformation.class);
188
189         assertThat(vfModuleSDNCrequest, sameBeanAs(reqMapper1).ignoring("sdncRequestHeader.svcRequestId")
190                 .ignoring("requestInformation.requestId"));
191         assertEquals("MsoRequestId", vfModuleSDNCrequest.getRequestInformation().getRequestId());
192     }
193
194     @Test
195     public void unassignGenericResourceApiVfModuleInformationNullMsoReqIdTest() throws Exception {
196
197         // prepare and set service instance
198         ServiceInstance serviceInstance = new ServiceInstance();
199         serviceInstance.setServiceInstanceId("serviceInstanceId");
200
201         // prepare and set vnf instance
202
203         GenericVnf vnf = new GenericVnf();
204         vnf.setVnfId("testVnfId");
205         vnf.setVnfType("testVnfType");
206
207         // prepare and set vf module instance
208
209         VfModule vfModule = new VfModule();
210         vfModule.setVfModuleId("testVfModuleId");
211         vfModule.setVfModuleName("testVfModuleName");
212
213         RequestContext requestContext = new RequestContext();
214
215         GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest =
216                 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null,
217                         vnf, serviceInstance, null, null, requestContext, null, new URI("http://localhost:8080"));
218
219         assertNotNull(vfModuleSDNCrequest.getRequestInformation().getRequestId());
220     }
221
222     @Test
223     public void reqMapperTest() throws Exception {
224
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");
233
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);
241         //
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);
248
249         requestParameters.setUserParams(userParams);
250         requestContext.setRequestParameters(requestParameters);
251         requestContext.setProductFamilyId("productFamilyId");
252
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);
263
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);
274
275         CloudRegion cloudRegion = new CloudRegion();
276
277         GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
278                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf,
279                 serviceInstance, customer, cloudRegion, requestContext, null, new URI("http://localhost:8080"));
280
281         assertNull(vfModuleSDNCrequest.getServiceInformation().getOnapModelInformation().getModelCustomizationUuid());
282         assertEquals("vnfModelCustomizationUuid",
283                 vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
284         assertEquals("vfModuleModelCustomizationUuid",
285                 vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());
286     }
287
288     @Test
289     public void reqMapperNoModelInfoTest() throws Exception {
290
291         // prepare and set service instance
292         ServiceInstance serviceInstance = new ServiceInstance();
293         serviceInstance.setServiceInstanceId("serviceInstanceId");
294         ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
295         modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
296         modelInfoServiceInstance.setModelName("serviceModelName");
297         modelInfoServiceInstance.setModelUuid("serviceModelUuid");
298         modelInfoServiceInstance.setModelVersion("serviceModelVersion");
299
300         serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
301         // prepare Customer object
302         Customer customer = new Customer();
303         customer.setGlobalCustomerId("globalCustomerId");
304         customer.setServiceSubscription(new ServiceSubscription());
305         // set Customer on service instance
306         customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
307         //
308         RequestContext requestContext = new RequestContext();
309         Map<String, Object> userParams = new HashMap<String, Object>();
310         userParams.put("key1", "value1");
311         requestContext.setUserParams(userParams);
312         requestContext.setProductFamilyId("productFamilyId");
313
314         GenericVnf vnf = new GenericVnf();
315         vnf.setVnfId("testVnfId");
316         vnf.setVnfType("testVnfType");
317         ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
318         modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
319         modelInfoGenericVnf.setModelName("vnfModelName");
320         modelInfoGenericVnf.setModelVersion("vnfModelVersion");
321         modelInfoGenericVnf.setModelUuid("vnfModelUuid");
322         modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
323         vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
324
325         VfModule vfModule = new VfModule();
326         vfModule.setVfModuleId("testVfModuleId");
327         vfModule.setVfModuleName("testVfModuleName");
328         vfModule.setModelInfoVfModule(null);
329
330         CloudRegion cloudRegion = new CloudRegion();
331
332         expectedException.expect(MapperException.class);
333         expectedException.expectMessage(ERRORMESSAGE);
334
335         mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf,
336                 serviceInstance, customer, cloudRegion, requestContext, null, new URI("http://localhost:8080"));
337     }
338
339     @Test
340     public void reqMapperChangeAssignTest() throws Exception {
341
342         // prepare and set service instance
343         ServiceInstance serviceInstance = new ServiceInstance();
344         serviceInstance.setServiceInstanceId("serviceInstanceId");
345         ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
346         modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
347         modelInfoServiceInstance.setModelName("serviceModelName");
348         modelInfoServiceInstance.setModelUuid("serviceModelUuid");
349         modelInfoServiceInstance.setModelVersion("serviceModelVersion");
350
351         serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
352         // prepare Customer object
353         Customer customer = new Customer();
354         customer.setGlobalCustomerId("globalCustomerId");
355         customer.setServiceSubscription(new ServiceSubscription());
356         // set Customer on service instance
357         customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
358         //
359         RequestContext requestContext = new RequestContext();
360         RequestParameters requestParameters = new RequestParameters();
361         HashMap<String, Object> userParams1 = new HashMap<>();
362         userParams1.put("key1", "value1");
363         List<Map<String, Object>> userParams = new ArrayList<>();
364         userParams.add(userParams1);
365
366         requestParameters.setUserParams(userParams);
367         requestContext.setRequestParameters(requestParameters);
368         requestContext.setProductFamilyId("productFamilyId");
369
370         GenericVnf vnf = new GenericVnf();
371         vnf.setVnfId("testVnfId");
372         vnf.setVnfType("testVnfType");
373         ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
374         modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
375         modelInfoGenericVnf.setModelName("vnfModelName");
376         modelInfoGenericVnf.setModelVersion("vnfModelVersion");
377         modelInfoGenericVnf.setModelUuid("vnfModelUuid");
378         modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
379         vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
380
381         VfModule vfModule = new VfModule();
382         vfModule.setVfModuleId("testVfModuleId");
383         vfModule.setVfModuleName("testVfModuleName");
384         ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
385         modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
386         modelInfoVfModule.setModelName("vfModuleModelName");
387         modelInfoVfModule.setModelVersion("vfModuleModelVersion");
388         modelInfoVfModule.setModelUUID("vfModuleModelUuid");
389         modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
390         vfModule.setModelInfoVfModule(modelInfoVfModule);
391
392         CloudRegion cloudRegion = new CloudRegion();
393
394         GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
395                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.CHANGE_ASSIGN, vfModule, null, vnf,
396                 serviceInstance, customer, cloudRegion, requestContext, null, new URI("http://localhost:8080"));
397
398         assertEquals("vnfModelCustomizationUuid",
399                 vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
400         assertEquals("vfModuleModelCustomizationUuid",
401                 vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());
402     }
403
404 }