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.mockito.Mockito.doReturn;
31 import javax.ws.rs.core.Response;
32 import org.apache.commons.lang.StringUtils;
33 import org.junit.Before;
34 import org.junit.Rule;
35 import org.junit.Test;
36 import org.junit.rules.ExpectedException;
37 import org.junit.runner.RunWith;
38 import org.mockito.InjectMocks;
39 import org.mockito.Mock;
40 import org.mockito.junit.MockitoJUnitRunner;
41 import org.onap.so.apihandler.common.ResponseBuilder;
42 import org.onap.so.apihandlerinfra.exceptions.ApiException;
43 import org.onap.so.apihandlerinfra.exceptions.ValidateException;
44 import org.onap.so.constants.OrchestrationRequestFormat;
45 import org.onap.so.constants.Status;
46 import org.onap.so.db.request.beans.InfraActiveRequests;
47 import org.onap.so.db.request.client.RequestsDbClient;
48 import org.onap.so.serviceinstancebeans.InstanceReferences;
49 import org.onap.so.serviceinstancebeans.Request;
50 import org.onap.so.serviceinstancebeans.RequestStatus;
52 @RunWith(MockitoJUnitRunner.class)
53 public class OrchestrationRequestsUnitTest {
55 private RequestsDbClient requestDbClient;
57 private MsoRequest msoRequest;
59 private ResponseBuilder builder;
61 private Response response;
63 private CamundaRequestHandler camundaRequestHandler;
65 public ExpectedException thrown = ExpectedException.none();
67 private OrchestrationRequests orchestrationRequests;
69 private static final String REQUEST_ID = "7cb9aa56-dd31-41e5-828e-d93027d4ebba";
70 private static final String SERVICE_INSTANCE_ID = "7cb9aa56-dd31-41e5-828e-d93027d4ebbb";
71 private static final String ORIGINAL_REQUEST_ID = "8f2d38a6-7c20-465a-bd7e-075645f1394b";
72 private static final String SERVICE = "service";
73 private static final String EXT_SYSTEM_ERROR_SOURCE = "external system error source";
74 private static final String FLOW_STATUS = "FlowStatus";
75 private static final String RETRY_STATUS_MESSAGE = "RetryStatusMessage";
76 private static final String ROLLBACK_STATUS_MESSAGE = "RollbackStatusMessage";
77 private static final String TASK_INFORMATION = " TASK INFORMATION: Last task executed: Call SDNC";
78 private InfraActiveRequests iar;
79 boolean includeCloudRequest = false;
80 private static final String ROLLBACK_EXT_SYSTEM_ERROR_SOURCE = "SDNC";
85 iar = new InfraActiveRequests();
86 iar.setRequestScope(SERVICE);
87 iar.setRequestId(REQUEST_ID);
88 iar.setServiceInstanceId(SERVICE_INSTANCE_ID);
89 iar.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
90 iar.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
91 iar.setFlowStatus(FLOW_STATUS);
92 iar.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
93 iar.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
97 public void mapInfraActiveRequestToRequestWithOriginalRequestIdTest() throws ApiException {
98 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
99 InstanceReferences instanceReferences = new InstanceReferences();
100 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
101 RequestStatus requestStatus = new RequestStatus();
102 requestStatus.setRequestState(iar.getRequestStatus());
103 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
104 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
106 Request expected = new Request();
107 expected.setRequestId(REQUEST_ID);
108 expected.setOriginalRequestId(ORIGINAL_REQUEST_ID);
109 expected.setInstanceReferences(instanceReferences);
110 expected.setRequestStatus(requestStatus);
111 expected.setRequestScope(SERVICE);
113 iar.setOriginalRequestId(ORIGINAL_REQUEST_ID);
115 Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
116 OrchestrationRequestFormat.DETAIL.toString());
117 assertThat(result, sameBeanAs(expected));
121 public void mapInfraActiveRequestToRequestOriginalRequestIdNullTest() throws ApiException {
122 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
123 InstanceReferences instanceReferences = new InstanceReferences();
124 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
125 RequestStatus requestStatus = new RequestStatus();
126 requestStatus.setRequestState(iar.getRequestStatus());
127 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
128 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
129 Request expected = new Request();
130 expected.setRequestId(REQUEST_ID);
131 expected.setInstanceReferences(instanceReferences);
132 expected.setRequestStatus(requestStatus);
133 expected.setRequestScope(SERVICE);
135 Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
136 OrchestrationRequestFormat.DETAIL.toString());
137 assertThat(result, sameBeanAs(expected));
141 public void mapRequestStatusAndExtSysErrSrcToRequestFalseTest() throws ApiException {
142 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
143 InstanceReferences instanceReferences = new InstanceReferences();
144 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
145 RequestStatus requestStatus = new RequestStatus();
146 requestStatus.setRequestState(iar.getRequestStatus());
147 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
148 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
150 Request expected = new Request();
151 expected.setRequestId(REQUEST_ID);
152 expected.setInstanceReferences(instanceReferences);
153 expected.setRequestStatus(requestStatus);
154 expected.setRequestScope(SERVICE);
156 includeCloudRequest = false;
158 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
159 OrchestrationRequestFormat.DETAIL.toString());
160 assertThat(actual, sameBeanAs(expected));
164 public void mapRequestStatusAndExtSysErrSrcToRequestStatusDetailTest() throws ApiException {
165 doReturn(null).when(camundaRequestHandler).getTaskName(REQUEST_ID);
166 InstanceReferences instanceReferences = new InstanceReferences();
167 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
168 RequestStatus requestStatus = new RequestStatus();
169 requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
170 requestStatus.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
171 requestStatus.setRequestState(iar.getRequestStatus());
172 requestStatus.setFlowStatus(FLOW_STATUS);
173 requestStatus.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
174 requestStatus.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
176 Request expected = new Request();
177 expected.setRequestId(REQUEST_ID);
178 expected.setInstanceReferences(instanceReferences);
179 expected.setRequestStatus(requestStatus);
180 expected.setRequestScope(SERVICE);
182 includeCloudRequest = false;
184 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
185 OrchestrationRequestFormat.STATUSDETAIL.toString());
186 assertThat(actual, sameBeanAs(expected));
190 public void mapRequestStatusAndExtSysErrSrcToRequestDetailTest() throws ApiException {
191 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
192 InstanceReferences instanceReferences = new InstanceReferences();
193 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
194 RequestStatus requestStatus = new RequestStatus();
195 requestStatus.setRequestState(iar.getRequestStatus());
196 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
197 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
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.DETAIL.toString());
210 assertThat(actual, sameBeanAs(expected));
214 public void mapRequestStatusAndExtSysErrSrcToRequestNoFlowStatusTest() throws ApiException {
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 String.format("RETRY STATUS: %s ROLLBACK STATUS: %s", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
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;
229 iar.setFlowStatus(null);
231 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
232 OrchestrationRequestFormat.DETAIL.toString());
234 assertThat(actual, sameBeanAs(expected));
238 public void mapRequestStatusAndExtSysErrSrcToRequestErrorMessageTest() throws ApiException {
239 InstanceReferences instanceReferences = new InstanceReferences();
240 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
241 iar.setExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
242 iar.setFlowStatus(null);
243 iar.setStatusMessage("Error retrieving cloud region from AAI");
245 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
246 OrchestrationRequestFormat.DETAIL.toString());
248 assertTrue(actual.getRequestStatus().getStatusMessage()
249 .contains("Error Source: " + ROLLBACK_EXT_SYSTEM_ERROR_SOURCE));
253 public void mapRequestStatusAndExtSysErrSrcToRequestFlowStatusSuccessfulCompletionTest() throws ApiException {
254 InstanceReferences instanceReferences = new InstanceReferences();
255 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
256 RequestStatus requestStatus = new RequestStatus();
257 requestStatus.setRequestState(iar.getRequestStatus());
258 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
259 "Successfully completed all Building Blocks", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
261 Request expected = new Request();
262 expected.setRequestId(REQUEST_ID);
263 expected.setInstanceReferences(instanceReferences);
264 expected.setRequestStatus(requestStatus);
265 expected.setRequestScope(SERVICE);
267 includeCloudRequest = false;
268 iar.setFlowStatus("Successfully completed all Building Blocks");
270 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
271 OrchestrationRequestFormat.DETAIL.toString());
273 assertThat(actual, sameBeanAs(expected));
277 public void mapRequestStatusAndExtSysErrSrcToRequestFlowStatusSuccessfulRollbackTest() throws ApiException {
278 InstanceReferences instanceReferences = new InstanceReferences();
279 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
280 RequestStatus requestStatus = new RequestStatus();
281 requestStatus.setRequestState(iar.getRequestStatus());
282 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
283 "All Rollback flows have completed successfully", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
285 Request expected = new Request();
286 expected.setRequestId(REQUEST_ID);
287 expected.setInstanceReferences(instanceReferences);
288 expected.setRequestStatus(requestStatus);
289 expected.setRequestScope(SERVICE);
291 includeCloudRequest = false;
292 iar.setFlowStatus("All Rollback flows have completed successfully");
294 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
295 OrchestrationRequestFormat.DETAIL.toString());
297 assertThat(actual, sameBeanAs(expected));
301 public void requestStatusExtSystemErrorSourceTest() {
302 RequestStatus requestStatus = new RequestStatus();
303 requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
304 assertThat(requestStatus.getExtSystemErrorSource(), is(equalTo(EXT_SYSTEM_ERROR_SOURCE)));
308 public void mapRequestStatusToRequestForFormatDetailTest() throws ApiException {
309 iar.setRequestStatus(Status.ABORTED.toString());
311 orchestrationRequests.mapRequestStatusToRequest(iar, OrchestrationRequestFormat.DETAIL.toString());
313 assertEquals(Status.ABORTED.toString(), result);
317 public void mapRequestStatusToRequestForFormatStatusDetailTest() throws ApiException {
318 iar.setRequestStatus(Status.ABORTED.toString());
319 String result = orchestrationRequests.mapRequestStatusToRequest(iar, "statusDetail");
321 assertEquals(Status.ABORTED.toString(), result);
326 public void mapRequestStatusToRequestForFormatEmptyStringTest() throws ApiException {
327 iar.setRequestStatus(Status.ABORTED.toString());
328 String result = orchestrationRequests.mapRequestStatusToRequest(iar, StringUtils.EMPTY);
330 assertEquals(Status.FAILED.toString(), result);
334 public void infraActiveRequestNullValidationExceptionTest() throws ApiException {
335 iar.setRequestId(REQUEST_ID);
336 thrown.expect(ValidateException.class);
337 thrown.expectMessage(containsString("Null response from RequestDB when searching by RequestId " + REQUEST_ID));
338 orchestrationRequests.infraActiveRequestLookup(iar.getRequestId());