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