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.assertThat;
29 import static org.junit.Assert.assertTrue;
30 import static org.junit.Assert.assertFalse;
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);
98 public void mapInfraActiveRequestToRequestWithOriginalRequestIdTest() throws ApiException {
99 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
100 InstanceReferences instanceReferences = new InstanceReferences();
101 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
102 RequestStatus requestStatus = new RequestStatus();
103 requestStatus.setRequestState(iar.getRequestStatus());
104 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
105 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
107 Request expected = new Request();
108 expected.setRequestId(REQUEST_ID);
109 expected.setOriginalRequestId(ORIGINAL_REQUEST_ID);
110 expected.setInstanceReferences(instanceReferences);
111 expected.setRequestStatus(requestStatus);
112 expected.setRequestScope(SERVICE);
114 iar.setOriginalRequestId(ORIGINAL_REQUEST_ID);
116 Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
117 OrchestrationRequestFormat.DETAIL.toString());
118 assertThat(result, sameBeanAs(expected));
122 public void mapInfraActiveRequestToRequestOriginalRequestIdNullTest() throws ApiException {
123 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
124 InstanceReferences instanceReferences = new InstanceReferences();
125 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
126 RequestStatus requestStatus = new RequestStatus();
127 requestStatus.setRequestState(iar.getRequestStatus());
128 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
129 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
130 Request expected = new Request();
131 expected.setRequestId(REQUEST_ID);
132 expected.setInstanceReferences(instanceReferences);
133 expected.setRequestStatus(requestStatus);
134 expected.setRequestScope(SERVICE);
136 Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
137 OrchestrationRequestFormat.DETAIL.toString());
138 assertThat(result, sameBeanAs(expected));
142 public void mapRequestStatusAndExtSysErrSrcToRequestFalseTest() throws ApiException {
143 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
144 InstanceReferences instanceReferences = new InstanceReferences();
145 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
146 RequestStatus requestStatus = new RequestStatus();
147 requestStatus.setRequestState(iar.getRequestStatus());
148 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
149 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
151 Request expected = new Request();
152 expected.setRequestId(REQUEST_ID);
153 expected.setInstanceReferences(instanceReferences);
154 expected.setRequestStatus(requestStatus);
155 expected.setRequestScope(SERVICE);
157 includeCloudRequest = false;
159 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
160 OrchestrationRequestFormat.DETAIL.toString());
161 assertThat(actual, sameBeanAs(expected));
165 public void mapRequestStatusAndExtSysErrSrcToRequestStatusDetailTest() throws ApiException {
166 doReturn(null).when(camundaRequestHandler).getTaskName(REQUEST_ID);
167 InstanceReferences instanceReferences = new InstanceReferences();
168 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
169 RequestStatus requestStatus = new RequestStatus();
170 requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
171 requestStatus.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
172 requestStatus.setRequestState(iar.getRequestStatus());
173 requestStatus.setFlowStatus(FLOW_STATUS);
174 requestStatus.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
175 requestStatus.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
177 Request expected = new Request();
178 expected.setRequestId(REQUEST_ID);
179 expected.setInstanceReferences(instanceReferences);
180 expected.setRequestStatus(requestStatus);
181 expected.setRequestScope(SERVICE);
183 includeCloudRequest = false;
185 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
186 OrchestrationRequestFormat.STATUSDETAIL.toString());
187 assertThat(actual, sameBeanAs(expected));
191 public void mapRequestStatusNoTaskInfoTest() throws ApiException {
192 InstanceReferences instanceReferences = new InstanceReferences();
193 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
194 RequestStatus requestStatus = new RequestStatus();
195 requestStatus.setRequestState(iar.getRequestStatus());
196 requestStatus.setStatusMessage(
197 "FLOW STATUS: FlowStatus RETRY STATUS: RetryStatusMessage ROLLBACK STATUS: RollbackStatusMessage");
199 Request expected = new Request();
200 expected.setRequestId(REQUEST_ID);
201 expected.setInstanceReferences(instanceReferences);
202 expected.setRequestStatus(requestStatus);
203 expected.setRequestScope(SERVICE);
205 includeCloudRequest = false;
207 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
208 OrchestrationRequestFormat.SIMPLENOTASKINFO.toString());
209 assertThat(expected, sameBeanAs(actual));
213 public void mapRequestStatusNullFormatTest() throws ApiException {
214 doReturn("TaskName").when(camundaRequestHandler).getTaskName(REQUEST_ID);
215 InstanceReferences instanceReferences = new InstanceReferences();
216 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
217 RequestStatus requestStatus = new RequestStatus();
218 requestStatus.setRequestState(iar.getRequestStatus());
219 requestStatus.setStatusMessage(
220 "FLOW STATUS: FlowStatus TASK INFORMATION: TaskName RETRY STATUS: RetryStatusMessage ROLLBACK STATUS: RollbackStatusMessage");
222 Request expected = new Request();
223 expected.setRequestId(REQUEST_ID);
224 expected.setInstanceReferences(instanceReferences);
225 expected.setRequestStatus(requestStatus);
226 expected.setRequestScope(SERVICE);
228 includeCloudRequest = false;
230 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest, null);
231 assertThat(expected, sameBeanAs(actual));
235 public void mapRequestStatusAndExtSysErrSrcToRequestDetailTest() throws ApiException {
236 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
237 InstanceReferences instanceReferences = new InstanceReferences();
238 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
239 RequestStatus requestStatus = new RequestStatus();
240 requestStatus.setRequestState(iar.getRequestStatus());
241 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
242 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
244 Request expected = new Request();
245 expected.setRequestId(REQUEST_ID);
246 expected.setInstanceReferences(instanceReferences);
247 expected.setRequestStatus(requestStatus);
248 expected.setRequestScope(SERVICE);
250 includeCloudRequest = false;
252 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
253 OrchestrationRequestFormat.DETAIL.toString());
255 assertThat(actual, sameBeanAs(expected));
259 public void mapRequestStatusAndExtSysErrSrcToRequestNoFlowStatusTest() throws ApiException {
260 InstanceReferences instanceReferences = new InstanceReferences();
261 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
262 RequestStatus requestStatus = new RequestStatus();
263 requestStatus.setRequestState(iar.getRequestStatus());
264 requestStatus.setStatusMessage(
265 String.format("RETRY STATUS: %s ROLLBACK STATUS: %s", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
267 Request expected = new Request();
268 expected.setRequestId(REQUEST_ID);
269 expected.setInstanceReferences(instanceReferences);
270 expected.setRequestStatus(requestStatus);
271 expected.setRequestScope(SERVICE);
273 includeCloudRequest = false;
274 iar.setFlowStatus(null);
276 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
277 OrchestrationRequestFormat.DETAIL.toString());
279 assertThat(actual, sameBeanAs(expected));
283 public void mapRequestStatusAndExtSysErrSrcToRequestErrorMessageTest() throws ApiException {
284 InstanceReferences instanceReferences = new InstanceReferences();
285 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
286 iar.setExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
287 iar.setFlowStatus(null);
288 iar.setStatusMessage("Error retrieving cloud region from AAI");
290 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
291 OrchestrationRequestFormat.DETAIL.toString());
293 assertTrue(actual.getRequestStatus().getStatusMessage()
294 .contains("Error Source: " + ROLLBACK_EXT_SYSTEM_ERROR_SOURCE));
298 public void mapRequestStatusAndExtSysErrSrcToRequestFlowStatusSuccessfulCompletionTest() throws ApiException {
299 InstanceReferences instanceReferences = new InstanceReferences();
300 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
301 RequestStatus requestStatus = new RequestStatus();
302 requestStatus.setRequestState(iar.getRequestStatus());
303 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
304 "Successfully completed all Building Blocks", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
306 Request expected = new Request();
307 expected.setRequestId(REQUEST_ID);
308 expected.setInstanceReferences(instanceReferences);
309 expected.setRequestStatus(requestStatus);
310 expected.setRequestScope(SERVICE);
312 includeCloudRequest = false;
313 iar.setFlowStatus("Successfully completed all Building Blocks");
315 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
316 OrchestrationRequestFormat.DETAIL.toString());
318 assertThat(actual, sameBeanAs(expected));
322 public void mapRequestStatusAndExtSysErrSrcToRequestFlowStatusSuccessfulRollbackTest() throws ApiException {
323 InstanceReferences instanceReferences = new InstanceReferences();
324 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
325 RequestStatus requestStatus = new RequestStatus();
326 requestStatus.setRequestState(iar.getRequestStatus());
327 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
328 "All Rollback flows have completed successfully", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
330 Request expected = new Request();
331 expected.setRequestId(REQUEST_ID);
332 expected.setInstanceReferences(instanceReferences);
333 expected.setRequestStatus(requestStatus);
334 expected.setRequestScope(SERVICE);
336 includeCloudRequest = false;
337 iar.setFlowStatus("All Rollback flows have completed successfully");
339 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
340 OrchestrationRequestFormat.DETAIL.toString());
342 assertThat(actual, sameBeanAs(expected));
346 public void requestStatusExtSystemErrorSourceTest() {
347 RequestStatus requestStatus = new RequestStatus();
348 requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
349 assertThat(requestStatus.getExtSystemErrorSource(), is(equalTo(EXT_SYSTEM_ERROR_SOURCE)));
353 public void mapRequestStatusToRequestForFormatDetailTest() throws ApiException {
354 iar.setRequestStatus(Status.ABORTED.toString());
356 orchestrationRequests.mapRequestStatusToRequest(iar, OrchestrationRequestFormat.DETAIL.toString());
358 assertEquals(Status.ABORTED.toString(), result);
362 public void mapRequestStatusToRequestForFormatStatusDetailTest() throws ApiException {
363 iar.setRequestStatus(Status.ABORTED.toString());
364 String result = orchestrationRequests.mapRequestStatusToRequest(iar, "statusDetail");
366 assertEquals(Status.ABORTED.toString(), result);
371 public void mapRequestStatusToRequestForFormatEmptyStringTest() throws ApiException {
372 iar.setRequestStatus(Status.ABORTED.toString());
373 String result = orchestrationRequests.mapRequestStatusToRequest(iar, StringUtils.EMPTY);
375 assertEquals(Status.FAILED.toString(), result);
379 public void infraActiveRequestNullValidationExceptionTest() throws ApiException {
380 iar.setRequestId(REQUEST_ID);
381 thrown.expect(ValidateException.class);
382 thrown.expectMessage(containsString("Null response from RequestDB when searching by RequestId " + REQUEST_ID));
383 orchestrationRequests.infraActiveRequestLookup(iar.getRequestId());
387 public void isRequestProcessingDataRequiredTest() {
388 boolean required = orchestrationRequests.isRequestProcessingDataRequired("simpleNoTaskInfo");
389 assertFalse(required);