3cb4e0c9c24a8e707a2679c250dc902195ffb117
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2019 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.apihandlerinfra;
22
23 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertThat;
26 import static org.mockito.Mockito.doNothing;
27 import static org.mockito.Mockito.doReturn;
28 import java.io.IOException;
29 import java.nio.file.Files;
30 import java.nio.file.Paths;
31 import java.sql.Timestamp;
32 import org.junit.Before;
33 import org.junit.Rule;
34 import org.junit.Test;
35 import org.junit.rules.ExpectedException;
36 import org.junit.runner.RunWith;
37 import org.mockito.InjectMocks;
38 import org.mockito.Mock;
39 import org.mockito.Spy;
40 import org.mockito.junit.MockitoJUnitRunner;
41 import org.onap.so.apihandlerinfra.exceptions.ApiException;
42 import org.onap.so.apihandlerinfra.exceptions.VfModuleNotFoundException;
43 import org.onap.so.db.catalog.beans.VfModule;
44 import org.onap.so.db.catalog.client.CatalogDbClient;
45 import org.onap.so.db.request.beans.InfraActiveRequests;
46 import org.onap.so.serviceinstancebeans.ModelInfo;
47 import org.onap.so.serviceinstancebeans.ModelType;
48
49 @RunWith(MockitoJUnitRunner.class)
50 public class RequestHandlerUtilsUnitTest {
51
52     @Mock
53     private CatalogDbClient catDbClient;
54
55     @InjectMocks
56     @Spy
57     private RequestHandlerUtils requestHandler;
58
59     @Rule
60     public ExpectedException thrown = ExpectedException.none();
61
62     private static final String CURRENT_REQUEST_ID = "eca3a1b1-43ab-457e-ab1c-367263d148b4";
63     private static final String RESUMED_REQUEST_ID = "59c7247f-839f-4923-90c3-05faa3ab354d";
64     private static final String SERVICE_INSTANCE_ID = "00032ab7-na18-42e5-965d-8ea592502018";
65     private static final String SERVICE_INSTANCE_NAME = "serviceInstanceName";
66     private static final String VNF_ID = "00032ab7-na18-42e5-965d-8ea592502017";
67     private static final String VFMODULE_ID = "00032ab7-na18-42e5-965d-8ea592502016";
68     private static final String NETWORK_ID = "00032ab7-na18-42e5-965d-8ea592502015";
69     private static final String VOLUME_GROUP_ID = "00032ab7-na18-42e5-965d-8ea592502014";
70     private static final String VNF_NAME = "vnfName";
71     private static final String VFMODULE_NAME = "vfModuleName";
72     private static final String NETWORK_NAME = "networkName";
73     private static final String VOLUME_GROUP_NAME = "volumeGroupName";
74     private static final String MODEL_VERSION_ID = "883f4a7a-b5a5-44e0-8738-361c6413d24c";
75     private static final String MODEL_VERSION = "1.0";
76     private static final String MODEL_INVARIANT_ID = "d358b828-e7f8-4833-ac96-2782bed1a9a9";
77     private static final String MODEL_NAME = "modelName";
78     private final Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
79     private String requestUri =
80             "http:localhost:6746/onap/so/infra/orchestrationRequests/v7/00032ab7-na18-42e5-965d-8ea592502019/resume";
81     private InfraActiveRequests infraActiveRequest = new InfraActiveRequests();
82     private InfraActiveRequests currentActiveRequest = new InfraActiveRequests();
83     private InfraActiveRequests currentActiveRequestIARNull = new InfraActiveRequests();
84     private Action action = Action.createInstance;
85     private String vnfType = "vnfType";
86     private String sdcServiceModelVersion = "7";
87
88     public String getRequestBody(String request) throws IOException {
89         request = "src/test/resources/ResumeOrchestrationRequest" + request;
90         return new String(Files.readAllBytes(Paths.get(request)));
91     }
92
93     @Before
94     public void setup() throws IOException {
95         setInfraActiveRequest();
96         setCurrentActiveRequest();
97         setCurrentActiveRequestNullInfraActive();
98     }
99
100     private void setInfraActiveRequest() throws IOException {
101         infraActiveRequest.setTenantId("tenant-id");
102         infraActiveRequest.setRequestBody(getRequestBody("/RequestBody.json"));
103         infraActiveRequest.setAicCloudRegion("cloudRegion");
104         infraActiveRequest.setRequestScope("service");
105         infraActiveRequest.setServiceInstanceId(SERVICE_INSTANCE_ID);
106         infraActiveRequest.setServiceInstanceName(SERVICE_INSTANCE_NAME);
107         infraActiveRequest.setRequestStatus(Status.IN_PROGRESS.toString());
108         infraActiveRequest.setRequestAction(Action.createInstance.toString());
109         infraActiveRequest.setServiceType("serviceType");
110     }
111
112     private void setCurrentActiveRequest() throws IOException {
113         currentActiveRequest.setRequestId(CURRENT_REQUEST_ID);
114         currentActiveRequest.setSource("VID");
115         currentActiveRequest.setStartTime(startTimeStamp);
116         currentActiveRequest.setTenantId("tenant-id");
117         currentActiveRequest.setRequestBody(getRequestBody("/RequestBodyNewRequestorId.json"));
118         currentActiveRequest.setAicCloudRegion("cloudRegion");
119         currentActiveRequest.setRequestScope("service");
120         currentActiveRequest.setRequestStatus(Status.IN_PROGRESS.toString());
121         currentActiveRequest.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
122         currentActiveRequest.setRequestAction(Action.createInstance.toString());
123         currentActiveRequest.setRequestUrl(requestUri);
124         currentActiveRequest.setRequestorId("yyyyyy");
125         currentActiveRequest.setProgress(new Long(5));
126         currentActiveRequest.setOriginalRequestId(RESUMED_REQUEST_ID);
127     }
128
129     private void setCurrentActiveRequestNullInfraActive() throws IOException {
130         currentActiveRequestIARNull.setRequestId(CURRENT_REQUEST_ID);
131         currentActiveRequestIARNull.setSource("VID");
132         currentActiveRequestIARNull.setStartTime(startTimeStamp);
133         currentActiveRequestIARNull.setRequestStatus(Status.IN_PROGRESS.toString());
134         currentActiveRequestIARNull.setLastModifiedBy(Constants.MODIFIED_BY_APIHANDLER);
135         currentActiveRequestIARNull.setRequestUrl(requestUri);
136         currentActiveRequestIARNull.setRequestorId("xxxxxx");
137         currentActiveRequestIARNull.setProgress(new Long(5));
138         currentActiveRequestIARNull.setOriginalRequestId(RESUMED_REQUEST_ID);
139     }
140
141
142     @Test
143     public void createNewRecordCopyFromInfraActiveRequestTest() throws IOException {
144         doNothing().when(requestHandler).setInstanceIdAndName(infraActiveRequest, currentActiveRequest);
145         doReturn(getRequestBody("/RequestBodyNewRequestorId.json")).when(requestHandler)
146                 .updateRequestorIdInRequestBody(infraActiveRequest, "yyyyyy");
147         InfraActiveRequests result = requestHandler.createNewRecordCopyFromInfraActiveRequest(infraActiveRequest,
148                 CURRENT_REQUEST_ID, startTimeStamp, "VID", requestUri, "yyyyyy", RESUMED_REQUEST_ID);
149         assertThat(currentActiveRequest, sameBeanAs(result));
150     }
151
152     @Test
153     public void createNewRecordCopyFromInfraActiveRequestNullIARTest() {
154         InfraActiveRequests result = requestHandler.createNewRecordCopyFromInfraActiveRequest(null, CURRENT_REQUEST_ID,
155                 startTimeStamp, "VID", requestUri, "xxxxxx", RESUMED_REQUEST_ID);
156         assertThat(currentActiveRequestIARNull, sameBeanAs(result));
157     }
158
159     @Test
160     public void setInstanceIdAndNameServiceTest() {
161         InfraActiveRequests serviceRequest = new InfraActiveRequests();
162
163         InfraActiveRequests expected = new InfraActiveRequests();
164         expected.setServiceInstanceId(SERVICE_INSTANCE_ID);
165         expected.setServiceInstanceName(SERVICE_INSTANCE_NAME);
166
167         requestHandler.setInstanceIdAndName(infraActiveRequest, serviceRequest);
168         assertThat(serviceRequest, sameBeanAs(expected));
169     }
170
171     @Test
172     public void setInstanceIdAndNameRequestScopeNotValidTest() {
173         InfraActiveRequests originalServiceRequest = new InfraActiveRequests();
174         originalServiceRequest.setRequestScope("test");
175         InfraActiveRequests serviceRequest = new InfraActiveRequests();
176
177         InfraActiveRequests expected = new InfraActiveRequests();
178
179         requestHandler.setInstanceIdAndName(originalServiceRequest, serviceRequest);
180         assertThat(serviceRequest, sameBeanAs(expected));
181     }
182
183     @Test
184     public void setInstanceIdAndNameVnfTest() {
185         InfraActiveRequests vnfRequestOriginal = new InfraActiveRequests();
186         vnfRequestOriginal.setRequestScope("vnf");
187         vnfRequestOriginal.setVnfId(VNF_ID);
188         vnfRequestOriginal.setVnfName(VNF_NAME);
189         InfraActiveRequests vnfRequest = new InfraActiveRequests();
190
191         InfraActiveRequests expected = new InfraActiveRequests();
192         expected.setVnfId(VNF_ID);
193         expected.setVnfName(VNF_NAME);
194
195         requestHandler.setInstanceIdAndName(vnfRequestOriginal, vnfRequest);
196         assertThat(vnfRequest, sameBeanAs(expected));
197     }
198
199     @Test
200     public void setInstanceIdAndNameVfModuleTest() {
201         InfraActiveRequests vfModuleRequestOriginal = new InfraActiveRequests();
202         vfModuleRequestOriginal.setRequestScope("vfModule");
203         vfModuleRequestOriginal.setVfModuleId(VFMODULE_ID);
204         vfModuleRequestOriginal.setVfModuleName(VFMODULE_NAME);
205         InfraActiveRequests vfModuleRequest = new InfraActiveRequests();
206
207         InfraActiveRequests expected = new InfraActiveRequests();
208         expected.setVfModuleId(VFMODULE_ID);
209         expected.setVfModuleName(VFMODULE_NAME);
210
211         requestHandler.setInstanceIdAndName(vfModuleRequestOriginal, vfModuleRequest);
212         assertThat(vfModuleRequest, sameBeanAs(expected));
213     }
214
215     @Test
216     public void setInstanceIdAndNameNetworkTest() {
217         InfraActiveRequests networkRequestOriginal = new InfraActiveRequests();
218         networkRequestOriginal.setRequestScope("network");
219         networkRequestOriginal.setNetworkId(NETWORK_ID);
220         networkRequestOriginal.setNetworkName(NETWORK_NAME);
221         InfraActiveRequests networkRequest = new InfraActiveRequests();
222
223         InfraActiveRequests expected = new InfraActiveRequests();
224         expected.setNetworkId(NETWORK_ID);
225         expected.setNetworkName(NETWORK_NAME);
226
227         requestHandler.setInstanceIdAndName(networkRequestOriginal, networkRequest);
228         assertThat(networkRequest, sameBeanAs(expected));
229     }
230
231     @Test
232     public void setInstanceIdAndNameVolumeGroupTest() {
233         InfraActiveRequests volumeGroupRequestOriginal = new InfraActiveRequests();
234         volumeGroupRequestOriginal.setRequestScope("volumeGroup");
235         volumeGroupRequestOriginal.setVolumeGroupId(VOLUME_GROUP_ID);
236         volumeGroupRequestOriginal.setVolumeGroupName(VOLUME_GROUP_NAME);
237         InfraActiveRequests volumeGroupRequest = new InfraActiveRequests();
238
239         InfraActiveRequests expected = new InfraActiveRequests();
240         expected.setVolumeGroupId(VOLUME_GROUP_ID);
241         expected.setVolumeGroupName(VOLUME_GROUP_NAME);
242
243         requestHandler.setInstanceIdAndName(volumeGroupRequestOriginal, volumeGroupRequest);
244         assertThat(volumeGroupRequest, sameBeanAs(expected));
245     }
246
247     @Test
248     public void getIsBaseVfModuleTrueTest() throws ApiException {
249         VfModule vfModule = new VfModule();
250         vfModule.setIsBase(true);
251         ModelInfo modelInfo = new ModelInfo();
252         modelInfo.setModelVersionId(MODEL_VERSION_ID);
253
254         doReturn(vfModule).when(catDbClient).getVfModuleByModelUUID(MODEL_VERSION_ID);
255         Boolean expected = true;
256
257         Boolean result = requestHandler.getIsBaseVfModule(modelInfo, action, vnfType, sdcServiceModelVersion,
258                 currentActiveRequest);
259         assertEquals(result, expected);
260     }
261
262     @Test
263     public void getIsBaseVfModuleFalseTest() throws ApiException {
264         VfModule vfModule = new VfModule();
265         vfModule.setIsBase(false);
266         ModelInfo modelInfo = new ModelInfo();
267         modelInfo.setModelVersionId(MODEL_VERSION_ID);
268
269         doReturn(vfModule).when(catDbClient).getVfModuleByModelUUID(MODEL_VERSION_ID);
270         Boolean expected = false;
271
272         Boolean result = requestHandler.getIsBaseVfModule(modelInfo, action, vnfType, sdcServiceModelVersion,
273                 currentActiveRequest);
274         assertEquals(result, expected);
275     }
276
277     @Test
278     public void getIsBaseVfModuleNullTest() throws ApiException {
279         ModelInfo modelInfo = new ModelInfo();
280         modelInfo.setModelVersionId(MODEL_VERSION_ID);
281         modelInfo.setModelName(MODEL_NAME);
282         String errorMessage =
283                 "VnfType vnfType and VF Module Model Name modelName with version 7 not found in MSO Catalog DB";
284
285         doNothing().when(requestHandler).updateStatus(currentActiveRequest, Status.FAILED, errorMessage);
286         doReturn(null).when(catDbClient).getVfModuleByModelUUID(MODEL_VERSION_ID);
287
288         thrown.expect(VfModuleNotFoundException.class);
289         thrown.expectMessage(errorMessage);
290         requestHandler.getIsBaseVfModule(modelInfo, action, vnfType, sdcServiceModelVersion, currentActiveRequest);
291     }
292
293     @Test
294     public void getIsBaseVfModuleModelVersionIdNullTest() throws ApiException {
295         ModelInfo modelInfo = new ModelInfo();
296         modelInfo.setModelInvariantId(MODEL_INVARIANT_ID);
297         modelInfo.setModelVersion(MODEL_VERSION);
298         modelInfo.setModelName(MODEL_NAME);
299         Boolean expected = false;
300
301         doReturn(null).when(catDbClient).getVfModuleByModelInvariantUUIDAndModelVersion(MODEL_INVARIANT_ID,
302                 MODEL_VERSION);
303
304         Boolean result = requestHandler.getIsBaseVfModule(modelInfo, Action.deleteInstance, vnfType,
305                 sdcServiceModelVersion, currentActiveRequest);
306         assertEquals(result, expected);
307     }
308
309     @Test
310     public void getIsBaseVfModuleModelInfoNotSetTest() throws ApiException {
311         ModelInfo modelInfo = new ModelInfo();
312         Boolean expected = false;
313
314         Boolean result = requestHandler.getIsBaseVfModule(modelInfo, Action.deleteInstance, vnfType,
315                 sdcServiceModelVersion, currentActiveRequest);
316         assertEquals(result, expected);
317     }
318
319     @Test
320     public void getIsBaseVfModuleModelVersionNullTest() throws ApiException {
321         ModelInfo modelInfo = new ModelInfo();
322         modelInfo.setModelInvariantId(MODEL_INVARIANT_ID);
323         modelInfo.setModelName(MODEL_NAME);
324         Boolean expected = false;
325
326         Boolean result = requestHandler.getIsBaseVfModule(modelInfo, Action.deleteInstance, vnfType,
327                 sdcServiceModelVersion, currentActiveRequest);
328         assertEquals(result, expected);
329     }
330
331     @Test
332     public void getIsBaseVfModuleModelVersionNullUpdateTest() throws ApiException {
333         ModelInfo modelInfo = new ModelInfo();
334         modelInfo.setModelInvariantId(MODEL_INVARIANT_ID);
335         modelInfo.setModelName(MODEL_NAME);
336         String errorMessage = "VnfType vnfType and VF Module Model Name modelName not found in MSO Catalog DB";
337
338         doNothing().when(requestHandler).updateStatus(currentActiveRequest, Status.FAILED, errorMessage);
339
340         thrown.expect(VfModuleNotFoundException.class);
341         thrown.expectMessage(errorMessage);
342         requestHandler.getIsBaseVfModule(modelInfo, Action.updateInstance, vnfType, null, currentActiveRequest);
343     }
344
345     @Test
346     public void getIsBaseVfModulesdcModelVersionEmptyTest() throws ApiException {
347         ModelInfo modelInfo = new ModelInfo();
348         modelInfo.setModelInvariantId(MODEL_INVARIANT_ID);
349         modelInfo.setModelName(MODEL_NAME);
350         String errorMessage = "VnfType vnfType and VF Module Model Name modelName not found in MSO Catalog DB";
351
352         doNothing().when(requestHandler).updateStatus(currentActiveRequest, Status.FAILED, errorMessage);
353
354         thrown.expect(VfModuleNotFoundException.class);
355         thrown.expectMessage(errorMessage);
356         requestHandler.getIsBaseVfModule(modelInfo, Action.updateInstance, vnfType, "", currentActiveRequest);
357     }
358
359     @Test
360     public void getModelTypeApplyUpdatedConfigTest() {
361         ModelType modelTypeExpected = ModelType.vnf;
362
363         ModelType modelTypeResult = requestHandler.getModelType(Action.applyUpdatedConfig, null);
364         assertEquals(modelTypeResult, modelTypeExpected);
365     }
366
367     @Test
368     public void getModelTypeInPlaceSoftwareUpdateTest() {
369         ModelType modelTypeExpected = ModelType.vnf;
370
371         ModelType modelTypeResult = requestHandler.getModelType(Action.inPlaceSoftwareUpdate, null);
372         assertEquals(modelTypeResult, modelTypeExpected);
373     }
374
375     @Test
376     public void getModelTypeAddMembersTest() {
377         ModelType modelTypeExpected = ModelType.instanceGroup;
378
379         ModelType modelTypeResult = requestHandler.getModelType(Action.addMembers, null);
380         assertEquals(modelTypeResult, modelTypeExpected);
381     }
382
383     @Test
384     public void getModelTypeRemoveMembersTest() {
385         ModelType modelTypeExpected = ModelType.instanceGroup;
386
387         ModelType modelTypeResult = requestHandler.getModelType(Action.removeMembers, null);
388         assertEquals(modelTypeResult, modelTypeExpected);
389     }
390
391     @Test
392     public void getModelTypeTest() {
393         ModelType modelTypeExpected = ModelType.service;
394         ModelInfo modelInfo = new ModelInfo();
395         modelInfo.setModelType(ModelType.service);
396
397         ModelType modelTypeResult = requestHandler.getModelType(Action.createInstance, modelInfo);
398         assertEquals(modelTypeResult, modelTypeExpected);
399     }
400
401     @Test
402     public void updateRequestorIdInRequestBodyTest() throws IOException {
403         String newRequestorId = "yyyyyy";
404         String expected = getRequestBody("/RequestBodyNewRequestorId.json");
405         String result = requestHandler.updateRequestorIdInRequestBody(infraActiveRequest, newRequestorId);
406         assertEquals(expected, result);
407     }
408
409 }