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