627bbc631d592eb068974943ff133dc3e0d9a403
[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.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;
49
50 @RunWith(MockitoJUnitRunner.class)
51 public class OrchestrationRequestsUnitTest {
52     @Mock
53     private RequestsDbClient requestDbClient;
54     @Mock
55     private MsoRequest msoRequest;
56     @Mock
57     private ResponseBuilder builder;
58     @Mock
59     private Response response;
60     @Mock
61     private CamundaRequestHandler camundaRequestHandler;
62     @Rule
63     public ExpectedException thrown = ExpectedException.none();
64     @InjectMocks
65     private OrchestrationRequests orchestrationRequests;
66
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";
79
80
81     @Before
82     public void setup() {
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);
92     }
93
94     @Test
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));
103
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);
110
111         iar.setOriginalRequestId(ORIGINAL_REQUEST_ID);
112
113         Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
114                 OrchestrationRequestFormat.DETAIL.toString());
115         assertThat(result, sameBeanAs(expected));
116     }
117
118     @Test
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);
132
133         Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
134                 OrchestrationRequestFormat.DETAIL.toString());
135         assertThat(result, sameBeanAs(expected));
136     }
137
138     @Test
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));
147
148         Request expected = new Request();
149         expected.setRequestId(REQUEST_ID);
150         expected.setInstanceReferences(instanceReferences);
151         expected.setRequestStatus(requestStatus);
152         expected.setRequestScope(SERVICE);
153
154         includeCloudRequest = false;
155
156         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
157                 OrchestrationRequestFormat.DETAIL.toString());
158         assertThat(actual, sameBeanAs(expected));
159     }
160
161     @Test
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);
173
174         Request expected = new Request();
175         expected.setRequestId(REQUEST_ID);
176         expected.setInstanceReferences(instanceReferences);
177         expected.setRequestStatus(requestStatus);
178         expected.setRequestScope(SERVICE);
179
180         includeCloudRequest = false;
181
182         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
183                 OrchestrationRequestFormat.STATUSDETAIL.toString());
184         assertThat(actual, sameBeanAs(expected));
185     }
186
187     @Test
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));
196
197         Request expected = new Request();
198         expected.setRequestId(REQUEST_ID);
199         expected.setInstanceReferences(instanceReferences);
200         expected.setRequestStatus(requestStatus);
201         expected.setRequestScope(SERVICE);
202
203         includeCloudRequest = false;
204
205         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
206                 OrchestrationRequestFormat.DETAIL.toString());
207
208         assertThat(actual, sameBeanAs(expected));
209     }
210
211     @Test
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));
219
220         Request expected = new Request();
221         expected.setRequestId(REQUEST_ID);
222         expected.setInstanceReferences(instanceReferences);
223         expected.setRequestStatus(requestStatus);
224         expected.setRequestScope(SERVICE);
225
226         includeCloudRequest = false;
227         iar.setFlowStatus(null);
228
229         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
230                 OrchestrationRequestFormat.DETAIL.toString());
231
232         assertThat(actual, sameBeanAs(expected));
233     }
234
235     @Test
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");
242
243         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
244                 OrchestrationRequestFormat.DETAIL.toString());
245
246         assertTrue(actual.getRequestStatus().getStatusMessage()
247                 .contains("Error Source: " + ROLLBACK_EXT_SYSTEM_ERROR_SOURCE));
248     }
249
250     @Test
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));
258
259         Request expected = new Request();
260         expected.setRequestId(REQUEST_ID);
261         expected.setInstanceReferences(instanceReferences);
262         expected.setRequestStatus(requestStatus);
263         expected.setRequestScope(SERVICE);
264
265         includeCloudRequest = false;
266         iar.setFlowStatus("Successfully completed all Building Blocks");
267
268         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
269                 OrchestrationRequestFormat.DETAIL.toString());
270
271         assertThat(actual, sameBeanAs(expected));
272     }
273
274     @Test
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));
282
283         Request expected = new Request();
284         expected.setRequestId(REQUEST_ID);
285         expected.setInstanceReferences(instanceReferences);
286         expected.setRequestStatus(requestStatus);
287         expected.setRequestScope(SERVICE);
288
289         includeCloudRequest = false;
290         iar.setFlowStatus("All Rollback flows have completed successfully");
291
292         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
293                 OrchestrationRequestFormat.DETAIL.toString());
294
295         assertThat(actual, sameBeanAs(expected));
296     }
297
298     @Test
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)));
303     }
304
305     @Test
306     public void mapRequestStatusToRequestForFormatDetailTest() throws ApiException {
307         iar.setRequestStatus(Status.ABORTED.toString());
308         String result =
309                 orchestrationRequests.mapRequestStatusToRequest(iar, OrchestrationRequestFormat.DETAIL.toString());
310
311         assertEquals(Status.ABORTED.toString(), result);
312     }
313
314     @Test
315     public void mapRequestStatusToRequestForFormatStatusDetailTest() throws ApiException {
316         iar.setRequestStatus(Status.ABORTED.toString());
317         String result = orchestrationRequests.mapRequestStatusToRequest(iar, "statusDetail");
318
319         assertEquals(Status.ABORTED.toString(), result);
320     }
321
322
323     @Test
324     public void mapRequestStatusToRequestForFormatEmptyStringTest() throws ApiException {
325         iar.setRequestStatus(Status.ABORTED.toString());
326         String result = orchestrationRequests.mapRequestStatusToRequest(iar, StringUtils.EMPTY);
327
328         assertEquals(Status.FAILED.toString(), result);
329     }
330 }