fcca3a6abb64881269fd456327294a19777c68fa
[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.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.assertFalse;
29 import static org.junit.Assert.assertThat;
30 import static org.junit.Assert.assertTrue;
31 import static org.mockito.Mockito.doReturn;
32 import static org.mockito.Mockito.when;
33 import java.sql.Timestamp;
34 import java.text.SimpleDateFormat;
35 import java.time.Instant;
36 import java.time.temporal.ChronoUnit;
37 import javax.ws.rs.core.Response;
38 import org.apache.commons.lang.StringUtils;
39 import org.junit.Before;
40 import org.junit.Rule;
41 import org.junit.Test;
42 import org.junit.rules.ExpectedException;
43 import org.junit.runner.RunWith;
44 import org.mockito.InjectMocks;
45 import org.mockito.Mock;
46 import org.mockito.junit.MockitoJUnitRunner;
47 import org.onap.so.apihandler.common.ResponseBuilder;
48 import org.onap.so.apihandlerinfra.exceptions.ApiException;
49 import org.onap.so.apihandlerinfra.exceptions.ValidateException;
50 import org.onap.so.constants.OrchestrationRequestFormat;
51 import org.onap.so.constants.Status;
52 import org.onap.so.db.request.beans.InfraActiveRequests;
53 import org.onap.so.db.request.client.RequestsDbClient;
54 import org.onap.so.serviceinstancebeans.InstanceReferences;
55 import org.onap.so.serviceinstancebeans.Request;
56 import org.onap.so.serviceinstancebeans.RequestStatus;
57 import org.springframework.core.env.Environment;
58
59 @RunWith(MockitoJUnitRunner.class)
60 public class OrchestrationRequestsUnitTest {
61     @Mock
62     private RequestsDbClient requestDbClient;
63     @Mock
64     private MsoRequest msoRequest;
65     @Mock
66     private ResponseBuilder builder;
67     @Mock
68     private Response response;
69     @Mock
70     private CamundaRequestHandler camundaRequestHandler;
71     @Mock
72     private Environment env;
73     @Rule
74     public ExpectedException thrown = ExpectedException.none();
75     @InjectMocks
76     private OrchestrationRequests orchestrationRequests;
77
78     private static final String REQUEST_ID = "7cb9aa56-dd31-41e5-828e-d93027d4ebba";
79     private static final String SERVICE_INSTANCE_ID = "7cb9aa56-dd31-41e5-828e-d93027d4ebbb";
80     private static final String ORIGINAL_REQUEST_ID = "8f2d38a6-7c20-465a-bd7e-075645f1394b";
81     private static final String SERVICE = "service";
82     private static final String EXT_SYSTEM_ERROR_SOURCE = "external system error source";
83     private static final String FLOW_STATUS = "FlowStatus";
84     private static final String RETRY_STATUS_MESSAGE = "RetryStatusMessage";
85     private static final String ROLLBACK_STATUS_MESSAGE = "RollbackStatusMessage";
86     private static final String TASK_INFORMATION = " TASK INFORMATION: Last task executed: Call SDNC";
87     private static final String WORKFLOW_NAME = "testWorkflowName";
88     private static final String OPERATION_NAME = "testOperationName";
89     private static final String REQUEST_ACTION = "createInstance";
90     private InfraActiveRequests iar;
91     boolean includeCloudRequest = false;
92     private static final String ROLLBACK_EXT_SYSTEM_ERROR_SOURCE = "SDNC";
93     private Timestamp startTime = new Timestamp(System.currentTimeMillis());
94
95
96     @Before
97     public void setup() {
98         iar = new InfraActiveRequests();
99         iar.setRequestScope(SERVICE);
100         iar.setRequestId(REQUEST_ID);
101         iar.setServiceInstanceId(SERVICE_INSTANCE_ID);
102         iar.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
103         iar.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
104         iar.setFlowStatus(FLOW_STATUS);
105         iar.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
106         iar.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
107         iar.setResourceStatusMessage("The vf module already exist");
108         iar.setStartTime(startTime);
109     }
110
111     @Test
112     public void mapInfraActiveRequestToRequestWithOriginalRequestIdTest() throws ApiException {
113         doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
114         InstanceReferences instanceReferences = new InstanceReferences();
115         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
116         RequestStatus requestStatus = new RequestStatus();
117         requestStatus.setRequestState(iar.getRequestStatus());
118         requestStatus.setStatusMessage(
119                 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
120                         FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
121                         "The vf module already exist"));
122
123         Request expected = new Request();
124         expected.setRequestId(REQUEST_ID);
125         expected.setOriginalRequestId(ORIGINAL_REQUEST_ID);
126         expected.setInstanceReferences(instanceReferences);
127         expected.setRequestStatus(requestStatus);
128         expected.setRequestScope(SERVICE);
129         expected.setStartTime(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(startTime) + " GMT");
130
131         iar.setOriginalRequestId(ORIGINAL_REQUEST_ID);
132
133         Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
134                 OrchestrationRequestFormat.DETAIL.toString(), "v7");
135         assertThat(result, sameBeanAs(expected));
136     }
137
138     @Test
139     public void mapInfraActiveRequestToRequestOriginalRequestIdNullTest() 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(
146                 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
147                         FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
148                         "The vf module already exist"));
149
150         Request expected = new Request();
151         expected.setRequestId(REQUEST_ID);
152         expected.setInstanceReferences(instanceReferences);
153         expected.setRequestStatus(requestStatus);
154         expected.setRequestScope(SERVICE);
155         expected.setStartTime(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(startTime) + " GMT");
156
157         iar.setWorkflowName(WORKFLOW_NAME);
158         iar.setOperationName(OPERATION_NAME);
159
160         Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
161                 OrchestrationRequestFormat.DETAIL.toString(), "v7");
162         assertThat(result, sameBeanAs(expected));
163     }
164
165     @Test
166     public void mapInfraActiveRequestToRequestWithWorkflowNameAndOperationNameTest() throws ApiException {
167         doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
168         InstanceReferences instanceReferences = new InstanceReferences();
169         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
170         RequestStatus requestStatus = new RequestStatus();
171         requestStatus.setRequestState(iar.getRequestStatus());
172         requestStatus.setStatusMessage(
173                 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
174                         FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
175                         "The vf module already exist"));
176
177         Request expected = new Request();
178         expected.setRequestId(REQUEST_ID);
179         expected.setOriginalRequestId(ORIGINAL_REQUEST_ID);
180         expected.setInstanceReferences(instanceReferences);
181         expected.setRequestStatus(requestStatus);
182         expected.setRequestScope(SERVICE);
183         expected.setStartTime(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(startTime) + " GMT");
184         expected.setWorkflowName(WORKFLOW_NAME);
185         expected.setOperationName(OPERATION_NAME);
186
187         iar.setOriginalRequestId(ORIGINAL_REQUEST_ID);
188         iar.setWorkflowName(WORKFLOW_NAME);
189         iar.setOperationName(OPERATION_NAME);
190
191         Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
192                 OrchestrationRequestFormat.DETAIL.toString(), "v8");
193         assertThat(result, sameBeanAs(expected));
194     }
195
196     @Test
197     public void mapInfraActiveRequestToRequestWithNoWorkflowNameAndNoOperationNameTest() throws ApiException {
198         doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
199         InstanceReferences instanceReferences = new InstanceReferences();
200         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
201         RequestStatus requestStatus = new RequestStatus();
202         requestStatus.setRequestState(iar.getRequestStatus());
203         requestStatus.setStatusMessage(
204                 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
205                         FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
206                         "The vf module already exist"));
207
208         Request expected = new Request();
209         expected.setRequestId(REQUEST_ID);
210         expected.setOriginalRequestId(ORIGINAL_REQUEST_ID);
211         expected.setInstanceReferences(instanceReferences);
212         expected.setRequestStatus(requestStatus);
213         expected.setRequestScope(SERVICE);
214         expected.setStartTime(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(startTime) + " GMT");
215
216
217         expected.setWorkflowName(REQUEST_ACTION);
218         expected.setRequestType(REQUEST_ACTION);
219
220         iar.setOriginalRequestId(ORIGINAL_REQUEST_ID);
221         iar.setRequestAction(REQUEST_ACTION);
222         iar.setWorkflowName(null);
223         iar.setOperationName(null);
224
225         Request result = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
226                 OrchestrationRequestFormat.DETAIL.toString(), "v8");
227         assertThat(result, sameBeanAs(expected));
228     }
229
230     @Test
231     public void mapRequestStatusAndExtSysErrSrcToRequestFalseTest() throws ApiException {
232         doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
233         InstanceReferences instanceReferences = new InstanceReferences();
234         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
235         RequestStatus requestStatus = new RequestStatus();
236         requestStatus.setRequestState(iar.getRequestStatus());
237         requestStatus.setStatusMessage(
238                 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
239                         FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
240                         "The vf module already exist"));
241
242         Request expected = new Request();
243         expected.setRequestId(REQUEST_ID);
244         expected.setInstanceReferences(instanceReferences);
245         expected.setRequestStatus(requestStatus);
246         expected.setRequestScope(SERVICE);
247         expected.setStartTime(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(startTime) + " GMT");
248
249         includeCloudRequest = false;
250
251         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
252                 OrchestrationRequestFormat.DETAIL.toString(), "v7");
253         assertThat(actual, sameBeanAs(expected));
254     }
255
256     @Test
257     public void mapRequestStatusAndExtSysErrSrcToRequestStatusDetailTest() throws ApiException {
258         doReturn(null).when(camundaRequestHandler).getTaskName(REQUEST_ID);
259         InstanceReferences instanceReferences = new InstanceReferences();
260         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
261         RequestStatus requestStatus = new RequestStatus();
262         requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
263         requestStatus.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
264         requestStatus.setRequestState(iar.getRequestStatus());
265         requestStatus.setFlowStatus(FLOW_STATUS);
266         requestStatus.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
267         requestStatus.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
268
269         Request expected = new Request();
270         expected.setRequestId(REQUEST_ID);
271         expected.setInstanceReferences(instanceReferences);
272         expected.setRequestStatus(requestStatus);
273         expected.setRequestScope(SERVICE);
274         expected.setStartTime(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(startTime) + " GMT");
275
276         includeCloudRequest = false;
277
278         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
279                 OrchestrationRequestFormat.STATUSDETAIL.toString(), "v7");
280         assertThat(actual, sameBeanAs(expected));
281     }
282
283     @Test
284     public void mapRequestStatusAndExtSysErrSrcToRequestStatusDetailV8Test() throws ApiException {
285         doReturn(null).when(camundaRequestHandler).getTaskName(REQUEST_ID);
286         InstanceReferences instanceReferences = new InstanceReferences();
287         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
288         RequestStatus requestStatus = new RequestStatus();
289         requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
290         requestStatus.setRollbackExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
291         requestStatus.setRequestState(iar.getRequestStatus());
292         requestStatus.setFlowStatus(FLOW_STATUS);
293         requestStatus.setRollbackStatusMessage(ROLLBACK_STATUS_MESSAGE);
294         requestStatus.setRetryStatusMessage(RETRY_STATUS_MESSAGE);
295         requestStatus.setResourceStatusMessage("The vf module already exist");
296
297         Request expected = new Request();
298         expected.setRequestId(REQUEST_ID);
299         expected.setInstanceReferences(instanceReferences);
300         expected.setRequestStatus(requestStatus);
301         expected.setRequestScope(SERVICE);
302         expected.setStartTime(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(startTime) + " GMT");
303
304         includeCloudRequest = false;
305
306         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
307                 OrchestrationRequestFormat.STATUSDETAIL.toString(), "v8");
308         assertThat(actual, sameBeanAs(expected));
309     }
310
311     @Test
312     public void mapRequestStatusNoTaskInfoTest() throws ApiException {
313         InstanceReferences instanceReferences = new InstanceReferences();
314         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
315         RequestStatus requestStatus = new RequestStatus();
316         requestStatus.setRequestState(iar.getRequestStatus());
317         requestStatus.setStatusMessage(
318                 "FLOW STATUS: FlowStatus RETRY STATUS: RetryStatusMessage ROLLBACK STATUS: RollbackStatusMessage RESOURCE STATUS: The vf module already exist");
319
320         Request expected = new Request();
321         expected.setRequestId(REQUEST_ID);
322         expected.setInstanceReferences(instanceReferences);
323         expected.setRequestStatus(requestStatus);
324         expected.setRequestScope(SERVICE);
325         expected.setStartTime(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(startTime) + " GMT");
326
327         includeCloudRequest = false;
328
329         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
330                 OrchestrationRequestFormat.SIMPLENOTASKINFO.toString(), "v7");
331         assertThat(expected, sameBeanAs(actual));
332     }
333
334     @Test
335     public void mapRequestStatusNullFormatTest() throws ApiException {
336         doReturn("TaskName").when(camundaRequestHandler).getTaskName(REQUEST_ID);
337         InstanceReferences instanceReferences = new InstanceReferences();
338         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
339         RequestStatus requestStatus = new RequestStatus();
340         requestStatus.setRequestState(iar.getRequestStatus());
341         requestStatus.setStatusMessage(
342                 "FLOW STATUS: FlowStatus TASK INFORMATION: TaskName RETRY STATUS: RetryStatusMessage ROLLBACK STATUS: RollbackStatusMessage RESOURCE STATUS: The vf module already exist");
343
344         Request expected = new Request();
345         expected.setRequestId(REQUEST_ID);
346         expected.setInstanceReferences(instanceReferences);
347         expected.setRequestStatus(requestStatus);
348         expected.setRequestScope(SERVICE);
349         expected.setStartTime(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(startTime) + " GMT");
350
351         includeCloudRequest = false;
352
353         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest, null, "v7");
354         assertThat(expected, sameBeanAs(actual));
355     }
356
357     @Test
358     public void mapRequestStatusAndExtSysErrSrcToRequestDetailTest() throws ApiException {
359         doReturn("Last task executed: Call SDNC").when(camundaRequestHandler).getTaskName(REQUEST_ID);
360         InstanceReferences instanceReferences = new InstanceReferences();
361         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
362         RequestStatus requestStatus = new RequestStatus();
363         requestStatus.setRequestState(iar.getRequestStatus());
364         requestStatus.setStatusMessage(
365                 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
366                         FLOW_STATUS + TASK_INFORMATION, RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
367                         "The vf module already exist"));
368
369         Request expected = new Request();
370         expected.setRequestId(REQUEST_ID);
371         expected.setInstanceReferences(instanceReferences);
372         expected.setRequestStatus(requestStatus);
373         expected.setRequestScope(SERVICE);
374         expected.setStartTime(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(startTime) + " GMT");
375
376         includeCloudRequest = false;
377
378         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
379                 OrchestrationRequestFormat.DETAIL.toString(), "v7");
380
381         assertThat(actual, sameBeanAs(expected));
382     }
383
384     @Test
385     public void mapRequestStatusAndExtSysErrSrcToRequestNoFlowStatusTest() throws ApiException {
386         InstanceReferences instanceReferences = new InstanceReferences();
387         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
388         RequestStatus requestStatus = new RequestStatus();
389         requestStatus.setRequestState(iar.getRequestStatus());
390         requestStatus.setStatusMessage(
391                 String.format("RETRY STATUS: %s ROLLBACK STATUS: %s", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE));
392
393         Request expected = new Request();
394         expected.setRequestId(REQUEST_ID);
395         expected.setInstanceReferences(instanceReferences);
396         expected.setRequestStatus(requestStatus);
397         expected.setRequestScope(SERVICE);
398         expected.setStartTime(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(startTime) + " GMT");
399
400         includeCloudRequest = false;
401         iar.setFlowStatus(null);
402         iar.setResourceStatusMessage(null);
403
404         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
405                 OrchestrationRequestFormat.DETAIL.toString(), "v7");
406
407         assertThat(actual, sameBeanAs(expected));
408     }
409
410     @Test
411     public void mapRequestStatusAndExtSysErrSrcToRequestErrorMessageTest() throws ApiException {
412         InstanceReferences instanceReferences = new InstanceReferences();
413         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
414         iar.setExtSystemErrorSource(ROLLBACK_EXT_SYSTEM_ERROR_SOURCE);
415         iar.setFlowStatus(null);
416         iar.setStatusMessage("Error retrieving cloud region from AAI");
417
418         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
419                 OrchestrationRequestFormat.DETAIL.toString(), "v7");
420
421         assertTrue(actual.getRequestStatus().getStatusMessage()
422                 .contains("Error Source: " + ROLLBACK_EXT_SYSTEM_ERROR_SOURCE));
423     }
424
425     @Test
426     public void mapRequestStatusAndExtSysErrSrcToRequestFlowStatusSuccessfulCompletionTest() throws ApiException {
427         InstanceReferences instanceReferences = new InstanceReferences();
428         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
429         RequestStatus requestStatus = new RequestStatus();
430         requestStatus.setRequestState(iar.getRequestStatus());
431         requestStatus.setStatusMessage(
432                 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
433                         "Successfully completed all Building Blocks", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
434                         "The vf module already exist"));
435
436         Request expected = new Request();
437         expected.setRequestId(REQUEST_ID);
438         expected.setInstanceReferences(instanceReferences);
439         expected.setRequestStatus(requestStatus);
440         expected.setRequestScope(SERVICE);
441         expected.setStartTime(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(startTime) + " GMT");
442
443         includeCloudRequest = false;
444         iar.setFlowStatus("Successfully completed all Building Blocks");
445
446         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
447                 OrchestrationRequestFormat.DETAIL.toString(), "v7");
448
449         assertThat(actual, sameBeanAs(expected));
450     }
451
452     @Test
453     public void mapRequestStatusAndExtSysErrSrcToRequestFlowStatusSuccessfulRollbackTest() throws ApiException {
454         InstanceReferences instanceReferences = new InstanceReferences();
455         instanceReferences.setServiceInstanceId(SERVICE_INSTANCE_ID);
456         RequestStatus requestStatus = new RequestStatus();
457         requestStatus.setRequestState(iar.getRequestStatus());
458         requestStatus.setStatusMessage(
459                 String.format("FLOW STATUS: %s RETRY STATUS: %s ROLLBACK STATUS: %s RESOURCE STATUS: %s",
460                         "All Rollback flows have completed successfully", RETRY_STATUS_MESSAGE, ROLLBACK_STATUS_MESSAGE,
461                         "The vf module already exist"));
462
463         Request expected = new Request();
464         expected.setRequestId(REQUEST_ID);
465         expected.setInstanceReferences(instanceReferences);
466         expected.setRequestStatus(requestStatus);
467         expected.setRequestScope(SERVICE);
468         expected.setStartTime(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss").format(startTime) + " GMT");
469
470         includeCloudRequest = false;
471         iar.setFlowStatus("All Rollback flows have completed successfully");
472
473         Request actual = orchestrationRequests.mapInfraActiveRequestToRequest(iar, includeCloudRequest,
474                 OrchestrationRequestFormat.DETAIL.toString(), "v7");
475
476         assertThat(actual, sameBeanAs(expected));
477     }
478
479     @Test
480     public void requestStatusExtSystemErrorSourceTest() {
481         RequestStatus requestStatus = new RequestStatus();
482         requestStatus.setExtSystemErrorSource(EXT_SYSTEM_ERROR_SOURCE);
483         assertThat(requestStatus.getExtSystemErrorSource(), is(equalTo(EXT_SYSTEM_ERROR_SOURCE)));
484     }
485
486     @Test
487     public void mapRequestStatusToRequestForFormatDetailTest() {
488         iar.setRequestStatus(Status.ABORTED.toString());
489         String result =
490                 orchestrationRequests.mapRequestStatusToRequest(iar, OrchestrationRequestFormat.DETAIL.toString());
491
492         assertEquals(Status.ABORTED.toString(), result);
493     }
494
495     @Test
496     public void mapRequestStatusToRequestForFormatStatusDetailTest() {
497         iar.setRequestStatus(Status.ABORTED.toString());
498         String result = orchestrationRequests.mapRequestStatusToRequest(iar, "statusDetail");
499
500         assertEquals(Status.ABORTED.toString(), result);
501     }
502
503
504     @Test
505     public void mapRequestStatusToRequestForFormatEmptyStringTest() {
506         iar.setRequestStatus(Status.ABORTED.toString());
507         String result = orchestrationRequests.mapRequestStatusToRequest(iar, StringUtils.EMPTY);
508
509         assertEquals(Status.FAILED.toString(), result);
510     }
511
512     @Test
513     public void infraActiveRequestNullValidationExceptionTest() throws ApiException {
514         iar.setRequestId(REQUEST_ID);
515         thrown.expect(ValidateException.class);
516         thrown.expectMessage(containsString("Null response from RequestDB when searching by RequestId " + REQUEST_ID));
517         orchestrationRequests.infraActiveRequestLookup(iar.getRequestId());
518     }
519
520     @Test
521     public void isRequestProcessingDataRequiredTest() {
522         boolean required = orchestrationRequests.isRequestProcessingDataRequired("simpleNoTaskInfo");
523         assertFalse(required);
524     }
525
526     @Test
527     public void taskNameLookup() {
528         InfraActiveRequests req = new InfraActiveRequests();
529         req.setRequestId("70debc2a-d6bc-4795-87ba-38a94d9b0b99");
530         Instant startInstant = Instant.now().minus(1, ChronoUnit.DAYS);
531         req.setStartTime(Timestamp.from(startInstant));
532         when(env.getProperty("mso.camundaCleanupInterval")).thenReturn(null);
533         when(camundaRequestHandler.getTaskName("70debc2a-d6bc-4795-87ba-38a94d9b0b99")).thenReturn("taskName");
534
535         RequestStatus requestStatus = new RequestStatus();
536         req.setFlowStatus("Building blocks 1 of 3 completed.");
537
538         orchestrationRequests.mapRequestStatusAndExtSysErrSrcToRequest(req, requestStatus, null, "v7");
539         assertEquals("FLOW STATUS: Building blocks 1 of 3 completed. TASK INFORMATION: taskName",
540                 requestStatus.getStatusMessage());
541     }
542
543     @Test
544     public void noCamundaLookupAfterInterval() {
545         InfraActiveRequests req = new InfraActiveRequests();
546         req.setRequestId("70debc2a-d6bc-4795-87ba-38a94d9b0b99");
547         Instant startInstant = Instant.now().minus(36, ChronoUnit.DAYS);
548         req.setStartTime(Timestamp.from(startInstant));
549         when(env.getProperty("mso.camundaCleanupInterval")).thenReturn("35");
550
551         RequestStatus requestStatus = new RequestStatus();
552         req.setFlowStatus("Building blocks 1 of 3 completed.");
553
554         orchestrationRequests.mapRequestStatusAndExtSysErrSrcToRequest(req, requestStatus, null, "v7");
555         assertEquals("FLOW STATUS: Building blocks 1 of 3 completed.", requestStatus.getStatusMessage());
556     }
557 }