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