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.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;
49 @RunWith(MockitoJUnitRunner.class)
50 public class RequestHandlerUtilsUnitTest {
53 private CatalogDbClient catDbClient;
57 private RequestHandlerUtils requestHandler;
60 public ExpectedException thrown = ExpectedException.none();
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";
88 public String getRequestBody(String request) throws IOException {
89 request = "src/test/resources/ResumeOrchestrationRequest" + request;
90 return new String(Files.readAllBytes(Paths.get(request)));
94 public void setup() throws IOException {
95 setInfraActiveRequest();
96 setCurrentActiveRequest();
97 setCurrentActiveRequestNullInfraActive();
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");
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);
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);
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));
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));
160 public void setInstanceIdAndNameServiceTest() {
161 InfraActiveRequests serviceRequest = new InfraActiveRequests();
163 InfraActiveRequests expected = new InfraActiveRequests();
164 expected.setServiceInstanceId(SERVICE_INSTANCE_ID);
165 expected.setServiceInstanceName(SERVICE_INSTANCE_NAME);
167 requestHandler.setInstanceIdAndName(infraActiveRequest, serviceRequest);
168 assertThat(serviceRequest, sameBeanAs(expected));
172 public void setInstanceIdAndNameRequestScopeNotValidTest() {
173 InfraActiveRequests originalServiceRequest = new InfraActiveRequests();
174 originalServiceRequest.setRequestScope("test");
175 InfraActiveRequests serviceRequest = new InfraActiveRequests();
177 InfraActiveRequests expected = new InfraActiveRequests();
179 requestHandler.setInstanceIdAndName(originalServiceRequest, serviceRequest);
180 assertThat(serviceRequest, sameBeanAs(expected));
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();
191 InfraActiveRequests expected = new InfraActiveRequests();
192 expected.setVnfId(VNF_ID);
193 expected.setVnfName(VNF_NAME);
195 requestHandler.setInstanceIdAndName(vnfRequestOriginal, vnfRequest);
196 assertThat(vnfRequest, sameBeanAs(expected));
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();
207 InfraActiveRequests expected = new InfraActiveRequests();
208 expected.setVfModuleId(VFMODULE_ID);
209 expected.setVfModuleName(VFMODULE_NAME);
211 requestHandler.setInstanceIdAndName(vfModuleRequestOriginal, vfModuleRequest);
212 assertThat(vfModuleRequest, sameBeanAs(expected));
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();
223 InfraActiveRequests expected = new InfraActiveRequests();
224 expected.setNetworkId(NETWORK_ID);
225 expected.setNetworkName(NETWORK_NAME);
227 requestHandler.setInstanceIdAndName(networkRequestOriginal, networkRequest);
228 assertThat(networkRequest, sameBeanAs(expected));
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();
239 InfraActiveRequests expected = new InfraActiveRequests();
240 expected.setVolumeGroupId(VOLUME_GROUP_ID);
241 expected.setVolumeGroupName(VOLUME_GROUP_NAME);
243 requestHandler.setInstanceIdAndName(volumeGroupRequestOriginal, volumeGroupRequest);
244 assertThat(volumeGroupRequest, sameBeanAs(expected));
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);
254 doReturn(vfModule).when(catDbClient).getVfModuleByModelUUID(MODEL_VERSION_ID);
255 Boolean expected = true;
257 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, action, vnfType, sdcServiceModelVersion,
258 currentActiveRequest);
259 assertEquals(result, expected);
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);
269 doReturn(vfModule).when(catDbClient).getVfModuleByModelUUID(MODEL_VERSION_ID);
270 Boolean expected = false;
272 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, action, vnfType, sdcServiceModelVersion,
273 currentActiveRequest);
274 assertEquals(result, expected);
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";
285 doNothing().when(requestHandler).updateStatus(currentActiveRequest, Status.FAILED, errorMessage);
286 doReturn(null).when(catDbClient).getVfModuleByModelUUID(MODEL_VERSION_ID);
288 thrown.expect(VfModuleNotFoundException.class);
289 thrown.expectMessage(errorMessage);
290 requestHandler.getIsBaseVfModule(modelInfo, action, vnfType, sdcServiceModelVersion, currentActiveRequest);
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;
301 doReturn(null).when(catDbClient).getVfModuleByModelInvariantUUIDAndModelVersion(MODEL_INVARIANT_ID,
304 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, Action.deleteInstance, vnfType,
305 sdcServiceModelVersion, currentActiveRequest);
306 assertEquals(result, expected);
310 public void getIsBaseVfModuleModelInfoNotSetTest() throws ApiException {
311 ModelInfo modelInfo = new ModelInfo();
312 Boolean expected = false;
314 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, Action.deleteInstance, vnfType,
315 sdcServiceModelVersion, currentActiveRequest);
316 assertEquals(result, expected);
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;
326 Boolean result = requestHandler.getIsBaseVfModule(modelInfo, Action.deleteInstance, vnfType,
327 sdcServiceModelVersion, currentActiveRequest);
328 assertEquals(result, expected);
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";
338 doNothing().when(requestHandler).updateStatus(currentActiveRequest, Status.FAILED, errorMessage);
340 thrown.expect(VfModuleNotFoundException.class);
341 thrown.expectMessage(errorMessage);
342 requestHandler.getIsBaseVfModule(modelInfo, Action.updateInstance, vnfType, null, currentActiveRequest);
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";
352 doNothing().when(requestHandler).updateStatus(currentActiveRequest, Status.FAILED, errorMessage);
354 thrown.expect(VfModuleNotFoundException.class);
355 thrown.expectMessage(errorMessage);
356 requestHandler.getIsBaseVfModule(modelInfo, Action.updateInstance, vnfType, "", currentActiveRequest);
360 public void getModelTypeApplyUpdatedConfigTest() {
361 ModelType modelTypeExpected = ModelType.vnf;
363 ModelType modelTypeResult = requestHandler.getModelType(Action.applyUpdatedConfig, null);
364 assertEquals(modelTypeResult, modelTypeExpected);
368 public void getModelTypeInPlaceSoftwareUpdateTest() {
369 ModelType modelTypeExpected = ModelType.vnf;
371 ModelType modelTypeResult = requestHandler.getModelType(Action.inPlaceSoftwareUpdate, null);
372 assertEquals(modelTypeResult, modelTypeExpected);
376 public void getModelTypeAddMembersTest() {
377 ModelType modelTypeExpected = ModelType.instanceGroup;
379 ModelType modelTypeResult = requestHandler.getModelType(Action.addMembers, null);
380 assertEquals(modelTypeResult, modelTypeExpected);
384 public void getModelTypeRemoveMembersTest() {
385 ModelType modelTypeExpected = ModelType.instanceGroup;
387 ModelType modelTypeResult = requestHandler.getModelType(Action.removeMembers, null);
388 assertEquals(modelTypeResult, modelTypeExpected);
392 public void getModelTypeTest() {
393 ModelType modelTypeExpected = ModelType.service;
394 ModelInfo modelInfo = new ModelInfo();
395 modelInfo.setModelType(ModelType.service);
397 ModelType modelTypeResult = requestHandler.getModelType(Action.createInstance, modelInfo);
398 assertEquals(modelTypeResult, modelTypeExpected);
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);