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.equalTo;
25 import static org.hamcrest.CoreMatchers.is;
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertThat;
28 import static org.junit.Assert.assertTrue;
29 import static org.mockito.Mockito.doReturn;
30 import javax.ws.rs.core.Response;
31 import org.apache.commons.lang.StringUtils;
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.junit.MockitoJUnitRunner;
40 import org.onap.so.apihandler.common.ResponseBuilder;
41 import org.onap.so.apihandlerinfra.exceptions.ApiException;
42 import org.onap.so.constants.OrchestrationRequestFormat;
43 import org.onap.so.constants.Status;
44 import org.onap.so.db.request.beans.InfraActiveRequests;
45 import org.onap.so.db.request.client.RequestsDbClient;
46 import org.onap.so.serviceinstancebeans.InstanceReferences;
47 import org.onap.so.serviceinstancebeans.Request;
48 import org.onap.so.serviceinstancebeans.RequestStatus;
50 @RunWith(MockitoJUnitRunner.class)
51 public class OrchestrationRequestsUnitTest {
53 private RequestsDbClient requestDbClient;
55 private MsoRequest msoRequest;
57 private ResponseBuilder builder;
59 private Response response;
61 private CamundaRequestHandler camundaRequestHandler;
63 public ExpectedException thrown = ExpectedException.none();
65 private OrchestrationRequests orchestrationRequests;
67 private static final String REQUEST_ID = "7cb9aa56-dd31-41e5-828e-d93027d4ebba";
68 private static final String SERVICE_INSTANCE_ID = "7cb9aa56-dd31-41e5-828e-d93027d4ebbb";
69 private static final String ORIGINAL_REQUEST_ID = "8f2d38a6-7c20-465a-bd7e-075645f1394b";
70 private static final String SERVICE = "service";
71 private static final String EXT_SYSTEM_ERROR_SOURCE = "external system error source";
72 private static final String FLOW_STATUS = "FlowStatus";
73 private static final String RETRY_STATUS_MESSAGE = "RetryStatusMessage";
74 private static final String ROLLBACK_STATUS_MESSAGE = "RollbackStatusMessage";
75 private static final String TASK_INFORMATION = " TASK INFORMATION: Last task executed: Call SDNC";
76 private InfraActiveRequests iar;
77 boolean includeCloudRequest = false;
78 private static final String ROLLBACK_EXT_SYSTEM_ERROR_SOURCE = "SDNC";
83 iar = new InfraActiveRequests();
84 iar.setRequestScope(SERVICE);
85 iar.setRequestId(REQUEST_ID);
86 iar.setServiceInstanceId(SERVICE_INSTANCE_ID);
87 iar.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
88 iar.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
89 iar.setFlowStatus(FLOW_STATUS);
90 iar.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
91 iar.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
95 public void mapInfraActiveRequestToRequestWithOriginalRequestIdTest() throws ApiException {
96 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
97 InstanceReferences instanceReferences = new InstanceReferences();
98 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
99 RequestStatus requestStatus = new RequestStatus();
100 requestStatus.setRequestState(iar.getRequestStatus());
101 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
102 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
104 Request expected = new Request();
105 expected.setRequestId(REQUEST_ID);
106 expected.setOriginalRequestId(ORIGINAL_REQUEST_ID);
107 expected.setInstanceReferences(instanceReferences);
108 expected.setRequestStatus(requestStatus);
109 expected.setRequestScope(SERVICE);
111 iar.setOriginalRequestId(ORIGINAL_REQUEST_ID);
113 Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
114 OrchestrationRequestFormat.DETAIL.toString());
115 assertThat(result, sameBeanAs(expected));
119 public void mapInfraActiveRequestToRequestOriginalRequestIdNullTest() throws ApiException {
120 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
121 InstanceReferences instanceReferences = new InstanceReferences();
122 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
123 RequestStatus requestStatus = new RequestStatus();
124 requestStatus.setRequestState(iar.getRequestStatus());
125 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
126 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
127 Request expected = new Request();
128 expected.setRequestId(REQUEST_ID);
129 expected.setInstanceReferences(instanceReferences);
130 expected.setRequestStatus(requestStatus);
131 expected.setRequestScope(SERVICE);
133 Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
134 OrchestrationRequestFormat.DETAIL.toString());
135 assertThat(result, sameBeanAs(expected));
139 public void mapRequestStatusAndExtSysErrSrcToRequestFalseTest() throws ApiException {
140 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
141 InstanceReferences instanceReferences = new InstanceReferences();
142 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
143 RequestStatus requestStatus = new RequestStatus();
144 requestStatus.setRequestState(iar.getRequestStatus());
145 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
146 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
148 Request expected = new Request();
149 expected.setRequestId(REQUEST_ID);
150 expected.setInstanceReferences(instanceReferences);
151 expected.setRequestStatus(requestStatus);
152 expected.setRequestScope(SERVICE);
154 includeCloudRequest = false;
156 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
157 OrchestrationRequestFormat.DETAIL.toString());
158 assertThat(actual, sameBeanAs(expected));
162 public void mapRequestStatusAndExtSysErrSrcToRequestStatusDetailTest() throws ApiException {
163 doReturn(null).when(camundaRequestHandler).getTaskName(REQUEST_ID);
164 InstanceReferences instanceReferences = new InstanceReferences();
165 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
166 RequestStatus requestStatus = new RequestStatus();
167 requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
168 requestStatus.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
169 requestStatus.setRequestState(iar.getRequestStatus());
170 requestStatus.setFlowStatus(FLOW_STATUS);
171 requestStatus.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
172 requestStatus.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
174 Request expected = new Request();
175 expected.setRequestId(REQUEST_ID);
176 expected.setInstanceReferences(instanceReferences);
177 expected.setRequestStatus(requestStatus);
178 expected.setRequestScope(SERVICE);
180 includeCloudRequest = false;
182 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
183 OrchestrationRequestFormat.STATUSDETAIL.toString());
184 assertThat(actual, sameBeanAs(expected));
188 public void mapRequestStatusAndExtSysErrSrcToRequestDetailTest() throws ApiException {
189 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
190 InstanceReferences instanceReferences = new InstanceReferences();
191 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
192 RequestStatus requestStatus = new RequestStatus();
193 requestStatus.setRequestState(iar.getRequestStatus());
194 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
195 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
197 Request expected = new Request();
198 expected.setRequestId(REQUEST_ID);
199 expected.setInstanceReferences(instanceReferences);
200 expected.setRequestStatus(requestStatus);
201 expected.setRequestScope(SERVICE);
203 includeCloudRequest = false;
205 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
206 OrchestrationRequestFormat.DETAIL.toString());
208 assertThat(actual, sameBeanAs(expected));
212 public void mapRequestStatusAndExtSysErrSrcToRequestNoFlowStatusTest() throws ApiException {
213 InstanceReferences instanceReferences = new InstanceReferences();
214 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
215 RequestStatus requestStatus = new RequestStatus();
216 requestStatus.setRequestState(iar.getRequestStatus());
217 requestStatus.setStatusMessage(
218 String.format("RETRY STATUS: %s ROLLBACK STATUS: %s", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
220 Request expected = new Request();
221 expected.setRequestId(REQUEST_ID);
222 expected.setInstanceReferences(instanceReferences);
223 expected.setRequestStatus(requestStatus);
224 expected.setRequestScope(SERVICE);
226 includeCloudRequest = false;
227 iar.setFlowStatus(null);
229 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
230 OrchestrationRequestFormat.DETAIL.toString());
232 assertThat(actual, sameBeanAs(expected));
236 public void mapRequestStatusAndExtSysErrSrcToRequestErrorMessageTest() throws ApiException {
237 InstanceReferences instanceReferences = new InstanceReferences();
238 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
239 iar.setExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
240 iar.setFlowStatus(null);
241 iar.setStatusMessage("Error retrieving cloud region from AAI");
243 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
244 OrchestrationRequestFormat.DETAIL.toString());
246 assertTrue(actual.getRequestStatus().getStatusMessage()
247 .contains("Error Source: " + ROLLBACK_EXT_SYSTEM_ERROR_SOURCE));
251 public void mapRequestStatusAndExtSysErrSrcToRequestFlowStatusSuccessfulCompletionTest() throws ApiException {
252 InstanceReferences instanceReferences = new InstanceReferences();
253 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
254 RequestStatus requestStatus = new RequestStatus();
255 requestStatus.setRequestState(iar.getRequestStatus());
256 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
257 "Successfully completed all Building Blocks", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
259 Request expected = new Request();
260 expected.setRequestId(REQUEST_ID);
261 expected.setInstanceReferences(instanceReferences);
262 expected.setRequestStatus(requestStatus);
263 expected.setRequestScope(SERVICE);
265 includeCloudRequest = false;
266 iar.setFlowStatus("Successfully completed all Building Blocks");
268 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
269 OrchestrationRequestFormat.DETAIL.toString());
271 assertThat(actual, sameBeanAs(expected));
275 public void mapRequestStatusAndExtSysErrSrcToRequestFlowStatusSuccessfulRollbackTest() throws ApiException {
276 InstanceReferences instanceReferences = new InstanceReferences();
277 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
278 RequestStatus requestStatus = new RequestStatus();
279 requestStatus.setRequestState(iar.getRequestStatus());
280 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
281 "All Rollback flows have completed successfully", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
283 Request expected = new Request();
284 expected.setRequestId(REQUEST_ID);
285 expected.setInstanceReferences(instanceReferences);
286 expected.setRequestStatus(requestStatus);
287 expected.setRequestScope(SERVICE);
289 includeCloudRequest = false;
290 iar.setFlowStatus("All Rollback flows have completed successfully");
292 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
293 OrchestrationRequestFormat.DETAIL.toString());
295 assertThat(actual, sameBeanAs(expected));
299 public void requestStatusExtSystemErrorSourceTest() {
300 RequestStatus requestStatus = new RequestStatus();
301 requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
302 assertThat(requestStatus.getExtSystemErrorSource(), is(equalTo(EXT_SYSTEM_ERROR_SOURCE)));
306 public void mapRequestStatusToRequestForFormatDetailTest() throws ApiException {
307 iar.setRequestStatus(Status.ABORTED.toString());
309 orchestrationRequests.mapRequestStatusToRequest(iar, OrchestrationRequestFormat.DETAIL.toString());
311 assertEquals(Status.ABORTED.toString(), result);
315 public void mapRequestStatusToRequestForFormatStatusDetailTest() throws ApiException {
316 iar.setRequestStatus(Status.ABORTED.toString());
317 String result = orchestrationRequests.mapRequestStatusToRequest(iar, "statusDetail");
319 assertEquals(Status.ABORTED.toString(), result);
324 public void mapRequestStatusToRequestForFormatEmptyStringTest() throws ApiException {
325 iar.setRequestStatus(Status.ABORTED.toString());
326 String result = orchestrationRequests.mapRequestStatusToRequest(iar, StringUtils.EMPTY);
328 assertEquals(Status.FAILED.toString(), result);