f672648a6bc68cbfeb7b69368cfae49b22c7e2ff
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.onap.so.apihandlerinfra;
22
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;
48
49 @RunWith(MockitoJUnitRunner.class)
50 public class OrchestrationRequestsUnitTest {
51     @Mock
52     private RequestsDbClient requestDbClient;
53     @Mock
54     private MsoRequest msoRequest;
55     @Mock
56     private ResponseBuilder builder;
57     @Mock
58     private Response response;
59     @Mock
60     private CamundaRequestHandler camundaRequestHandler;
61     @Rule
62     public ExpectedException thrown = ExpectedException.none();
63     @InjectMocks
64     private OrchestrationRequests orchestrationRequests;
65
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";
78
79
80     @Before
81     public void setup() {
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);
91     }
92
93     @Test
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));
102
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);
109
110         iar.setOriginalRequestId(ORIGINAL_REQUEST_ID);
111
112         Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
113                 OrchestrationRequestFormat.DETAIL.toString());
114         assertThat(result, sameBeanAs(expected));
115     }
116
117     @Test
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);
131
132         Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
133                 OrchestrationRequestFormat.DETAIL.toString());
134         assertThat(result, sameBeanAs(expected));
135     }
136
137     @Test
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));
146
147         Request expected = new Request();
148         expected.setRequestId(REQUEST_ID);
149         expected.setInstanceReferences(instanceReferences);
150         expected.setRequestStatus(requestStatus);
151         expected.setRequestScope(SERVICE);
152
153         includeCloudRequest = false;
154
155         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
156                 OrchestrationRequestFormat.DETAIL.toString());
157         assertThat(actual, sameBeanAs(expected));
158     }
159
160     @Test
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);
172
173         Request expected = new Request();
174         expected.setRequestId(REQUEST_ID);
175         expected.setInstanceReferences(instanceReferences);
176         expected.setRequestStatus(requestStatus);
177         expected.setRequestScope(SERVICE);
178
179         includeCloudRequest = false;
180
181         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
182                 OrchestrationRequestFormat.STATUSDETAIL.toString());
183         assertThat(actual, sameBeanAs(expected));
184     }
185
186     @Test
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));
195
196         Request expected = new Request();
197         expected.setRequestId(REQUEST_ID);
198         expected.setInstanceReferences(instanceReferences);
199         expected.setRequestStatus(requestStatus);
200         expected.setRequestScope(SERVICE);
201
202         includeCloudRequest = false;
203
204         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
205                 OrchestrationRequestFormat.DETAIL.toString());
206
207         assertThat(actual, sameBeanAs(expected));
208     }
209
210     @Test
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));
218
219         Request expected = new Request();
220         expected.setRequestId(REQUEST_ID);
221         expected.setInstanceReferences(instanceReferences);
222         expected.setRequestStatus(requestStatus);
223         expected.setRequestScope(SERVICE);
224
225         includeCloudRequest = false;
226         iar.setFlowStatus(null);
227
228         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
229                 OrchestrationRequestFormat.DETAIL.toString());
230
231         assertThat(actual, sameBeanAs(expected));
232     }
233
234     @Test
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));
242
243         Request expected = new Request();
244         expected.setRequestId(REQUEST_ID);
245         expected.setInstanceReferences(instanceReferences);
246         expected.setRequestStatus(requestStatus);
247         expected.setRequestScope(SERVICE);
248
249         includeCloudRequest = false;
250         iar.setFlowStatus("Successfully completed all Building Blocks");
251
252         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
253                 OrchestrationRequestFormat.DETAIL.toString());
254
255         assertThat(actual, sameBeanAs(expected));
256     }
257
258     @Test
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));
266
267         Request expected = new Request();
268         expected.setRequestId(REQUEST_ID);
269         expected.setInstanceReferences(instanceReferences);
270         expected.setRequestStatus(requestStatus);
271         expected.setRequestScope(SERVICE);
272
273         includeCloudRequest = false;
274         iar.setFlowStatus("All Rollback flows have completed successfully");
275
276         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
277                 OrchestrationRequestFormat.DETAIL.toString());
278
279         assertThat(actual, sameBeanAs(expected));
280     }
281
282     @Test
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)));
287     }
288
289     @Test
290     public void mapRequestStatusToRequestForFormatDetailTest() throws ApiException {
291         iar.setRequestStatus(Status.ABORTED.toString());
292         String result =
293                 orchestrationRequests.mapRequestStatusToRequest(iar, OrchestrationRequestFormat.DETAIL.toString());
294
295         assertEquals(Status.ABORTED.toString(), result);
296     }
297
298     @Test
299     public void mapRequestStatusToRequestForFormatStatusDetailTest() throws ApiException {
300         iar.setRequestStatus(Status.ABORTED.toString());
301         String result = orchestrationRequests.mapRequestStatusToRequest(iar, "statusDetail");
302
303         assertEquals(Status.ABORTED.toString(), result);
304     }
305
306
307     @Test
308     public void mapRequestStatusToRequestForFormatEmptyStringTest() throws ApiException {
309         iar.setRequestStatus(Status.ABORTED.toString());
310         String result = orchestrationRequests.mapRequestStatusToRequest(iar, StringUtils.EMPTY);
311
312         assertEquals(Status.FAILED.toString(), result);
313     }
314 }