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.mockito.Mockito.doReturn;
29 import javax.ws.rs.core.Response;
30 import org.apache.commons.lang.StringUtils;
31 import org.junit.Before;
32 import org.junit.Rule;
33 import org.junit.Test;
34 import org.junit.rules.ExpectedException;
35 import org.junit.runner.RunWith;
36 import org.mockito.InjectMocks;
37 import org.mockito.Mock;
38 import org.mockito.junit.MockitoJUnitRunner;
39 import org.onap.so.apihandler.common.ResponseBuilder;
40 import org.onap.so.apihandlerinfra.exceptions.ApiException;
41 import org.onap.so.constants.OrchestrationRequestFormat;
42 import org.onap.so.constants.Status;
43 import org.onap.so.db.request.beans.InfraActiveRequests;
44 import org.onap.so.db.request.client.RequestsDbClient;
45 import org.onap.so.serviceinstancebeans.InstanceReferences;
46 import org.onap.so.serviceinstancebeans.Request;
47 import org.onap.so.serviceinstancebeans.RequestStatus;
49 @RunWith(MockitoJUnitRunner.class)
50 public class OrchestrationRequestsUnitTest {
52 private RequestsDbClient requestDbClient;
54 private MsoRequest msoRequest;
56 private ResponseBuilder builder;
58 private Response response;
60 private CamundaRequestHandler camundaRequestHandler;
62 public ExpectedException thrown = ExpectedException.none();
64 private OrchestrationRequests orchestrationRequests;
66 private static final String REQUEST_ID = "7cb9aa56-dd31-41e5-828e-d93027d4ebba";
67 private static final String SERVICE_INSTANCE_ID = "7cb9aa56-dd31-41e5-828e-d93027d4ebbb";
68 private static final String ORIGINAL_REQUEST_ID = "8f2d38a6-7c20-465a-bd7e-075645f1394b";
69 private static final String SERVICE = "service";
70 private static final String EXT_SYSTEM_ERROR_SOURCE = "external system error source";
71 private static final String FLOW_STATUS = "FlowStatus";
72 private static final String RETRY_STATUS_MESSAGE = "RetryStatusMessage";
73 private static final String ROLLBACK_STATUS_MESSAGE = "RollbackStatusMessage";
74 private static final String TASK_INFORMATION = " TASK INFORMATION: Last task executed: Call SDNC";
75 private InfraActiveRequests iar;
76 boolean includeCloudRequest = false;
77 private static final String ROLLBACK_EXT_SYSTEM_ERROR_SOURCE = "SDNC";
82 iar = new InfraActiveRequests();
83 iar.setRequestScope(SERVICE);
84 iar.setRequestId(REQUEST_ID);
85 iar.setServiceInstanceId(SERVICE_INSTANCE_ID);
86 iar.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
87 iar.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
88 iar.setFlowStatus(FLOW_STATUS);
89 iar.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
90 iar.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
94 public void mapInfraActiveRequestToRequestWithOriginalRequestIdTest() throws ApiException {
95 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
96 InstanceReferences instanceReferences = new InstanceReferences();
97 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
98 RequestStatus requestStatus = new RequestStatus();
99 requestStatus.setRequestState(iar.getRequestStatus());
100 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
101 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
103 Request expected = new Request();
104 expected.setRequestId(REQUEST_ID);
105 expected.setOriginalRequestId(ORIGINAL_REQUEST_ID);
106 expected.setInstanceReferences(instanceReferences);
107 expected.setRequestStatus(requestStatus);
108 expected.setRequestScope(SERVICE);
110 iar.setOriginalRequestId(ORIGINAL_REQUEST_ID);
112 Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
113 OrchestrationRequestFormat.DETAIL.toString());
114 assertThat(result, sameBeanAs(expected));
118 public void mapInfraActiveRequestToRequestOriginalRequestIdNullTest() throws ApiException {
119 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
120 InstanceReferences instanceReferences = new InstanceReferences();
121 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
122 RequestStatus requestStatus = new RequestStatus();
123 requestStatus.setRequestState(iar.getRequestStatus());
124 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
125 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
126 Request expected = new Request();
127 expected.setRequestId(REQUEST_ID);
128 expected.setInstanceReferences(instanceReferences);
129 expected.setRequestStatus(requestStatus);
130 expected.setRequestScope(SERVICE);
132 Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
133 OrchestrationRequestFormat.DETAIL.toString());
134 assertThat(result, sameBeanAs(expected));
138 public void mapRequestStatusAndExtSysErrSrcToRequestFalseTest() throws ApiException {
139 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
140 InstanceReferences instanceReferences = new InstanceReferences();
141 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
142 RequestStatus requestStatus = new RequestStatus();
143 requestStatus.setRequestState(iar.getRequestStatus());
144 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
145 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
147 Request expected = new Request();
148 expected.setRequestId(REQUEST_ID);
149 expected.setInstanceReferences(instanceReferences);
150 expected.setRequestStatus(requestStatus);
151 expected.setRequestScope(SERVICE);
153 includeCloudRequest = false;
155 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
156 OrchestrationRequestFormat.DETAIL.toString());
157 assertThat(actual, sameBeanAs(expected));
161 public void mapRequestStatusAndExtSysErrSrcToRequestStatusDetailTest() throws ApiException {
162 doReturn(null).when(camundaRequestHandler).getTaskName(REQUEST_ID);
163 InstanceReferences instanceReferences = new InstanceReferences();
164 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
165 RequestStatus requestStatus = new RequestStatus();
166 requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
167 requestStatus.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
168 requestStatus.setRequestState(iar.getRequestStatus());
169 requestStatus.setFlowStatus(FLOW_STATUS);
170 requestStatus.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
171 requestStatus.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
173 Request expected = new Request();
174 expected.setRequestId(REQUEST_ID);
175 expected.setInstanceReferences(instanceReferences);
176 expected.setRequestStatus(requestStatus);
177 expected.setRequestScope(SERVICE);
179 includeCloudRequest = false;
181 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
182 OrchestrationRequestFormat.STATUSDETAIL.toString());
183 assertThat(actual, sameBeanAs(expected));
187 public void mapRequestStatusAndExtSysErrSrcToRequestDetailTest() throws ApiException {
188 doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
189 InstanceReferences instanceReferences = new InstanceReferences();
190 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
191 RequestStatus requestStatus = new RequestStatus();
192 requestStatus.setRequestState(iar.getRequestStatus());
193 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
194 FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
196 Request expected = new Request();
197 expected.setRequestId(REQUEST_ID);
198 expected.setInstanceReferences(instanceReferences);
199 expected.setRequestStatus(requestStatus);
200 expected.setRequestScope(SERVICE);
202 includeCloudRequest = false;
204 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
205 OrchestrationRequestFormat.DETAIL.toString());
207 assertThat(actual, sameBeanAs(expected));
211 public void mapRequestStatusAndExtSysErrSrcToRequestNoFlowStatusTest() throws ApiException {
212 InstanceReferences instanceReferences = new InstanceReferences();
213 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
214 RequestStatus requestStatus = new RequestStatus();
215 requestStatus.setRequestState(iar.getRequestStatus());
216 requestStatus.setStatusMessage(
217 String.format("RETRY STATUS: %s ROLLBACK STATUS: %s", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
219 Request expected = new Request();
220 expected.setRequestId(REQUEST_ID);
221 expected.setInstanceReferences(instanceReferences);
222 expected.setRequestStatus(requestStatus);
223 expected.setRequestScope(SERVICE);
225 includeCloudRequest = false;
226 iar.setFlowStatus(null);
228 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
229 OrchestrationRequestFormat.DETAIL.toString());
231 assertThat(actual, sameBeanAs(expected));
235 public void mapRequestStatusAndExtSysErrSrcToRequestFlowStatusSuccessfulCompletionTest() throws ApiException {
236 InstanceReferences instanceReferences = new InstanceReferences();
237 instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
238 RequestStatus requestStatus = new RequestStatus();
239 requestStatus.setRequestState(iar.getRequestStatus());
240 requestStatus.setStatusMessage(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
241 "Successfully completed all Building Blocks", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
243 Request expected = new Request();
244 expected.setRequestId(REQUEST_ID);
245 expected.setInstanceReferences(instanceReferences);
246 expected.setRequestStatus(requestStatus);
247 expected.setRequestScope(SERVICE);
249 includeCloudRequest = false;
250 iar.setFlowStatus("Successfully completed all Building Blocks");
252 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
253 OrchestrationRequestFormat.DETAIL.toString());
255 assertThat(actual, sameBeanAs(expected));
259 public void mapRequestStatusAndExtSysErrSrcToRequestFlowStatusSuccessfulRollbackTest() 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(String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s",
265 "All Rollback flows have completed successfully", 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("All Rollback flows have completed successfully");
276 Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
277 OrchestrationRequestFormat.DETAIL.toString());
279 assertThat(actual, sameBeanAs(expected));
283 public void requestStatusExtSystemErrorSourceTest() {
284 RequestStatus requestStatus = new RequestStatus();
285 requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
286 assertThat(requestStatus.getExtSystemErrorSource(), is(equalTo(EXT_SYSTEM_ERROR_SOURCE)));
290 public void mapRequestStatusToRequestForFormatDetailTest() throws ApiException {
291 iar.setRequestStatus(Status.ABORTED.toString());
293 orchestrationRequests.mapRequestStatusToRequest(iar, OrchestrationRequestFormat.DETAIL.toString());
295 assertEquals(Status.ABORTED.toString(), result);
299 public void mapRequestStatusToRequestForFormatStatusDetailTest() throws ApiException {
300 iar.setRequestStatus(Status.ABORTED.toString());
301 String result = orchestrationRequests.mapRequestStatusToRequest(iar, "statusDetail");
303 assertEquals(Status.ABORTED.toString(), result);
308 public void mapRequestStatusToRequestForFormatEmptyStringTest() throws ApiException {
309 iar.setRequestStatus(Status.ABORTED.toString());
310 String result = orchestrationRequests.mapRequestStatusToRequest(iar, StringUtils.EMPTY);
312 assertEquals(Status.FAILED.toString(), result);