7fce8c48c8d4070f641c28099cf55d2ef0b588e0
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / client / sdnc / mapper / VfModuleTopologyOperationRequestMapperTest.java
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
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
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;
58
59 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfModuleOperationInformation;
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, serviceInstance, customer,
142                                 cloudRegion, requestContext, null);
143
144                 String jsonToCompare = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationAssign.json")));
145
146                 ObjectMapper omapper = new ObjectMapper();
147                 GenericResourceApiVfModuleOperationInformation reqMapper1 = omapper.readValue(
148                                 jsonToCompare,
149                                 GenericResourceApiVfModuleOperationInformation.class);
150
151                 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).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 = mapper.reqMapper(
179                                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null, vnf, serviceInstance, null,
180                                 null, requestContext, null);
181
182                 String jsonToCompare = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationUnassign.json")));
183
184                 ObjectMapper omapper = new ObjectMapper();
185                 GenericResourceApiVfModuleOperationInformation reqMapper1 = omapper.readValue(
186                                 jsonToCompare,
187                                 GenericResourceApiVfModuleOperationInformation.class);
188
189                 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).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 = mapper.reqMapper(
216                                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null, vnf, serviceInstance, null,
217                                 null, requestContext, null);
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, serviceInstance, customer,
279                                 cloudRegion, requestContext, null);
280
281                 assertNull(vfModuleSDNCrequest.getServiceInformation().getOnapModelInformation().getModelCustomizationUuid());
282                 assertEquals("vnfModelCustomizationUuid", vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
283                 assertEquals("vfModuleModelCustomizationUuid", 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, serviceInstance, customer,
334                         cloudRegion, requestContext, null);             
335         }
336
337 }