2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.so.apihandlerinfra;
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;
51 @RunWith(MockitoJUnitRunner.class)
52 public class RequestHandlerUtilsUnitTest {
55 private CatalogDbClient catDbClient;
59 private RequestHandlerUtils requestHandler;
62 public ExpectedException thrown = ExpectedException.none();
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";
90 public String getRequestBody(String request) throws IOException {
91 request = "src/test/resources/ResumeOrchestrationRequest" + request;
92 return new String(Files.readAllBytes(Paths.get(request)));
96 public void setup() throws IOException {
97 setInfraActiveRequest();
98 setCurrentActiveRequest();
99 setCurrentActiveRequestNullInfraActive();
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");
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);
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);
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));
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));
162 public void setInstanceIdAndNameServiceTest() throws ApiException {
163 InfraActiveRequests serviceRequest = new InfraActiveRequests();
165 InfraActiveRequests expected = new InfraActiveRequests();
166 expected.setServiceInstanceId(SERVICE_INSTANCE_ID);
167 expected.setServiceInstanceName(SERVICE_INSTANCE_NAME);
169 requestHandler.setInstanceIdAndName(infraActiveRequest, serviceRequest);
170 assertThat(serviceRequest, sameBeanAs(expected));
174 public void setInstanceIdAndNameServiceNullInstanceNameTest() throws ApiException {
175 InfraActiveRequests serviceRequest = new InfraActiveRequests();
177 InfraActiveRequests request = new InfraActiveRequests();
178 request.setServiceInstanceId(SERVICE_INSTANCE_ID);
179 request.setRequestScope(ModelType.service.toString());
181 InfraActiveRequests expected = new InfraActiveRequests();
182 expected.setServiceInstanceId(SERVICE_INSTANCE_ID);
184 requestHandler.setInstanceIdAndName(request, serviceRequest);
185 assertThat(serviceRequest, sameBeanAs(expected));
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);
195 InfraActiveRequests request = new InfraActiveRequests();
196 request.setServiceInstanceId(VFMODULE_ID);
197 request.setRequestScope(ModelType.vfModule.toString());
198 request.setRequestId(RESUMED_REQUEST_ID);
200 thrown.expect(ValidateException.class);
201 thrown.expectMessage(errorMessage);
203 requestHandler.setInstanceIdAndName(request, vfModuleRequest);
207 public void setInstanceIdAndNameRequestScopeNotValidTest() throws ApiException {
208 InfraActiveRequests originalServiceRequest = new InfraActiveRequests();
209 originalServiceRequest.setRequestScope("test");
210 InfraActiveRequests serviceRequest = new InfraActiveRequests();
212 InfraActiveRequests expected = new InfraActiveRequests();
214 requestHandler.setInstanceIdAndName(originalServiceRequest, serviceRequest);
215 assertThat(serviceRequest, sameBeanAs(expected));
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();
226 InfraActiveRequests expected = new InfraActiveRequests();
227 expected.setVnfId(VNF_ID);
228 expected.setVnfName(VNF_NAME);
230 requestHandler.setInstanceIdAndName(vnfRequestOriginal, vnfRequest);
231 assertThat(vnfRequest, sameBeanAs(expected));
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();
242 InfraActiveRequests expected = new InfraActiveRequests();
243 expected.setVfModuleId(VFMODULE_ID);
244 expected.setVfModuleName(VFMODULE_NAME);
246 requestHandler.setInstanceIdAndName(vfModuleRequestOriginal, vfModuleRequest);
247 assertThat(vfModuleRequest, sameBeanAs(expected));
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();
258 InfraActiveRequests expected = new InfraActiveRequests();
259 expected.setNetworkId(NETWORK_ID);
260 expected.setNetworkName(NETWORK_NAME);
262 requestHandler.setInstanceIdAndName(networkRequestOriginal, networkRequest);
263 assertThat(networkRequest, sameBeanAs(expected));
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();
274 InfraActiveRequests expected = new InfraActiveRequests();
275 expected.setVolumeGroupId(VOLUME_GROUP_ID);
276 expected.setVolumeGroupName(VOLUME_GROUP_NAME);
278 requestHandler.setInstanceIdAndName(volumeGroupRequestOriginal, volumeGroupRequest);
279 assertThat(volumeGroupRequest, sameBeanAs(expected));
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);
289 doReturn(vfModule).when(catDbClient).getVfModuleByModelUUID(MODEL_VERSION_ID);
290 Boolean expected = true;
292 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, action, vnfType, sdcServiceModelVersion,
293 currentActiveRequest);
294 assertEquals(result, expected);
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);
304 doReturn(vfModule).when(catDbClient).getVfModuleByModelUUID(MODEL_VERSION_ID);
305 Boolean expected = false;
307 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, action, vnfType, sdcServiceModelVersion,
308 currentActiveRequest);
309 assertEquals(result, expected);
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";
320 doNothing().when(requestHandler).updateStatus(currentActiveRequest, Status.FAILED, errorMessage);
321 doReturn(null).when(catDbClient).getVfModuleByModelUUID(MODEL_VERSION_ID);
323 thrown.expect(VfModuleNotFoundException.class);
324 thrown.expectMessage(errorMessage);
325 requestHandler.getIsBaseVfModule(modelInfo, action, vnfType, sdcServiceModelVersion, currentActiveRequest);
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;
336 doReturn(null).when(catDbClient).getVfModuleByModelInvariantUUIDAndModelVersion(MODEL_INVARIANT_ID,
339 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, Action.deleteInstance, vnfType,
340 sdcServiceModelVersion, currentActiveRequest);
341 assertEquals(result, expected);
345 public void getIsBaseVfModuleModelInfoNotSetTest() throws ApiException {
346 ModelInfo modelInfo = new ModelInfo();
347 Boolean expected = false;
349 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, Action.deleteInstance, vnfType,
350 sdcServiceModelVersion, currentActiveRequest);
351 assertEquals(result, expected);
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;
361 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, Action.deleteInstance, vnfType,
362 sdcServiceModelVersion, currentActiveRequest);
363 assertEquals(result, expected);
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";
373 doNothing().when(requestHandler).updateStatus(currentActiveRequest, Status.FAILED, errorMessage);
375 thrown.expect(VfModuleNotFoundException.class);
376 thrown.expectMessage(errorMessage);
377 requestHandler.getIsBaseVfModule(modelInfo, Action.updateInstance, vnfType, null, currentActiveRequest);
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";
387 doNothing().when(requestHandler).updateStatus(currentActiveRequest, Status.FAILED, errorMessage);
389 thrown.expect(VfModuleNotFoundException.class);
390 thrown.expectMessage(errorMessage);
391 requestHandler.getIsBaseVfModule(modelInfo, Action.updateInstance, vnfType, "", currentActiveRequest);
395 public void getModelTypeApplyUpdatedConfigTest() throws ApiException {
396 ModelType modelTypeExpected = ModelType.vnf;
398 ModelType modelTypeResult = requestHandler.getModelType(Action.applyUpdatedConfig, null);
399 assertEquals(modelTypeResult, modelTypeExpected);
403 public void getModelTypeInPlaceSoftwareUpdateTest() throws ApiException {
404 ModelType modelTypeExpected = ModelType.vnf;
406 ModelType modelTypeResult = requestHandler.getModelType(Action.inPlaceSoftwareUpdate, null);
407 assertEquals(modelTypeResult, modelTypeExpected);
411 public void getModelTypeAddMembersTest() throws ApiException {
412 ModelType modelTypeExpected = ModelType.instanceGroup;
414 ModelType modelTypeResult = requestHandler.getModelType(Action.addMembers, null);
415 assertEquals(modelTypeResult, modelTypeExpected);
419 public void getModelTypeRemoveMembersTest() throws ApiException {
420 ModelType modelTypeExpected = ModelType.instanceGroup;
422 ModelType modelTypeResult = requestHandler.getModelType(Action.removeMembers, null);
423 assertEquals(modelTypeResult, modelTypeExpected);
427 public void getModelTypeTest() throws ApiException {
428 ModelType modelTypeExpected = ModelType.service;
429 ModelInfo modelInfo = new ModelInfo();
430 modelInfo.setModelType(ModelType.service);
432 ModelType modelTypeResult = requestHandler.getModelType(Action.createInstance, modelInfo);
433 assertEquals(modelTypeResult, modelTypeExpected);
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);