f492ba3eaded853cbaa31ffc5493bf60310cb837
[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.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.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
39 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
40 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
41 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
45 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
46 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
47 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
48 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
49 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
50 import org.onap.so.client.exception.MapperException;
51 import org.onap.so.client.sdnc.beans.SDNCSvcAction;
52 import org.onap.so.client.sdnc.beans.SDNCSvcOperation;
53
54 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfModuleOperationInformation;
55 import com.fasterxml.jackson.databind.ObjectMapper;
56
57 public class VfModuleTopologyOperationRequestMapperTest {
58
59         private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/";
60         private final static String ERRORMESSAGE = "VF Module model info is null for testVfModuleId";
61         
62         @Rule
63         public ExpectedException expectedException = ExpectedException.none();
64
65         @Test
66         public void assignGenericResourceApiVfModuleInformationTest() throws Exception {
67
68                 // prepare and set service instance
69                 ServiceInstance serviceInstance = new ServiceInstance();
70                 serviceInstance.setServiceInstanceId("serviceInstanceId");
71                 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
72                 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
73                 modelInfoServiceInstance.setModelName("serviceModelName");
74                 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
75                 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
76                 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
77                 // prepare Customer object
78                 Customer customer = new Customer();
79                 customer.setGlobalCustomerId("globalCustomerId");
80                 ServiceSubscription serviceSubscription = new ServiceSubscription();
81                 serviceSubscription.setServiceType("productFamilyId");
82                 customer.setServiceSubscription(serviceSubscription);
83
84                 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
85                 //
86                 RequestContext requestContext = new RequestContext();
87                 HashMap<String,String> userParams = new HashMap<String,String>();
88                 userParams.put("key1", "value1");               
89                 requestContext.setUserParams(userParams);
90                 requestContext.setProductFamilyId("productFamilyId");
91
92                 GenericVnf vnf = new GenericVnf();
93                 vnf.setVnfId("testVnfId");
94                 vnf.setVnfType("testVnfType");
95                 vnf.setVnfName("testVnfName");
96                 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
97                 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
98                 modelInfoGenericVnf.setModelName("vnfModelName");
99                 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
100                 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
101                 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
102                 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
103
104                 VfModule vfModule = new VfModule();
105                 vfModule.setVfModuleId("testVfModuleId");
106                 vfModule.setVfModuleName("testVfModuleName");
107                 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
108                 modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
109                 modelInfoVfModule.setModelName("vfModuleModelName");
110                 modelInfoVfModule.setModelVersion("vfModuleModelVersion");
111                 modelInfoVfModule.setModelUUID("vfModuleModelUuid");
112                 modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
113                 vfModule.setModelInfoVfModule(modelInfoVfModule);
114                 HashMap<String, String> cloudParams = new HashMap<String, String>();
115                 cloudParams.put("key2", "value2");
116                 vfModule.setCloudParams(cloudParams);
117
118                 VolumeGroup volumeGroup = new VolumeGroup();
119                 volumeGroup.setVolumeGroupId("volumeGroupId");
120                 volumeGroup.setVolumeGroupName("volumeGroupName");
121
122                 CloudRegion cloudRegion = new CloudRegion();
123
124                 VfModuleTopologyOperationRequestMapper mapper = new VfModuleTopologyOperationRequestMapper();
125                 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
126                                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, volumeGroup, vnf, serviceInstance, customer,
127                                 cloudRegion, requestContext, null);
128
129                 String jsonToCompare = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationAssign.json")));
130
131                 ObjectMapper omapper = new ObjectMapper();
132                 GenericResourceApiVfModuleOperationInformation reqMapper1 = omapper.readValue(
133                                 jsonToCompare,
134                                 GenericResourceApiVfModuleOperationInformation.class);
135
136                 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).ignoring("sdncRequestHeader.svcRequestId")
137                                 .ignoring("requestInformation.requestId"));
138         }
139
140         @Test
141         public void unassignGenericResourceApiVfModuleInformationTest() throws Exception {
142
143                 // prepare and set service instance
144                 ServiceInstance serviceInstance = new ServiceInstance();
145                 serviceInstance.setServiceInstanceId("serviceInstanceId");
146
147                 // prepare and set vnf instance
148
149                 GenericVnf vnf = new GenericVnf();
150                 vnf.setVnfId("testVnfId");
151                 vnf.setVnfType("testVnfType");
152
153                 // prepare and set vf module instance
154
155                 VfModule vfModule = new VfModule();
156                 vfModule.setVfModuleId("testVfModuleId");
157                 vfModule.setVfModuleName("testVfModuleName");
158
159                 VfModuleTopologyOperationRequestMapper mapper = new VfModuleTopologyOperationRequestMapper();
160                 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
161                                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.UNASSIGN, vfModule, null, vnf, serviceInstance, null,
162                                 null, null, null);
163
164                 String jsonToCompare = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "genericResourceApiVfModuleOperationInformationUnassign.json")));
165
166                 ObjectMapper omapper = new ObjectMapper();
167                 GenericResourceApiVfModuleOperationInformation reqMapper1 = omapper.readValue(
168                                 jsonToCompare,
169                                 GenericResourceApiVfModuleOperationInformation.class);
170
171                 assertThat(reqMapper1, sameBeanAs(vfModuleSDNCrequest).ignoring("sdncRequestHeader.svcRequestId")
172                                 .ignoring("requestInformation.requestId"));
173         }
174
175         @Test
176         public void reqMapperTest() throws Exception {
177
178                 // prepare and set service instance
179                 ServiceInstance serviceInstance = new ServiceInstance();
180                 serviceInstance.setServiceInstanceId("serviceInstanceId");
181                 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
182                 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
183                 modelInfoServiceInstance.setModelName("serviceModelName");
184                 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
185                 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
186
187                 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
188                 // prepare Customer object
189                 Customer customer = new Customer();
190                 customer.setGlobalCustomerId("globalCustomerId");
191                 customer.setServiceSubscription(new ServiceSubscription());
192                 // set Customer on service instance
193                 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
194                 //
195                 RequestContext requestContext = new RequestContext();
196                 RequestParameters requestParameters = new RequestParameters();
197                 HashMap<String,Object> userParams1 = new HashMap<String,Object>();
198                 userParams1.put("key1", "value1");
199                 List<Map<String,Object>> userParams = new ArrayList<Map<String,Object>>();
200                 userParams.add(userParams1);
201                 
202                 requestParameters.setUserParams(userParams);
203                 requestContext.setRequestParameters(requestParameters);
204                 requestContext.setProductFamilyId("productFamilyId");
205
206                 GenericVnf vnf = new GenericVnf();
207                 vnf.setVnfId("testVnfId");
208                 vnf.setVnfType("testVnfType");
209                 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
210                 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
211                 modelInfoGenericVnf.setModelName("vnfModelName");
212                 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
213                 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
214                 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
215                 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
216
217                 VfModule vfModule = new VfModule();
218                 vfModule.setVfModuleId("testVfModuleId");
219                 vfModule.setVfModuleName("testVfModuleName");
220                 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
221                 modelInfoVfModule.setModelInvariantUUID("vfModuleModelInvariantUuid");
222                 modelInfoVfModule.setModelName("vfModuleModelName");
223                 modelInfoVfModule.setModelVersion("vfModuleModelVersion");
224                 modelInfoVfModule.setModelUUID("vfModuleModelUuid");
225                 modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
226                 vfModule.setModelInfoVfModule(modelInfoVfModule);
227
228                 CloudRegion cloudRegion = new CloudRegion();
229
230                 VfModuleTopologyOperationRequestMapper mapper = new VfModuleTopologyOperationRequestMapper();
231                 GenericResourceApiVfModuleOperationInformation vfModuleSDNCrequest = mapper.reqMapper(
232                                 SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf, serviceInstance, customer,
233                                 cloudRegion, requestContext, null);
234
235                 assertNull(vfModuleSDNCrequest.getServiceInformation().getOnapModelInformation().getModelCustomizationUuid());
236                 assertEquals("vnfModelCustomizationUuid", vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
237                 assertEquals("vfModuleModelCustomizationUuid", vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());     
238         }
239         
240         @Test
241         public void reqMapperNoModelInfoTest() throws Exception {
242
243                 // prepare and set service instance
244                 ServiceInstance serviceInstance = new ServiceInstance();
245                 serviceInstance.setServiceInstanceId("serviceInstanceId");
246                 ModelInfoServiceInstance modelInfoServiceInstance = new ModelInfoServiceInstance();
247                 modelInfoServiceInstance.setModelInvariantUuid("serviceModelInvariantUuid");
248                 modelInfoServiceInstance.setModelName("serviceModelName");
249                 modelInfoServiceInstance.setModelUuid("serviceModelUuid");
250                 modelInfoServiceInstance.setModelVersion("serviceModelVersion");
251
252                 serviceInstance.setModelInfoServiceInstance(modelInfoServiceInstance);
253                 // prepare Customer object
254                 Customer customer = new Customer();
255                 customer.setGlobalCustomerId("globalCustomerId");
256                 customer.setServiceSubscription(new ServiceSubscription());
257                 // set Customer on service instance
258                 customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
259                 //
260                 RequestContext requestContext = new RequestContext();
261                 HashMap<String, String> userParams = new HashMap<String, String>();
262                 userParams.put("key1", "value1");
263                 requestContext.setUserParams(userParams);
264                 requestContext.setProductFamilyId("productFamilyId");
265
266                 GenericVnf vnf = new GenericVnf();
267                 vnf.setVnfId("testVnfId");
268                 vnf.setVnfType("testVnfType");
269                 ModelInfoGenericVnf modelInfoGenericVnf = new ModelInfoGenericVnf();
270                 modelInfoGenericVnf.setModelInvariantUuid("vnfModelInvariantUuid");
271                 modelInfoGenericVnf.setModelName("vnfModelName");
272                 modelInfoGenericVnf.setModelVersion("vnfModelVersion");
273                 modelInfoGenericVnf.setModelUuid("vnfModelUuid");
274                 modelInfoGenericVnf.setModelCustomizationUuid("vnfModelCustomizationUuid");
275                 vnf.setModelInfoGenericVnf(modelInfoGenericVnf);
276
277                 VfModule vfModule = new VfModule();
278                 vfModule.setVfModuleId("testVfModuleId");
279                 vfModule.setVfModuleName("testVfModuleName");           
280                 vfModule.setModelInfoVfModule(null);
281
282                 CloudRegion cloudRegion = new CloudRegion();
283                 
284                 VfModuleTopologyOperationRequestMapper mapper = new VfModuleTopologyOperationRequestMapper();
285                 expectedException.expect(MapperException.class);
286                 expectedException.expectMessage(ERRORMESSAGE);
287                 
288                 mapper.reqMapper(SDNCSvcOperation.VF_MODULE_TOPOLOGY_OPERATION, SDNCSvcAction.ASSIGN, vfModule, null, vnf, serviceInstance, customer,
289                         cloudRegion, requestContext, null);             
290         }
291
292 }