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.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;
50 @RunWith(MockitoJUnitRunner.class)
51 public class RequestHandlerUtilsUnitTest {
54 private CatalogDbClient catDbClient;
58 private RequestHandlerUtils requestHandler;
61 public ExpectedException thrown = ExpectedException.none();
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";
89 public String getRequestBody(String request) throws IOException {
90 request = "src/test/resources/ResumeOrchestrationRequest" + request;
91 return new String(Files.readAllBytes(Paths.get(request)));
95 public void setup() throws IOException {
96 setInfraActiveRequest();
97 setCurrentActiveRequest();
98 setCurrentActiveRequestNullInfraActive();
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");
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);
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);
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));
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));
161 public void setInstanceIdAndNameServiceTest() throws ApiException {
162 InfraActiveRequests serviceRequest = new InfraActiveRequests();
164 InfraActiveRequests expected = new InfraActiveRequests();
165 expected.setServiceInstanceId(SERVICE_INSTANCE_ID);
166 expected.setServiceInstanceName(SERVICE_INSTANCE_NAME);
168 requestHandler.setInstanceIdAndName(infraActiveRequest, serviceRequest);
169 assertThat(serviceRequest, sameBeanAs(expected));
173 public void setInstanceIdAndNameServiceNullInstanceNameTest() throws ApiException {
174 InfraActiveRequests serviceRequest = new InfraActiveRequests();
176 InfraActiveRequests request = new InfraActiveRequests();
177 request.setServiceInstanceId(SERVICE_INSTANCE_ID);
178 request.setRequestScope(ModelType.service.toString());
180 InfraActiveRequests expected = new InfraActiveRequests();
181 expected.setServiceInstanceId(SERVICE_INSTANCE_ID);
183 requestHandler.setInstanceIdAndName(request, serviceRequest);
184 assertThat(serviceRequest, sameBeanAs(expected));
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);
194 InfraActiveRequests request = new InfraActiveRequests();
195 request.setServiceInstanceId(VFMODULE_ID);
196 request.setRequestScope(ModelType.vfModule.toString());
197 request.setRequestId(RESUMED_REQUEST_ID);
199 thrown.expect(ValidateException.class);
200 thrown.expectMessage(errorMessage);
202 requestHandler.setInstanceIdAndName(request, vfModuleRequest);
206 public void setInstanceIdAndNameRequestScopeNotValidTest() throws ApiException {
207 InfraActiveRequests originalServiceRequest = new InfraActiveRequests();
208 originalServiceRequest.setRequestScope("test");
209 InfraActiveRequests serviceRequest = new InfraActiveRequests();
211 InfraActiveRequests expected = new InfraActiveRequests();
213 requestHandler.setInstanceIdAndName(originalServiceRequest, serviceRequest);
214 assertThat(serviceRequest, sameBeanAs(expected));
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();
225 InfraActiveRequests expected = new InfraActiveRequests();
226 expected.setVnfId(VNF_ID);
227 expected.setVnfName(VNF_NAME);
229 requestHandler.setInstanceIdAndName(vnfRequestOriginal, vnfRequest);
230 assertThat(vnfRequest, sameBeanAs(expected));
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();
241 InfraActiveRequests expected = new InfraActiveRequests();
242 expected.setVfModuleId(VFMODULE_ID);
243 expected.setVfModuleName(VFMODULE_NAME);
245 requestHandler.setInstanceIdAndName(vfModuleRequestOriginal, vfModuleRequest);
246 assertThat(vfModuleRequest, sameBeanAs(expected));
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();
257 InfraActiveRequests expected = new InfraActiveRequests();
258 expected.setNetworkId(NETWORK_ID);
259 expected.setNetworkName(NETWORK_NAME);
261 requestHandler.setInstanceIdAndName(networkRequestOriginal, networkRequest);
262 assertThat(networkRequest, sameBeanAs(expected));
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();
273 InfraActiveRequests expected = new InfraActiveRequests();
274 expected.setVolumeGroupId(VOLUME_GROUP_ID);
275 expected.setVolumeGroupName(VOLUME_GROUP_NAME);
277 requestHandler.setInstanceIdAndName(volumeGroupRequestOriginal, volumeGroupRequest);
278 assertThat(volumeGroupRequest, sameBeanAs(expected));
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);
288 doReturn(vfModule).when(catDbClient).getVfModuleByModelUUID(MODEL_VERSION_ID);
289 Boolean expected = true;
291 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, action, vnfType, sdcServiceModelVersion,
292 currentActiveRequest);
293 assertEquals(result, expected);
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);
303 doReturn(vfModule).when(catDbClient).getVfModuleByModelUUID(MODEL_VERSION_ID);
304 Boolean expected = false;
306 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, action, vnfType, sdcServiceModelVersion,
307 currentActiveRequest);
308 assertEquals(result, expected);
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";
319 doNothing().when(requestHandler).updateStatus(currentActiveRequest, Status.FAILED, errorMessage);
320 doReturn(null).when(catDbClient).getVfModuleByModelUUID(MODEL_VERSION_ID);
322 thrown.expect(VfModuleNotFoundException.class);
323 thrown.expectMessage(errorMessage);
324 requestHandler.getIsBaseVfModule(modelInfo, action, vnfType, sdcServiceModelVersion, currentActiveRequest);
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;
335 doReturn(null).when(catDbClient).getVfModuleByModelInvariantUUIDAndModelVersion(MODEL_INVARIANT_ID,
338 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, Action.deleteInstance, vnfType,
339 sdcServiceModelVersion, currentActiveRequest);
340 assertEquals(result, expected);
344 public void getIsBaseVfModuleModelInfoNotSetTest() throws ApiException {
345 ModelInfo modelInfo = new ModelInfo();
346 Boolean expected = false;
348 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, Action.deleteInstance, vnfType,
349 sdcServiceModelVersion, currentActiveRequest);
350 assertEquals(result, expected);
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;
360 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, Action.deleteInstance, vnfType,
361 sdcServiceModelVersion, currentActiveRequest);
362 assertEquals(result, expected);
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";
372 doNothing().when(requestHandler).updateStatus(currentActiveRequest, Status.FAILED, errorMessage);
374 thrown.expect(VfModuleNotFoundException.class);
375 thrown.expectMessage(errorMessage);
376 requestHandler.getIsBaseVfModule(modelInfo, Action.updateInstance, vnfType, null, currentActiveRequest);
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";
386 doNothing().when(requestHandler).updateStatus(currentActiveRequest, Status.FAILED, errorMessage);
388 thrown.expect(VfModuleNotFoundException.class);
389 thrown.expectMessage(errorMessage);
390 requestHandler.getIsBaseVfModule(modelInfo, Action.updateInstance, vnfType, "", currentActiveRequest);
394 public void getModelTypeApplyUpdatedConfigTest() throws ApiException {
395 ModelType modelTypeExpected = ModelType.vnf;
397 ModelType modelTypeResult = requestHandler.getModelType(Action.applyUpdatedConfig, null);
398 assertEquals(modelTypeResult, modelTypeExpected);
402 public void getModelTypeInPlaceSoftwareUpdateTest() throws ApiException {
403 ModelType modelTypeExpected = ModelType.vnf;
405 ModelType modelTypeResult = requestHandler.getModelType(Action.inPlaceSoftwareUpdate, null);
406 assertEquals(modelTypeResult, modelTypeExpected);
410 public void getModelTypeAddMembersTest() throws ApiException {
411 ModelType modelTypeExpected = ModelType.instanceGroup;
413 ModelType modelTypeResult = requestHandler.getModelType(Action.addMembers, null);
414 assertEquals(modelTypeResult, modelTypeExpected);
418 public void getModelTypeRemoveMembersTest() throws ApiException {
419 ModelType modelTypeExpected = ModelType.instanceGroup;
421 ModelType modelTypeResult = requestHandler.getModelType(Action.removeMembers, null);
422 assertEquals(modelTypeResult, modelTypeExpected);
426 public void getModelTypeTest() throws ApiException {
427 ModelType modelTypeExpected = ModelType.service;
428 ModelInfo modelInfo = new ModelInfo();
429 modelInfo.setModelType(ModelType.service);
431 ModelType modelTypeResult = requestHandler.getModelType(Action.createInstance, modelInfo);
432 assertEquals(modelTypeResult, modelTypeExpected);
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);