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.hamcrest.CoreMatchers.containsString;
25 import static org.hamcrest.CoreMatchers.equalTo;
26 import static org.hamcrest.CoreMatchers.is;
27 import static org.junit.Assert.assertEquals;
28 import static org.junit.Assert.assertFalse;
29 import static org.junit.Assert.assertThat;
30 import static org.junit.Assert.assertTrue;
31 import static org.mockito.Mockito.doReturn;
32 import javax.ws.rs.core.Response;
33 import org.apache.commons.lang.StringUtils;
34 import org.junit.Before;
35 import org.junit.Rule;
36 import org.junit.Test;
37 import org.junit.rules.ExpectedException;
38 import org.junit.runner.RunWith;
39 import org.mockito.InjectMocks;
40 import org.mockito.Mock;
41 import org.mockito.junit.MockitoJUnitRunner;
42 import org.onap.so.apihandler.common.ResponseBuilder;
43 import org.onap.so.apihandlerinfra.exceptions.ApiException;
44 import org.onap.so.apihandlerinfra.exceptions.ValidateException;
45 import org.onap.so.constants.OrchestrationRequestFormat;
46 import org.onap.so.constants.Status;
47 import org.onap.so.db.request.beans.InfraActiveRequests;
48 import org.onap.so.db.request.client.RequestsDbClient;
49 import org.onap.so.serviceinstancebeans.InstanceReferences;
50 import org.onap.so.serviceinstancebeans.Request;
51 import org.onap.so.serviceinstancebeans.RequestStatus;
53 @RunWith(MockitoJUnitRunner.class)
54 public class OrchestrationRequestsUnitTest {
56 private RequestsDbClient requestDbClient;
58 private MsoRequest msoRequest;
60 private ResponseBuilder builder;
62 private Response response;
64 private CamundaRequestHandler camundaRequestHandler;
66 public ExpectedException thrown = ExpectedException.none();
68 private OrchestrationRequests orchestrationRequests;
70 private static final String REQUEST_ID = "7cb9aa56-dd31-41e5-828e-d93027d4ebba";
71 private static final String SERVICE_INSTANCE_ID = "7cb9aa56-dd31-41e5-828e-d93027d4ebbb";
72 private static final String ORIGINAL_REQUEST_ID = "8f2d38a6-7c20-465a-bd7e-075645f1394b";
73 private static final String SERVICE = "service";
74 private static final String EXT_SYSTEM_ERROR_SOURCE = "external system error source";
75 private static final String FLOW_STATUS = "FlowStatus";
76 private static final String RETRY_STATUS_MESSAGE = "RetryStatusMessage";
77 private static final String ROLLBACK_STATUS_MESSAGE = "RollbackStatusMessage";
78 private static final String TASK_INFORMATION = " TASK INFORMATION: Last task executed: Call SDNC";
79 private InfraActiveRequests iar;
80 boolean includeCloudRequest = false;
81 private static final String ROLLBACK_EXT_SYSTEM_ERROR_SOURCE = "SDNC";
86 iar = new InfraActiveRequests();
87 iar.setRequestScope(SERVICE);
88 iar.setRequestId(REQUEST_ID);
89 iar.setServiceInstanceId(SERVICE_INSTANCE_ID);
90 iar.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
91 iar.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
92 iar.setFlowStatus(FLOW_STATUS);
93 iar.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
94 iar.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
95 iar.setResourceStatusMessage("The vf module already exist");
99 public void mapInfraActiveRequestToRequestWithOriginalRequestIdTest() throws ApiException {
100 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
101 InstanceReferences instanceReferences = new InstanceReferences();
102 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
103 RequestStatus requestStatus = new RequestStatus();
104 requestStatus.setRequestState(iar.getRequestStatus());
105 requestStatus.setStatusMessage(
106 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
107 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
108 "The vf module already exist"));
110 Request expected = new Request();
111 expected.setRequestId(REQUEST_ID);
112 expected.setOriginalRequestId(ORIGINAL_REQUEST_ID);
113 expected.setInstanceReferences(instanceReferences);
114 expected.setRequestStatus(requestStatus);
115 expected.setRequestScope(SERVICE);
117 iar.setOriginalRequestId(ORIGINAL_REQUEST_ID);
119 Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
120 OrchestrationRequestFormat.DETAIL.toString(), "v7");
121 assertThat(result, sameBeanAs(expected));
125 public void mapInfraActiveRequestToRequestOriginalRequestIdNullTest() throws ApiException {
126 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
127 InstanceReferences instanceReferences = new InstanceReferences();
128 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
129 RequestStatus requestStatus = new RequestStatus();
130 requestStatus.setRequestState(iar.getRequestStatus());
131 requestStatus.setStatusMessage(
132 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
133 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
134 "The vf module already exist"));
136 Request expected = new Request();
137 expected.setRequestId(REQUEST_ID);
138 expected.setInstanceReferences(instanceReferences);
139 expected.setRequestStatus(requestStatus);
140 expected.setRequestScope(SERVICE);
142 Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
143 OrchestrationRequestFormat.DETAIL.toString(), "v7");
144 assertThat(result, sameBeanAs(expected));
148 public void mapRequestStatusAndExtSysErrSrcToRequestFalseTest() throws ApiException {
149 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
150 InstanceReferences instanceReferences = new InstanceReferences();
151 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
152 RequestStatus requestStatus = new RequestStatus();
153 requestStatus.setRequestState(iar.getRequestStatus());
154 requestStatus.setStatusMessage(
155 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
156 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
157 "The vf module already exist"));
159 Request expected = new Request();
160 expected.setRequestId(REQUEST_ID);
161 expected.setInstanceReferences(instanceReferences);
162 expected.setRequestStatus(requestStatus);
163 expected.setRequestScope(SERVICE);
165 includeCloudRequest = false;
167 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
168 OrchestrationRequestFormat.DETAIL.toString(), "v7");
169 assertThat(actual, sameBeanAs(expected));
173 public void mapRequestStatusAndExtSysErrSrcToRequestStatusDetailTest() throws ApiException {
174 doReturn(null).when(camundaRequestHandler).getTaskName(REQUEST_ID);
175 InstanceReferences instanceReferences = new InstanceReferences();
176 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
177 RequestStatus requestStatus = new RequestStatus();
178 requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
179 requestStatus.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
180 requestStatus.setRequestState(iar.getRequestStatus());
181 requestStatus.setFlowStatus(FLOW_STATUS);
182 requestStatus.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
183 requestStatus.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
185 Request expected = new Request();
186 expected.setRequestId(REQUEST_ID);
187 expected.setInstanceReferences(instanceReferences);
188 expected.setRequestStatus(requestStatus);
189 expected.setRequestScope(SERVICE);
191 includeCloudRequest = false;
193 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
194 OrchestrationRequestFormat.STATUSDETAIL.toString(), "v7");
195 assertThat(actual, sameBeanAs(expected));
199 public void mapRequestStatusAndExtSysErrSrcToRequestStatusDetailV8Test() throws ApiException {
200 doReturn(null).when(camundaRequestHandler).getTaskName(REQUEST_ID);
201 InstanceReferences instanceReferences = new InstanceReferences();
202 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
203 RequestStatus requestStatus = new RequestStatus();
204 requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
205 requestStatus.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
206 requestStatus.setRequestState(iar.getRequestStatus());
207 requestStatus.setFlowStatus(FLOW_STATUS);
208 requestStatus.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
209 requestStatus.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
210 requestStatus.setResourceStatusMessage("The vf module already exist");
212 Request expected = new Request();
213 expected.setRequestId(REQUEST_ID);
214 expected.setInstanceReferences(instanceReferences);
215 expected.setRequestStatus(requestStatus);
216 expected.setRequestScope(SERVICE);
218 includeCloudRequest = false;
220 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
221 OrchestrationRequestFormat.STATUSDETAIL.toString(), "v8");
222 assertThat(actual, sameBeanAs(expected));
226 public void mapRequestStatusNoTaskInfoTest() throws ApiException {
227 InstanceReferences instanceReferences = new InstanceReferences();
228 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
229 RequestStatus requestStatus = new RequestStatus();
230 requestStatus.setRequestState(iar.getRequestStatus());
231 requestStatus.setStatusMessage(
232 "FLOW STATUS: FlowStatus RETRY STATUS: RetryStatusMessage ROLLBACK STATUS: RollbackStatusMessage RESOURCE STATUS: The vf module already exist");
234 Request expected = new Request();
235 expected.setRequestId(REQUEST_ID);
236 expected.setInstanceReferences(instanceReferences);
237 expected.setRequestStatus(requestStatus);
238 expected.setRequestScope(SERVICE);
240 includeCloudRequest = false;
242 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
243 OrchestrationRequestFormat.SIMPLENOTASKINFO.toString(), "v7");
244 assertThat(expected, sameBeanAs(actual));
248 public void mapRequestStatusNullFormatTest() throws ApiException {
249 doReturn("TaskName").when(camundaRequestHandler).getTaskName(REQUEST_ID);
250 InstanceReferences instanceReferences = new InstanceReferences();
251 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
252 RequestStatus requestStatus = new RequestStatus();
253 requestStatus.setRequestState(iar.getRequestStatus());
254 requestStatus.setStatusMessage(
255 "FLOW STATUS: FlowStatus TASK INFORMATION: TaskName RETRY STATUS: RetryStatusMessage ROLLBACK STATUS: RollbackStatusMessage RESOURCE STATUS: The vf module already exist");
257 Request expected = new Request();
258 expected.setRequestId(REQUEST_ID);
259 expected.setInstanceReferences(instanceReferences);
260 expected.setRequestStatus(requestStatus);
261 expected.setRequestScope(SERVICE);
263 includeCloudRequest = false;
265 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest, null, "v7");
266 assertThat(expected, sameBeanAs(actual));
270 public void mapRequestStatusAndExtSysErrSrcToRequestDetailTest() throws ApiException {
271 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
272 InstanceReferences instanceReferences = new InstanceReferences();
273 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
274 RequestStatus requestStatus = new RequestStatus();
275 requestStatus.setRequestState(iar.getRequestStatus());
276 requestStatus.setStatusMessage(
277 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
278 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
279 "The vf module already exist"));
281 Request expected = new Request();
282 expected.setRequestId(REQUEST_ID);
283 expected.setInstanceReferences(instanceReferences);
284 expected.setRequestStatus(requestStatus);
285 expected.setRequestScope(SERVICE);
287 includeCloudRequest = false;
289 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
290 OrchestrationRequestFormat.DETAIL.toString(), "v7");
292 assertThat(actual, sameBeanAs(expected));
296 public void mapRequestStatusAndExtSysErrSrcToRequestNoFlowStatusTest() throws ApiException {
297 InstanceReferences instanceReferences = new InstanceReferences();
298 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
299 RequestStatus requestStatus = new RequestStatus();
300 requestStatus.setRequestState(iar.getRequestStatus());
301 requestStatus.setStatusMessage(
302 String.format("RETRY STATUS: %s ROLLBACK STATUS: %s", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
304 Request expected = new Request();
305 expected.setRequestId(REQUEST_ID);
306 expected.setInstanceReferences(instanceReferences);
307 expected.setRequestStatus(requestStatus);
308 expected.setRequestScope(SERVICE);
310 includeCloudRequest = false;
311 iar.setFlowStatus(null);
312 iar.setResourceStatusMessage(null);
314 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
315 OrchestrationRequestFormat.DETAIL.toString(), "v7");
317 assertThat(actual, sameBeanAs(expected));
321 public void mapRequestStatusAndExtSysErrSrcToRequestErrorMessageTest() throws ApiException {
322 InstanceReferences instanceReferences = new InstanceReferences();
323 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
324 iar.setExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
325 iar.setFlowStatus(null);
326 iar.setStatusMessage("Error retrieving cloud region from AAI");
328 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
329 OrchestrationRequestFormat.DETAIL.toString(), "v7");
331 assertTrue(actual.getRequestStatus().getStatusMessage()
332 .contains("Error Source: " + ROLLBACK_EXT_SYSTEM_ERROR_SOURCE));
336 public void mapRequestStatusAndExtSysErrSrcToRequestFlowStatusSuccessfulCompletionTest() throws ApiException {
337 InstanceReferences instanceReferences = new InstanceReferences();
338 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
339 RequestStatus requestStatus = new RequestStatus();
340 requestStatus.setRequestState(iar.getRequestStatus());
341 requestStatus.setStatusMessage(
342 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
343 "Successfully completed all Building Blocks", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
344 "The vf module already exist"));
346 Request expected = new Request();
347 expected.setRequestId(REQUEST_ID);
348 expected.setInstanceReferences(instanceReferences);
349 expected.setRequestStatus(requestStatus);
350 expected.setRequestScope(SERVICE);
352 includeCloudRequest = false;
353 iar.setFlowStatus("Successfully completed all Building Blocks");
355 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
356 OrchestrationRequestFormat.DETAIL.toString(), "v7");
358 assertThat(actual, sameBeanAs(expected));
362 public void mapRequestStatusAndExtSysErrSrcToRequestFlowStatusSuccessfulRollbackTest() throws ApiException {
363 InstanceReferences instanceReferences = new InstanceReferences();
364 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
365 RequestStatus requestStatus = new RequestStatus();
366 requestStatus.setRequestState(iar.getRequestStatus());
367 requestStatus.setStatusMessage(
368 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
369 "All Rollback flows have completed successfully", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
370 "The vf module already exist"));
372 Request expected = new Request();
373 expected.setRequestId(REQUEST_ID);
374 expected.setInstanceReferences(instanceReferences);
375 expected.setRequestStatus(requestStatus);
376 expected.setRequestScope(SERVICE);
378 includeCloudRequest = false;
379 iar.setFlowStatus("All Rollback flows have completed successfully");
381 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
382 OrchestrationRequestFormat.DETAIL.toString(), "v7");
384 assertThat(actual, sameBeanAs(expected));
388 public void requestStatusExtSystemErrorSourceTest() {
389 RequestStatus requestStatus = new RequestStatus();
390 requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
391 assertThat(requestStatus.getExtSystemErrorSource(), is(equalTo(EXT_SYSTEM_ERROR_SOURCE)));
395 public void mapRequestStatusToRequestForFormatDetailTest() throws ApiException {
396 iar.setRequestStatus(Status.ABORTED.toString());
398 orchestrationRequests.mapRequestStatusToRequest(iar, OrchestrationRequestFormat.DETAIL.toString());
400 assertEquals(Status.ABORTED.toString(), result);
404 public void mapRequestStatusToRequestForFormatStatusDetailTest() throws ApiException {
405 iar.setRequestStatus(Status.ABORTED.toString());
406 String result = orchestrationRequests.mapRequestStatusToRequest(iar, "statusDetail");
408 assertEquals(Status.ABORTED.toString(), result);
413 public void mapRequestStatusToRequestForFormatEmptyStringTest() throws ApiException {
414 iar.setRequestStatus(Status.ABORTED.toString());
415 String result = orchestrationRequests.mapRequestStatusToRequest(iar, StringUtils.EMPTY);
417 assertEquals(Status.FAILED.toString(), result);
421 public void infraActiveRequestNullValidationExceptionTest() throws ApiException {
422 iar.setRequestId(REQUEST_ID);
423 thrown.expect(ValidateException.class);
424 thrown.expectMessage(containsString("Null response from RequestDB when searching by RequestId " + REQUEST_ID));
425 orchestrationRequests.infraActiveRequestLookup(iar.getRequestId());
429 public void isRequestProcessingDataRequiredTest() {
430 boolean required = orchestrationRequests.isRequestProcessingDataRequired("simpleNoTaskInfo");
431 assertFalse(required);