JUnit tests for MsoMulticloudUtils
[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.assertNull;
27
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;
33 import java.util.Map;
34
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;
57
58 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfModuleOperationInformation;
59 import com.fasterxml.jackson.databind.ObjectMapper;
60
61 @RunWith(MockitoJUnitRunner.class)
62 public class VfModuleTopologyOperationRequestMapperTest {
63
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";
66         
67         @Spy
68         private GeneralTopologyObjectMapper generalTopologyObjectMapper;
69         
70         @InjectMocks
71         private VfModuleTopologyOperationRequestMapper mapper = new VfModuleTopologyOperationRequestMapper();
72
73         @Rule
74         public ExpectedException expectedException = ExpectedException.none();
75
76         @Test
77         public void assignGenericResourceApiVfModuleInformationTest() throws Exception {
78
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);
94
95                 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
96                 //
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);
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, serviceInstance, customer,
140                                 cloudRegion, requestContext, null);
141
142                 String jsonToCompare = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationAssign.json")));
143
144                 ObjectMapper omapper = new ObjectMapper();
145                 GenericResourceApiVfModuleOperationInformation reqMapper1 = omapper.readValue(
146                                 jsonToCompare,
147                                 GenericResourceApiVfModuleOperationInformation.class);
148
149                 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).ignoring("sdncRequestHeader.svcRequestId")
150                                 .ignoring("requestInformation.requestId"));
151         }
152
153         @Test
154         public void unassignGenericResourceApiVfModuleInformationTest() throws Exception {
155
156                 // prepare and set service instance
157                 ServiceInstance serviceInstance = new ServiceInstance();
158                 serviceInstance.setServiceInstanceId("serviceInstanceId");
159
160                 // prepare and set vnf instance
161
162                 GenericVnf vnf = new GenericVnf();
163                 vnf.setVnfId("testVnfId");
164                 vnf.setVnfType("testVnfType");
165
166                 // prepare and set vf module instance
167
168                 VfModule vfModule = new VfModule();
169                 vfModule.setVfModuleId("testVfModuleId");
170                 vfModule.setVfModuleName("testVfModuleName");
171
172                 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
173                                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null, vnf, serviceInstance, null,
174                                 null, null, null);
175
176                 String jsonToCompare = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationUnassign.json")));
177
178                 ObjectMapper omapper = new ObjectMapper();
179                 GenericResourceApiVfModuleOperationInformation reqMapper1 = omapper.readValue(
180                                 jsonToCompare,
181                                 GenericResourceApiVfModuleOperationInformation.class);
182
183                 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).ignoring("sdncRequestHeader.svcRequestId")
184                                 .ignoring("requestInformation.requestId"));
185         }
186
187         @Test
188         public void reqMapperTest() throws Exception {
189
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");
198
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);
206                 //
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);
213                 
214                 requestParameters.setUserParams(userParams);
215                 requestContext.setRequestParameters(requestParameters);
216                 requestContext.setProductFamilyId("productFamilyId");
217
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);
228
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);
239
240                 CloudRegion cloudRegion = new CloudRegion();
241
242                 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
243                                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf, serviceInstance, customer,
244                                 cloudRegion, requestContext, null);
245
246                 assertNull(vfModuleSDNCrequest.getServiceInformation().getOnapModelInformation().getModelCustomizationUuid());
247                 assertEquals("vnfModelCustomizationUuid", vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
248                 assertEquals("vfModuleModelCustomizationUuid", vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());     
249         }
250         
251         @Test
252         public void reqMapperNoModelInfoTest() throws Exception {
253
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");
262
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);
270                 //
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");
276
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);
287
288                 VfModule vfModule = new VfModule();
289                 vfModule.setVfModuleId("testVfModuleId");
290                 vfModule.setVfModuleName("testVfModuleName");           
291                 vfModule.setModelInfoVfModule(null);
292
293                 CloudRegion cloudRegion = new CloudRegion();
294                 
295                 expectedException.expect(MapperException.class);
296                 expectedException.expectMessage(ERRORMESSAGE);
297                 
298                 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf, serviceInstance, customer,
299                         cloudRegion, requestContext, null);             
300         }
301
302 }