diff --git a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/DeleteTerminateByIdControllerTest.java b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/DeleteTerminateByIdControllerTest.java index eba2cda9c3..553eb4f75d 100644 --- a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/DeleteTerminateByIdControllerTest.java +++ b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/DeleteTerminateByIdControllerTest.java @@ -1,5 +1,6 @@ package uk.gov.hmcts.reform.wataskmanagementapi.controllers; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -14,25 +15,18 @@ import uk.gov.hmcts.reform.wataskmanagementapi.auth.idam.entities.UserIdamTokenGeneratorInfo; import uk.gov.hmcts.reform.wataskmanagementapi.auth.idam.entities.UserInfo; import uk.gov.hmcts.reform.wataskmanagementapi.auth.restrict.ClientAccessControlService; -import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.RoleAssignment; import uk.gov.hmcts.reform.wataskmanagementapi.cft.enums.CFTTaskState; import uk.gov.hmcts.reform.wataskmanagementapi.clients.CamundaServiceApi; import uk.gov.hmcts.reform.wataskmanagementapi.clients.IdamWebApi; import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.TerminateTaskRequest; import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.options.TerminateInfo; -import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.SecurityClassification; -import uk.gov.hmcts.reform.wataskmanagementapi.domain.enums.TestRolesWithGrantType; import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskResource; -import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskRoleResource; import uk.gov.hmcts.reform.wataskmanagementapi.enums.TaskAction; import uk.gov.hmcts.reform.wataskmanagementapi.services.CFTTaskDatabaseService; import uk.gov.hmcts.reform.wataskmanagementapi.services.TaskManagementService; +import uk.gov.hmcts.reform.wataskmanagementapi.utils.TaskTestUtils; -import java.time.OffsetDateTime; -import java.util.ArrayList; -import java.util.List; import java.util.Optional; -import java.util.Set; import java.util.UUID; import static java.util.Collections.emptyList; @@ -73,13 +67,18 @@ class DeleteTerminateByIdControllerTest extends SpringBootIntegrationBaseTest { private IdamWebApi idamWebApi; @Autowired private IdamTokenGenerator systemUserIdamToken; - private String taskId; + + TaskTestUtils taskTestUtils; + private String bearerAccessToken1; + @BeforeAll + void init() { + taskTestUtils = new TaskTestUtils(cftTaskDatabaseService); + } + @BeforeEach void setUp() { - taskId = UUID.randomUUID().toString(); - ENDPOINT_BEING_TESTED = String.format(ENDPOINT_PATH, taskId); bearerAccessToken1 = "Token" + UUID.randomUUID(); when(idamWebApi.token(any())).thenReturn(new Token(bearerAccessToken1, "Scope")); when(idamWebApi.userInfo(any())).thenReturn(UserInfo.builder().uid(SYSTEM_USER_1).build()); @@ -92,6 +91,9 @@ class Cancelled { @Test void should_return_403_with_application_problem_response_when_client_is_not_allowed() throws Exception { + String taskId = UUID.randomUUID().toString(); + + ENDPOINT_BEING_TESTED = String.format(ENDPOINT_PATH, taskId); when(clientAccessControlService.hasExclusiveAccess(SERVICE_AUTHORIZATION_TOKEN)) .thenReturn(false); @@ -118,7 +120,9 @@ void should_return_403_with_application_problem_response_when_client_is_not_allo @Test void should_return_204_and_delete_task() throws Exception { - createTaskAndRoleAssignments(UNASSIGNED, "deleteTerminateByIdCaseId1"); + String taskId = taskTestUtils.createTaskAndRoleAssignments(UNASSIGNED, "deleteTerminateByIdCaseId1", + null,null); + ENDPOINT_BEING_TESTED = String.format(ENDPOINT_PATH, taskId); when(authTokenGenerator.generate()).thenReturn(SERVICE_AUTHORIZATION_TOKEN); when(camundaServiceApi.searchHistory(eq(SERVICE_AUTHORIZATION_TOKEN), any())).thenReturn(emptyList()); when(clientAccessControlService.hasExclusiveAccess(SERVICE_AUTHORIZATION_TOKEN)) @@ -155,6 +159,10 @@ class Completed { @Test void should_return_403_with_application_problem_response_when_client_is_not_allowed() throws Exception { + String taskId = UUID.randomUUID().toString(); + + ENDPOINT_BEING_TESTED = String.format(ENDPOINT_PATH, taskId); + when(clientAccessControlService.hasExclusiveAccess(SERVICE_AUTHORIZATION_TOKEN)) .thenReturn(false); @@ -182,7 +190,9 @@ void should_return_403_with_application_problem_response_when_client_is_not_allo @Test void should_return_204_and_delete_task() throws Exception { - createTaskAndRoleAssignments(UNASSIGNED, "deleteTerminateByIdCaseId2"); + String taskId = taskTestUtils.createTaskAndRoleAssignments(UNASSIGNED, "deleteTerminateByIdCaseId2", + null,null); + ENDPOINT_BEING_TESTED = String.format(ENDPOINT_PATH, taskId); when(authTokenGenerator.generate()).thenReturn(SERVICE_AUTHORIZATION_TOKEN); when(camundaServiceApi.searchHistory(eq(SERVICE_AUTHORIZATION_TOKEN), any())).thenReturn(emptyList()); @@ -218,6 +228,8 @@ class Deleted { @Test void should_return_403_with_application_problem_response_when_client_is_not_allowed() throws Exception { + ENDPOINT_BEING_TESTED = String.format(ENDPOINT_PATH, "dummyTaskId"); + when(clientAccessControlService.hasExclusiveAccess(SERVICE_AUTHORIZATION_TOKEN)) .thenReturn(false); @@ -245,7 +257,9 @@ void should_return_403_with_application_problem_response_when_client_is_not_allo @Test void should_return_204_and_delete_task() throws Exception { - createTaskAndRoleAssignments(UNASSIGNED, "deleteTerminateByIdCaseId3"); + String taskId = taskTestUtils.createTaskAndRoleAssignments(UNASSIGNED, "deleteTerminateByIdCaseId3", + null,null); + ENDPOINT_BEING_TESTED = String.format(ENDPOINT_PATH, taskId); when(authTokenGenerator.generate()).thenReturn(SERVICE_AUTHORIZATION_TOKEN); when(camundaServiceApi.searchHistory(eq(SERVICE_AUTHORIZATION_TOKEN), any())).thenReturn(emptyList()); when(clientAccessControlService.hasExclusiveAccess(SERVICE_AUTHORIZATION_TOKEN)) @@ -273,60 +287,5 @@ void should_return_204_and_delete_task() throws Exception { assertNotNull(taskInDb.get().getLastUpdatedTimestamp()); } } - - private void insertDummyTaskInDb(String jurisdiction, - String caseType, - String caseId, - String taskId, CFTTaskState cftTaskState, - TaskRoleResource taskRoleResource) { - TaskResource taskResource = new TaskResource( - taskId, - "someTaskName", - "someTaskType", - cftTaskState - ); - taskResource.setCreated(OffsetDateTime.now()); - taskResource.setDueDateTime(OffsetDateTime.now()); - taskResource.setJurisdiction(jurisdiction); - taskResource.setCaseTypeId(caseType); - taskResource.setSecurityClassification(SecurityClassification.PUBLIC); - taskResource.setLocation("765324"); - taskResource.setLocationName("Taylor House"); - taskResource.setRegion("TestRegion"); - taskResource.setCaseId(caseId); - - taskRoleResource.setTaskId(taskId); - Set taskRoleResourceSet = Set.of(taskRoleResource); - taskResource.setTaskRoleResources(taskRoleResourceSet); - cftTaskDatabaseService.saveTask(taskResource); - } - - private void createTaskAndRoleAssignments(CFTTaskState cftTaskState, String caseId) { - //assigner permission : manage, own, cancel - TaskRoleResource assignerTaskRoleResource = new TaskRoleResource( - TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE.getRoleName(), - false, true, true, true, true, false, - new String[]{}, 1, false, - TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE.getRoleCategory().name() - ); - String jurisdiction = "IA"; - String caseType = "Asylum"; - insertDummyTaskInDb(jurisdiction, caseType, caseId, taskId, cftTaskState, assignerTaskRoleResource); - - List assignerRoles = new ArrayList<>(); - - RoleAssignmentRequest roleAssignmentRequest = RoleAssignmentRequest.builder() - .testRolesWithGrantType(TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE) - .roleAssignmentAttribute( - RoleAssignmentAttribute.builder() - .jurisdiction(jurisdiction) - .caseType(caseType) - .caseId(caseId) - .build() - ) - .build(); - - createRoleAssignment(assignerRoles, roleAssignmentRequest); - } } diff --git a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/ExecuteReconfigurationTaskOperationControllerTest.java b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/ExecuteReconfigurationTaskOperationControllerTest.java index 0824bce8ef..43983588c9 100644 --- a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/ExecuteReconfigurationTaskOperationControllerTest.java +++ b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/ExecuteReconfigurationTaskOperationControllerTest.java @@ -1,6 +1,7 @@ package uk.gov.hmcts.reform.wataskmanagementapi.controllers; import com.launchdarkly.sdk.LDValue; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -21,36 +22,22 @@ import uk.gov.hmcts.reform.wataskmanagementapi.auth.restrict.ClientAccessControlService; import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.RoleAssignmentService; import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.RoleAssignment; -import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.enums.ActorIdType; -import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.enums.Classification; -import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.enums.GrantType; -import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.enums.RoleCategory; -import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.enums.RoleType; import uk.gov.hmcts.reform.wataskmanagementapi.cft.enums.CFTTaskState; import uk.gov.hmcts.reform.wataskmanagementapi.cft.query.CftQueryService; import uk.gov.hmcts.reform.wataskmanagementapi.clients.IdamWebApi; import uk.gov.hmcts.reform.wataskmanagementapi.config.LaunchDarklyFeatureFlagProvider; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.TaskOperationRequest; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.entities.ExecuteReconfigureTaskFilter; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.entities.MarkTaskToReconfigureTaskFilter; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.entities.TaskFilter; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.entities.TaskOperation; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.enums.TaskFilterOperator; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.enums.TaskOperationType; import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.CamundaValue; import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.ConfigurationDmnEvaluationResponse; -import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.PermissionsDmnEvaluationResponse; import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.SecurityClassification; import uk.gov.hmcts.reform.wataskmanagementapi.domain.ccd.CaseDetails; -import uk.gov.hmcts.reform.wataskmanagementapi.domain.enums.TestRolesWithGrantType; import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskResource; -import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskRoleResource; import uk.gov.hmcts.reform.wataskmanagementapi.enums.TaskAction; import uk.gov.hmcts.reform.wataskmanagementapi.services.CFTTaskDatabaseService; import uk.gov.hmcts.reform.wataskmanagementapi.services.CcdDataService; import uk.gov.hmcts.reform.wataskmanagementapi.services.DmnEvaluationService; import uk.gov.hmcts.reform.wataskmanagementapi.services.operation.TaskReconfigurationTransactionHandler; import uk.gov.hmcts.reform.wataskmanagementapi.services.utils.TaskMandatoryFieldsValidator; +import uk.gov.hmcts.reform.wataskmanagementapi.utils.TaskTestUtils; import java.time.LocalDate; import java.time.LocalDateTime; @@ -60,11 +47,9 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; -import static java.util.Arrays.asList; import static java.util.Collections.singletonList; import static java.util.concurrent.TimeUnit.SECONDS; import static org.awaitility.Awaitility.await; @@ -89,7 +74,6 @@ import static uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.enums.TaskOperationType.EXECUTE_RECONFIGURE_FAILURES; import static uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.enums.TaskOperationType.MARK_TO_RECONFIGURE; import static uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.CamundaValue.booleanValue; -import static uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.CamundaValue.integerValue; import static uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.CamundaValue.stringValue; import static uk.gov.hmcts.reform.wataskmanagementapi.exceptions.v2.enums.ErrorMessages.MANDATORY_FIELD_MISSING_ERROR; import static uk.gov.hmcts.reform.wataskmanagementapi.utils.ServiceMocks.SERVICE_AUTHORIZATION_TOKEN; @@ -130,16 +114,22 @@ class ExecuteReconfigurationTaskOperationControllerTest extends SpringBootIntegr @MockitoSpyBean TaskMandatoryFieldsValidator taskMandatoryFieldsValidator; - private String taskId; + TaskTestUtils taskTestUtils; + private String bearerAccessToken1; public static void assertCloseTo(OffsetDateTime expected, OffsetDateTime actual, int offsetSeconds) { assertTrue(expected.minusSeconds(offsetSeconds).isBefore(actual) && expected.plusSeconds(offsetSeconds).isAfter(actual)); } + @BeforeAll + void init() { + taskTestUtils = new TaskTestUtils(cftTaskDatabaseService); + } + @BeforeEach void setUp() { - taskId = UUID.randomUUID().toString(); + when(clientAccessControlService.hasExclusiveAccess(SERVICE_AUTHORIZATION_TOKEN)) .thenReturn(true); @@ -165,7 +155,7 @@ void setUp() { Map.of("caseAccessCategory", "categoryA,categoryC") ); lenient().when(ccdDataService.getCaseData(anyString())).thenReturn(caseDetails); - RoleAssignment roleAssignmentResource = buildRoleAssignment( + RoleAssignment roleAssignmentResource = taskTestUtils.buildRoleAssignment( ASSIGNEE_USER, "tribunalCaseworker", singletonList("IA") @@ -180,7 +170,7 @@ void should_execute_reconfigure_nextHearingDate_to_null_from_null() throws Excep //create mock task String caseIdToday = "caseId-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, dueDateTime,ASSIGNEE_USER); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); //mark to reconfigure @@ -188,7 +178,7 @@ void should_execute_reconfigure_nextHearingDate_to_null_from_null() throws Excep post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -205,13 +195,13 @@ void should_execute_reconfigure_nextHearingDate_to_null_from_null() throws Excep anyString(), anyString(), anyString() - )).thenReturn(configurationDmnResponse(true)); + )).thenReturn(taskTestUtils.configurationDmnResponse(true)); when(dmnEvaluationService.evaluateTaskPermissionsDmn( anyString(), anyString(), anyString(), anyString() - )).thenReturn(permissionsResponse()); + )).thenReturn(taskTestUtils.permissionsResponse()); when(cftQueryService.getTask(any(), any(), anyList())).thenReturn(Optional.of(taskResourcesBefore.get(0))); //execute reconfigure @@ -219,9 +209,9 @@ void should_execute_reconfigure_nextHearingDate_to_null_from_null() throws Excep post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -239,14 +229,14 @@ void should_execute_reconfigure_nextHearingDate_to_null_from_null() throws Excep void should_execute_reconfigure_on_task_and_not_update_data_when_can_reconfigure_is_false() throws Exception { String caseIdToday = "caseId1-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, dueDateTime,ASSIGNEE_USER); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -278,21 +268,21 @@ void should_execute_reconfigure_on_task_and_not_update_data_when_can_reconfigure anyString(), anyString(), anyString(), - anyString())).thenReturn(configurationDmnResponse(false)); + anyString())).thenReturn(taskTestUtils.configurationDmnResponse(false)); when(dmnEvaluationService.evaluateTaskPermissionsDmn( anyString(), anyString(), anyString(), - anyString())).thenReturn(permissionsResponse()); + anyString())).thenReturn(taskTestUtils.permissionsResponse()); when(cftQueryService.getTask(any(), any(), anyList())).thenReturn(Optional.of(taskResources.get(0))); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -329,14 +319,14 @@ void should_execute_reconfigure_on_task_and_not_update_data_when_can_reconfigure void should_execute_reconfigure_on_task_and_update_data_when_can_reconfigure_is_true() throws Exception { String caseIdToday = "caseId2-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, dueDateTime,ASSIGNEE_USER); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -366,21 +356,21 @@ void should_execute_reconfigure_on_task_and_update_data_when_can_reconfigure_is_ anyString(), anyString(), anyString(), - anyString())).thenReturn(configurationDmnResponse(true)); + anyString())).thenReturn(taskTestUtils.configurationDmnResponse(true)); when(dmnEvaluationService.evaluateTaskPermissionsDmn( anyString(), anyString(), anyString(), - anyString())).thenReturn(permissionsResponse()); + anyString())).thenReturn(taskTestUtils.permissionsResponse()); when(cftQueryService.getTask(any(), any(), anyList())).thenReturn(Optional.of(taskResourcesBefore.get(0))); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -428,7 +418,7 @@ void should_ignore_field_on_reconfigure_task_when_reconfigure_set_to_true_and_in throws Exception { String caseIdToday = "caseId4-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED,caseIdToday, dueDateTime, ASSIGNEE_USER); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); lenient().when(dmnEvaluationService.evaluateTaskConfigurationDmn( anyString(), @@ -452,13 +442,13 @@ void should_ignore_field_on_reconfigure_task_when_reconfigure_set_to_true_and_in anyString(), anyString(), anyString(), - anyString())).thenReturn(permissionsResponse()); + anyString())).thenReturn(taskTestUtils.permissionsResponse()); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -491,9 +481,9 @@ void should_ignore_field_on_reconfigure_task_when_reconfigure_set_to_true_and_in post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -530,18 +520,16 @@ void should_ignore_field_on_reconfigure_task_when_reconfigure_set_to_true_and_in void should_rollback_changes_and_retry_task_reconfiguration_for_failed_task_when_any_exception_occurs() throws Exception { String caseIdToday = "caseId5-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); - taskId = UUID.randomUUID().toString(); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); - taskId = UUID.randomUUID().toString(); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, dueDateTime,ASSIGNEE_USER); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, dueDateTime,ASSIGNEE_USER); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, dueDateTime,ASSIGNEE_USER); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -571,12 +559,12 @@ void should_rollback_changes_and_retry_task_reconfiguration_for_failed_task_when anyString(), anyString(), anyString(), - anyString())).thenReturn(configurationDmnResponse(true)); + anyString())).thenReturn(taskTestUtils.configurationDmnResponse(true)); when(dmnEvaluationService.evaluateTaskPermissionsDmn( anyString(), anyString(), anyString(), - anyString())).thenReturn(permissionsResponse()); + anyString())).thenReturn(taskTestUtils.permissionsResponse()); when(cftQueryService.getTask(eq(taskResourcesBefore.get(0).getTaskId()), any(), anyList())).thenReturn(Optional.of(taskResourcesBefore.get(0))); String secondTaskId = taskResourcesBefore.get(1).getTaskId(); //Throwing exception for second task while reassigning the task @@ -586,9 +574,9 @@ void should_rollback_changes_and_retry_task_reconfiguration_for_failed_task_when post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -656,14 +644,14 @@ void should_not_execute_reconfigure_on_task_and_update_data_when_state_not_assig String caseIdToday = "caseId2-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); + final String taskId = taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, dueDateTime, ASSIGNEE_USER); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -680,12 +668,12 @@ void should_not_execute_reconfigure_on_task_and_update_data_when_state_not_assig anyString(), anyString(), anyString(), - anyString())).thenReturn(configurationDmnResponse(true)); + anyString())).thenReturn(taskTestUtils.configurationDmnResponse(true)); when(dmnEvaluationService.evaluateTaskPermissionsDmn( anyString(), anyString(), anyString(), - anyString())).thenReturn(permissionsResponse()); + anyString())).thenReturn(taskTestUtils.permissionsResponse()); OffsetDateTime reconfigureDateTime = OffsetDateTime.now().minusSeconds(30L); when(cftTaskDatabaseService.getActiveTaskIdsAndReconfigureRequestTimeGreaterThan( @@ -696,9 +684,9 @@ void should_not_execute_reconfigure_on_task_and_update_data_when_state_not_assig post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(reconfigureDateTime) + taskTestUtils.executeTaskFilters(reconfigureDateTime) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -719,14 +707,14 @@ void should_not_execute_reconfigure_on_task_and_update_data_when_state_not_assig void should_execute_reconfigure_on_task_and_update_title_when_can_reconfigure_is_true() throws Exception { String caseIdToday = "caseId3-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, dueDateTime, ASSIGNEE_USER); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -752,16 +740,16 @@ void should_execute_reconfigure_on_task_and_update_title_when_can_reconfigure_is anyString(), anyString(), anyString(), - anyString())).thenReturn(permissionsResponse()); + anyString())).thenReturn(taskTestUtils.permissionsResponse()); when(cftQueryService.getTask(any(), any(), anyList())).thenReturn(Optional.of(taskResourcesBefore.get(0))); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -787,14 +775,14 @@ void should_execute_reconfigure_on_task_and_update_title_when_can_reconfigure_is void should_execute_reconfigure_autoassignment_unassigned_to_assigned() throws Exception { String caseIdToday = "caseId-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.UNASSIGNED, null, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.UNASSIGNED, caseIdToday, dueDateTime,null); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -821,20 +809,20 @@ void should_execute_reconfigure_autoassignment_unassigned_to_assigned() throws E anyString(), anyString(), anyString(), - anyString())).thenReturn(configurationDmnResponse(true)); + anyString())).thenReturn(taskTestUtils.configurationDmnResponse(true)); when(dmnEvaluationService.evaluateTaskPermissionsDmn( anyString(), anyString(), anyString(), - anyString())).thenReturn(permissionsResponse()); + anyString())).thenReturn(taskTestUtils.permissionsResponse()); when(cftQueryService.getTask(any(), any(), anyList())).thenReturn(Optional.of(taskResourcesBefore.get(0))); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -876,14 +864,14 @@ void should_execute_reconfigure_autoassignment_unassigned_to_assigned() throws E void should_execute_reconfigure_autoassignment_unassigned_to_unassigned() throws Exception { String caseIdToday = "caseId-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.UNASSIGNED, null, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.UNASSIGNED, caseIdToday, dueDateTime,null); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -910,21 +898,21 @@ void should_execute_reconfigure_autoassignment_unassigned_to_unassigned() throws anyString(), anyString(), anyString(), - anyString())).thenReturn(configurationDmnResponse(true)); + anyString())).thenReturn(taskTestUtils.configurationDmnResponse(true)); when(dmnEvaluationService.evaluateTaskPermissionsDmn( anyString(), anyString(), anyString(), - anyString())).thenReturn(permissionsResponse()); + anyString())).thenReturn(taskTestUtils.permissionsResponse()); when(roleAssignmentService.queryRolesForAutoAssignmentByCaseId(any())).thenReturn(List.of()); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -967,14 +955,14 @@ void should_execute_reconfigure_autoassignment_unassigned_to_unassigned() throws void should_execute_reconfigure_set_indexed_true() throws Exception { String caseIdToday = "caseId-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.UNASSIGNED, null, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.UNASSIGNED, caseIdToday, dueDateTime,null); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -984,22 +972,22 @@ void should_execute_reconfigure_set_indexed_true() throws Exception { anyString(), anyString(), anyString() - )).thenReturn(configurationDmnResponse(true)); + )).thenReturn(taskTestUtils.configurationDmnResponse(true)); when(dmnEvaluationService.evaluateTaskPermissionsDmn( anyString(), anyString(), anyString(), anyString() - )).thenReturn(permissionsResponse()); + )).thenReturn(taskTestUtils.permissionsResponse()); when(roleAssignmentService.queryRolesForAutoAssignmentByCaseId(any())).thenReturn(List.of()); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -1027,14 +1015,15 @@ void should_execute_reconfigure_set_indexed_true() throws Exception { void should_execute_reconfigure_set_indexed_assigned_true() throws Exception { String caseIdToday = "caseId-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.UNASSIGNED, null, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.UNASSIGNED, caseIdToday, dueDateTime,null); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, + taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -1046,22 +1035,22 @@ void should_execute_reconfigure_set_indexed_assigned_true() throws Exception { anyString(), anyString(), anyString() - )).thenReturn(configurationDmnResponse(true)); + )).thenReturn(taskTestUtils.configurationDmnResponse(true)); when(dmnEvaluationService.evaluateTaskPermissionsDmn( anyString(), anyString(), anyString(), anyString() - )).thenReturn(permissionsResponse()); + )).thenReturn(taskTestUtils.permissionsResponse()); when(cftQueryService.getTask(any(), any(), anyList())).thenReturn(Optional.of(taskResourcesBefore.get(0))); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -1089,14 +1078,15 @@ void should_execute_reconfigure_set_indexed_assigned_true() throws Exception { void should_execute_reconfigure_autoassignment_assigned_to_assigned_another_user() throws Exception { String caseIdToday = "caseId-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, OLD_ASSIGNEE_USER, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, dueDateTime,OLD_ASSIGNEE_USER); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, + taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -1125,20 +1115,20 @@ void should_execute_reconfigure_autoassignment_assigned_to_assigned_another_user anyString(), anyString(), anyString(), - anyString())).thenReturn(configurationDmnResponse(true)); + anyString())).thenReturn(taskTestUtils.configurationDmnResponse(true)); when(dmnEvaluationService.evaluateTaskPermissionsDmn( anyString(), anyString(), anyString(), - anyString())).thenReturn(permissionsResponse()); + anyString())).thenReturn(taskTestUtils.permissionsResponse()); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -1183,14 +1173,14 @@ void should_execute_reconfigure_autoassignment_assigned_to_unassigned() throws E String caseIdToday = "caseId-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); String dueDateTimeCheck = OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, dueDateTime,ASSIGNEE_USER); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -1219,21 +1209,21 @@ void should_execute_reconfigure_autoassignment_assigned_to_unassigned() throws E anyString(), anyString(), anyString(), - anyString())).thenReturn(configurationDmnResponse(true)); + anyString())).thenReturn(taskTestUtils.configurationDmnResponse(true)); when(dmnEvaluationService.evaluateTaskPermissionsDmn( anyString(), anyString(), anyString(), - anyString())).thenReturn(permissionsResponse()); + anyString())).thenReturn(taskTestUtils.permissionsResponse()); when(roleAssignmentService.queryRolesForAutoAssignmentByCaseId(any())).thenReturn(List.of()); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -1279,13 +1269,14 @@ void should_not_execute_reconfigure_for_past_reconfigure_request_time() throws E String caseIdToday = "caseId" + OffsetDateTime.now(); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, dueDateTime,ASSIGNEE_USER); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, + taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -1302,9 +1293,9 @@ void should_not_execute_reconfigure_for_past_reconfigure_request_time() throws E post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().plusDays(1)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().plusDays(1)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -1327,12 +1318,13 @@ void should_not_execute_reconfigure_if_task_validation_fails(CapturedOutput outp .thenReturn(LDValue.parse(jsonString)); String caseIdToday = "caseId" + OffsetDateTime.now(); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, dueDateTime,ASSIGNEE_USER); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, + taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -1348,9 +1340,9 @@ void should_not_execute_reconfigure_if_task_validation_fails(CapturedOutput outp post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -1375,14 +1367,15 @@ void should_execute_reconfigure_on_task_and_fail_due_to_calendar_configuration_a throws Exception { String caseIdToday = "calendarCaseId-" + OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); OffsetDateTime dueDateTime = OffsetDateTime.now(); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, dueDateTime,ASSIGNEE_USER); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest(MARK_TO_RECONFIGURE, + taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -1408,8 +1401,10 @@ void should_execute_reconfigure_on_task_and_fail_due_to_calendar_configuration_a assertNotNull(task.getDueDateTime()); }); - List caseDataConfigurationDmnResponse = configurationDmnResponse(true); - List calendarConfigurationDmnResponse = invalidIntermediateDateCalendarDmnResponse(); + List caseDataConfigurationDmnResponse = + taskTestUtils.configurationDmnResponse(true); + List calendarConfigurationDmnResponse = + taskTestUtils.invalidIntermediateDateCalendarDmnResponse(); List configurationDmnResponse = new ArrayList<>(); configurationDmnResponse.addAll(caseDataConfigurationDmnResponse); configurationDmnResponse.addAll(calendarConfigurationDmnResponse); @@ -1423,16 +1418,16 @@ void should_execute_reconfigure_on_task_and_fail_due_to_calendar_configuration_a anyString(), anyString(), anyString(), - anyString())).thenReturn(permissionsResponse()); + anyString())).thenReturn(taskTestUtils.permissionsResponse()); when(cftQueryService.getTask(any(), any(), anyList())).thenReturn(Optional.of(taskResourcesBefore.get(0))); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusMinutes(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusMinutes(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -1442,9 +1437,9 @@ void should_execute_reconfigure_on_task_and_fail_due_to_calendar_configuration_a post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE_FAILURES, - executeTaskFilters(OffsetDateTime.now().minusMinutes(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusMinutes(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -1473,297 +1468,4 @@ void should_execute_reconfigure_on_task_and_fail_due_to_calendar_configuration_a + failureLogMessage)); } - private List invalidIntermediateDateCalendarDmnResponse() { - ConfigurationDmnEvaluationResponse calculatedDates = ConfigurationDmnEvaluationResponse.builder() - .name(stringValue("calculatedDates")) - .value(stringValue("nextHearingDate,nonSpecifiedIntDate,hearingDatePreDate,dueDate,priorityDate")) - .build(); - LocalDateTime nextHearingDateLocalDateTime = LocalDateTime.of( - 2022, - 10, - 13, - 18, - 0, - 0 - ); - String nextHearingDateValue = nextHearingDateLocalDateTime - .plusDays(1) - .format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - - ConfigurationDmnEvaluationResponse nextHearingDate = ConfigurationDmnEvaluationResponse.builder() - .name(CamundaValue.stringValue("nextHearingDate")) - .value(CamundaValue.stringValue(nextHearingDateValue)) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - ConfigurationDmnEvaluationResponse hearingDatePreDateOriginRef = ConfigurationDmnEvaluationResponse.builder() - .name(CamundaValue.stringValue("hearingDatePreDateOriginRef")) - .value(CamundaValue.stringValue("nonSpecifiedIntDate")) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - ConfigurationDmnEvaluationResponse hearingDatePreDateIntervalDays = ConfigurationDmnEvaluationResponse - .builder() - .name(CamundaValue.stringValue("hearingDatePreDateIntervalDays")) - .value(CamundaValue.stringValue("5")) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - ConfigurationDmnEvaluationResponse hearingDatePreDateNonWorkingCalendar = ConfigurationDmnEvaluationResponse - .builder() - .name(CamundaValue.stringValue("hearingDatePreDateNonWorkingCalendar")) - .value(CamundaValue.stringValue("https://www.gov.uk/bank-holidays/england-and-wales.json")) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - ConfigurationDmnEvaluationResponse hearingDatePreDateNonWorkingDaysOfWeek = ConfigurationDmnEvaluationResponse - .builder() - .name(CamundaValue.stringValue("hearingDatePreDateNonWorkingDaysOfWeek")) - .value(CamundaValue.stringValue("SATURDAY,SUNDAY")) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - ConfigurationDmnEvaluationResponse hearingDatePreDateSkipNonWorkingDays = ConfigurationDmnEvaluationResponse - .builder() - .name(CamundaValue.stringValue("hearingDatePreDateSkipNonWorkingDays")) - .value(CamundaValue.stringValue("true")) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - ConfigurationDmnEvaluationResponse hearingDatePreDateMustBeWorkingDay = ConfigurationDmnEvaluationResponse - .builder() - .name(CamundaValue.stringValue("hearingDatePreDateMustBeWorkingDay")) - .value(CamundaValue.stringValue("Next")) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - ConfigurationDmnEvaluationResponse dueDateOriginRef = ConfigurationDmnEvaluationResponse.builder() - .name(CamundaValue.stringValue("dueDateOriginRef")) - .value(CamundaValue.stringValue("nextHearingDate")) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - ConfigurationDmnEvaluationResponse dueDateIntervalDays = ConfigurationDmnEvaluationResponse.builder() - .name(CamundaValue.stringValue("dueDateIntervalDays")) - .value(CamundaValue.stringValue("21")) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - ConfigurationDmnEvaluationResponse dueDateNonWorkingCalendar = ConfigurationDmnEvaluationResponse.builder() - .name(CamundaValue.stringValue("dueDateNonWorkingCalendar")) - .value(CamundaValue.stringValue("https://www.gov.uk/bank-holidays/england-and-wales.json")) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - ConfigurationDmnEvaluationResponse dueDateNonWorkingDaysOfWeek = ConfigurationDmnEvaluationResponse.builder() - .name(CamundaValue.stringValue("dueDateNonWorkingDaysOfWeek")) - .value(CamundaValue.stringValue("SATURDAY,SUNDAY")) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - ConfigurationDmnEvaluationResponse dueDateSkipNonWorkingDays = ConfigurationDmnEvaluationResponse.builder() - .name(CamundaValue.stringValue("dueDateSkipNonWorkingDays")) - .value(CamundaValue.stringValue("true")) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - ConfigurationDmnEvaluationResponse dueDateMustBeWorkingDay = ConfigurationDmnEvaluationResponse.builder() - .name(CamundaValue.stringValue("dueDateMustBeWorkingDay")) - .value(CamundaValue.stringValue("Next")) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - ConfigurationDmnEvaluationResponse priorityDateOriginEarliest = ConfigurationDmnEvaluationResponse.builder() - .name(CamundaValue.stringValue("priorityDateOriginLatest")) - .value(CamundaValue.stringValue("hearingDatePreDate,dueDate")) - .canReconfigure(CamundaValue.booleanValue(true)) - .build(); - - return List.of( - calculatedDates, nextHearingDate, hearingDatePreDateOriginRef, - hearingDatePreDateIntervalDays, hearingDatePreDateNonWorkingCalendar, - hearingDatePreDateNonWorkingDaysOfWeek, hearingDatePreDateSkipNonWorkingDays, - hearingDatePreDateMustBeWorkingDay, dueDateOriginRef, dueDateIntervalDays, - dueDateNonWorkingCalendar, dueDateMustBeWorkingDay, dueDateNonWorkingDaysOfWeek, - dueDateSkipNonWorkingDays, priorityDateOriginEarliest - ); - } - - private TaskOperationRequest taskOperationRequest(TaskOperationType operationName, List> taskFilters) { - TaskOperation operation = TaskOperation - .builder() - .type(operationName) - .runId(UUID.randomUUID().toString()) - .maxTimeLimit(60) - .retryWindowHours(0) - .build(); - return new TaskOperationRequest(operation, taskFilters); - } - - private List> executeTaskFilters(OffsetDateTime reconfigureRequestTime) { - TaskFilter filter = new ExecuteReconfigureTaskFilter("reconfigure_request_time", - reconfigureRequestTime, TaskFilterOperator.AFTER - ); - return List.of(filter); - } - - private List> markTaskFilters(String caseId) { - TaskFilter filter = new MarkTaskToReconfigureTaskFilter( - "case_id", List.of(caseId), TaskFilterOperator.IN - ); - return List.of(filter); - } - - private void insertDummyTaskInDb(String jurisdiction, - String caseType, - String caseId, - String taskId, - CFTTaskState cftTaskState, - String assignee, - OffsetDateTime dueDateTime, - TaskRoleResource taskRoleResource) { - TaskResource taskResource = new TaskResource( - taskId, - "someTaskName", - "someTaskType", - cftTaskState - ); - taskResource.setCreated(OffsetDateTime.now()); - taskResource.setDueDateTime(dueDateTime); - taskResource.setJurisdiction(jurisdiction); - taskResource.setCaseTypeId(caseType); - taskResource.setSecurityClassification(SecurityClassification.PUBLIC); - taskResource.setLocation("765324"); - taskResource.setLocationName("Taylor House"); - taskResource.setRegion("TestRegion"); - taskResource.setCaseId(caseId); - taskResource.setAssignee(assignee); - taskResource.setTitle("title"); - taskRoleResource.setTaskId(taskId); - Set taskRoleResourceSet = Set.of(taskRoleResource); - taskResource.setTaskRoleResources(taskRoleResourceSet); - cftTaskDatabaseService.saveTask(taskResource); - } - - private void createTaskAndRoleAssignments(CFTTaskState cftTaskState, String assignee, String caseId, - OffsetDateTime dueDateTime) { - - //assigner permission : manage, own, cancel - TaskRoleResource assignerTaskRoleResource = new TaskRoleResource( - TestRolesWithGrantType.STANDARD_TRIBUNAL_CASE_WORKER_PUBLIC.getRoleName(), - false, true, true, true, true, false, - new String[]{"IA"}, 1, true, - TestRolesWithGrantType.SPECIFIC_TRIBUNAL_CASE_WORKER.getRoleCategory().name() - ); - String jurisdiction = "IA"; - String caseType = "Asylum"; - insertDummyTaskInDb(jurisdiction, caseType, caseId, taskId, cftTaskState, assignee, dueDateTime, - assignerTaskRoleResource - ); - - List assignerRoles = new ArrayList<>(); - RoleAssignmentRequest roleAssignmentRequest = RoleAssignmentRequest.builder() - .testRolesWithGrantType(TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE) - .roleAssignmentAttribute( - RoleAssignmentAttribute.builder() - .jurisdiction(jurisdiction) - .caseType(caseType) - .caseId(caseId) - .build() - ) - .build(); - - createRoleAssignment(assignerRoles, roleAssignmentRequest); - } - - private List permissionsResponse() { - return asList( - new PermissionsDmnEvaluationResponse( - stringValue("tribunalCaseworker"), - stringValue("Read,Refer,Own,Execute,Manage,Cancel"), - stringValue("IA"), - integerValue(1), - booleanValue(true), - stringValue("LEGAL_OPERATIONS"), - stringValue("categoryA,categoryC") - ), - new PermissionsDmnEvaluationResponse( - stringValue("seniorTribunalCaseworker"), - stringValue("Read,Refer,Own,Execute,Manage,Cancel"), - stringValue("IA"), - integerValue(2), - booleanValue(true), - stringValue("LEGAL_OPERATIONS"), - stringValue("categoryB,categoryD") - ) - ); - } - - private List configurationDmnResponse(boolean canReconfigure) { - return asList( - new ConfigurationDmnEvaluationResponse(stringValue("title"), stringValue("title1"), - booleanValue(false) - ), - new ConfigurationDmnEvaluationResponse(stringValue("description"), stringValue("description"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("caseName"), stringValue("TestCase"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("region"), stringValue("1"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("location"), stringValue("512401"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("locationName"), stringValue("Manchester"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("caseManagementCategory"), stringValue("caseCategory"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("workType"), stringValue("routine_work"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("roleCategory"), stringValue("JUDICIAL"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse( - stringValue("priorityDate"), - stringValue("2021-05-09T20:15"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("minorPriority"), stringValue("1"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("majorPriority"), stringValue("1"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("nextHearingId"), stringValue("nextHearingId1"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse( - stringValue("nextHearingDate"), - stringValue("2021-05-09T20:15"), - booleanValue(canReconfigure) - ) - ); - } - - private RoleAssignment buildRoleAssignment(String actorId, String roleName, List authorisations) { - return RoleAssignment.builder() - .id(UUID.randomUUID().toString()) - .actorIdType(ActorIdType.IDAM) - .actorId(actorId) - .roleName(roleName) - .roleCategory(RoleCategory.LEGAL_OPERATIONS) - .roleType(RoleType.ORGANISATION) - .classification(Classification.PUBLIC) - .authorisations(authorisations) - .grantType(GrantType.STANDARD) - .beginTime(OffsetDateTime.now().minusYears(1)) - .endTime(OffsetDateTime.now().plusYears(1)) - .build(); - } - } diff --git a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/GetTaskByIdControllerTest.java b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/GetTaskByIdControllerTest.java index 16a720c1e9..ff5d4580b9 100644 --- a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/GetTaskByIdControllerTest.java +++ b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/GetTaskByIdControllerTest.java @@ -1,6 +1,7 @@ package uk.gov.hmcts.reform.wataskmanagementapi.controllers; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.parallel.Execution; @@ -24,10 +25,6 @@ import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.enums.Classification; import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.enums.RoleType; import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.response.RoleAssignmentResource; -import uk.gov.hmcts.reform.wataskmanagementapi.cft.enums.BusinessContext; -import uk.gov.hmcts.reform.wataskmanagementapi.cft.enums.CFTTaskState; -import uk.gov.hmcts.reform.wataskmanagementapi.cft.enums.ExecutionType; -import uk.gov.hmcts.reform.wataskmanagementapi.cft.enums.TaskSystem; import uk.gov.hmcts.reform.wataskmanagementapi.clients.CamundaServiceApi; import uk.gov.hmcts.reform.wataskmanagementapi.clients.CcdDataServiceApi; import uk.gov.hmcts.reform.wataskmanagementapi.clients.IdamWebApi; @@ -36,23 +33,18 @@ import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.InitiateTaskRequestMap; import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.options.CompletionOptions; import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.CamundaTime; -import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.SecurityClassification; import uk.gov.hmcts.reform.wataskmanagementapi.domain.ccd.CaseDetails; import uk.gov.hmcts.reform.wataskmanagementapi.domain.enums.TestRolesWithGrantType; -import uk.gov.hmcts.reform.wataskmanagementapi.entity.ExecutionTypeResource; -import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskResource; import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskRoleResource; -import uk.gov.hmcts.reform.wataskmanagementapi.entity.WorkTypeResource; import uk.gov.hmcts.reform.wataskmanagementapi.services.CFTTaskDatabaseService; import uk.gov.hmcts.reform.wataskmanagementapi.utils.ServiceMocks; +import uk.gov.hmcts.reform.wataskmanagementapi.utils.TaskTestUtils; -import java.time.OffsetDateTime; import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.UUID; import static java.util.Arrays.asList; @@ -109,15 +101,18 @@ class GetTaskByIdControllerTest extends SpringBootIntegrationBaseTest { @Mock private CaseDetails caseDetails; + TaskTestUtils taskTestUtils; - - private String taskId; private ServiceMocks mockServices; + @BeforeAll + void init() { + taskTestUtils = new TaskTestUtils(cftTaskDatabaseService); + } + @BeforeEach void setUp() { - taskId = UUID.randomUUID().toString(); when(authTokenGenerator.generate()) .thenReturn(IDAM_AUTHORIZATION_TOKEN); @@ -136,13 +131,16 @@ void setUp() { @Test public void should_return_a_200_when_get_by_standard_tribunal_case_worker() throws Exception { + + String taskId = UUID.randomUUID().toString(); TaskRoleResource taskRoleResource = new TaskRoleResource( TestRolesWithGrantType.STANDARD_TRIBUNAL_CASE_WORKER_PUBLIC.getRoleName(), true, true, false, true, true, false, new String[]{}, 1, false, TestRolesWithGrantType.STANDARD_TRIBUNAL_CASE_WORKER_PUBLIC.getRoleCategory().name() ); - insertDummyTaskInDb("WA", "WaCaseType", taskId, taskRoleResource); + + taskTestUtils.insertDummyTaskInDb("WA", "WaCaseType", "caseId1",taskId,UNASSIGNED, taskRoleResource,null,null); List roles = new ArrayList<>(); @@ -180,13 +178,17 @@ public void should_return_a_200_when_get_by_standard_tribunal_case_worker() thro @Test public void should_return_a_200_when_get_by_standard_judge() throws Exception { + String taskId = UUID.randomUUID().toString(); + TaskRoleResource taskRoleResource = new TaskRoleResource( TestRolesWithGrantType.STANDARD_JUDGE_PUBLIC.getRoleName(), true, true, false, true, true, false, new String[]{}, 1, false, TestRolesWithGrantType.STANDARD_JUDGE_PUBLIC.getRoleCategory().name() ); - insertDummyTaskInDb("WA", "WaCaseType", taskId, taskRoleResource); + + taskTestUtils.insertDummyTaskInDb("WA", "WaCaseType", "caseId1",taskId,UNASSIGNED, taskRoleResource,null,null); + List roles = new ArrayList<>(); @@ -224,13 +226,16 @@ public void should_return_a_200_when_get_by_standard_judge() throws Exception { @Test public void should_return_a_200_when_get_by_challenge_access_admin() throws Exception { + + String taskId = UUID.randomUUID().toString(); + TaskRoleResource taskRoleResource = new TaskRoleResource( TestRolesWithGrantType.CHALLENGED_ACCESS_ADMIN.getRoleName(), true, true, false, true, true, false, new String[]{}, 1, false, TestRolesWithGrantType.CHALLENGED_ACCESS_ADMIN.getRoleCategory().name() ); - insertDummyTaskInDb("WA", "WaCaseType", taskId, taskRoleResource); + taskTestUtils.insertDummyTaskInDb("WA", "WaCaseType", "caseId1",taskId,UNASSIGNED, taskRoleResource,null,null); List roles = new ArrayList<>(); @@ -270,6 +275,8 @@ public void should_return_a_200_when_get_by_challenge_access_admin() throws Exce @Test void should_return_a_404_when_id_is_not_found() throws Exception { + final String taskId = UUID.randomUUID().toString(); + mockServices.mockUserInfo(); final List roleNames = singletonList("tribunal-caseworker"); @@ -379,7 +386,8 @@ public void should_return_a_404_if_task_does_not_exist() throws Exception { @Test void should_return_a_403_when_restricted_role_is_given() throws Exception { - createTaskAndRoleAssignments(UNASSIGNED, "getTaskCaseId1"); + final String taskId = taskTestUtils.createTaskAndRoleAssignments(UNASSIGNED, "getTaskCaseId1",null,null); + mockServices.mockUserInfo(); final List roleNames = singletonList("tribunal-caseworker"); @@ -421,7 +429,7 @@ void should_return_a_403_when_restricted_role_is_given() throws Exception { @Test public void should_return_a_403_when_the_user_jurisdiction_did_not_match() throws Exception { - createTaskAndRoleAssignments(UNASSIGNED, "getTaskCaseId2"); + final String taskId = taskTestUtils.createTaskAndRoleAssignments(UNASSIGNED, "getTaskCaseId2",null,null); mockServices.mockUserInfo(); @@ -457,13 +465,16 @@ public void should_return_a_403_when_the_user_jurisdiction_did_not_match() throw @Test public void should_return_a_403_when_the_user_region_did_not_match() throws Exception { + String taskId = UUID.randomUUID().toString(); TaskRoleResource taskRoleResource = new TaskRoleResource( TestRolesWithGrantType.STANDARD_TRIBUNAL_CASE_WORKER_PUBLIC.getRoleName(), true, true, false, true, true, false, new String[]{}, 1, false, TestRolesWithGrantType.STANDARD_TRIBUNAL_CASE_WORKER_PUBLIC.getRoleCategory().name() ); - insertDummyTaskInDb("WA", "WaCaseType", taskId, taskRoleResource); + + taskTestUtils.insertDummyTaskInDb("WA", "WaCaseType", "caseId1",taskId,UNASSIGNED, taskRoleResource,null,null); + List roles = new ArrayList<>(); @@ -513,6 +524,8 @@ public void should_return_a_403_when_the_user_region_did_not_match() throws Exce @Execution(ExecutionMode.CONCURRENT) void should_return_404_when_initiation_request_failed_to_retrieve_data_from_ccd() throws Exception { + final String taskId = UUID.randomUUID().toString(); + when(clientAccessControlService.hasExclusiveAccess(SERVICE_AUTHORIZATION_TOKEN)) .thenReturn(true); String systemUserToken = "Token" + UUID.randomUUID(); @@ -631,6 +644,7 @@ void should_return_404_when_initiation_request_failed_to_retrieve_data_from_ccd( @Test public void should_return_different_permissions_when_given_case_role_assignment() throws Exception { String caseId = UUID.randomUUID().toString(); + String taskId = UUID.randomUUID().toString(); TaskRoleResource taskRoleResource = new TaskRoleResource( TestRolesWithGrantType.STANDARD_TRIBUNAL_CASE_WORKER_PUBLIC.getRoleName(), @@ -645,7 +659,9 @@ public void should_return_different_permissions_when_given_case_role_assignment( new String[]{}, 1, false, TestRolesWithGrantType.SPECIFIC_CASE_MANAGER.getRoleCategory().name() ); - insertDummyTaskInDb("WA", "WaCaseType", taskId, Set.of(taskRoleResource, taskRoleResourceCase), "caseId1"); + + taskTestUtils.insertDummyTaskInDb("WA", "WaCaseType", "caseId1",taskId,UNASSIGNED, + taskRoleResourceCase,null,null); String taskId2 = UUID.randomUUID().toString(); TaskRoleResource taskRoleResource2 = new TaskRoleResource( @@ -654,7 +670,8 @@ public void should_return_different_permissions_when_given_case_role_assignment( new String[]{}, 1, false, TestRolesWithGrantType.STANDARD_TRIBUNAL_CASE_WORKER_PUBLIC.getRoleCategory().name() ); - insertDummyTaskInDb("WA", "WaCaseType", taskId2, taskRoleResource); + taskTestUtils.insertDummyTaskInDb("WA", "WaCaseType", "caseId1",taskId2,UNASSIGNED, taskRoleResource,null,null); + List roles = new ArrayList<>(); @@ -722,136 +739,5 @@ public void should_return_different_permissions_when_given_case_role_assignment( ); } - private void insertDummyTaskInDb(String jurisdiction, - String caseType, - String caseId, - String taskId, CFTTaskState cftTaskState, - TaskRoleResource taskRoleResource) { - TaskResource taskResource = new TaskResource( - taskId, - "someTaskName", - "someTaskType", - cftTaskState - ); - taskResource.setCreated(OffsetDateTime.now()); - taskResource.setDueDateTime(OffsetDateTime.now()); - taskResource.setJurisdiction(jurisdiction); - taskResource.setCaseTypeId(caseType); - taskResource.setSecurityClassification(SecurityClassification.PUBLIC); - taskResource.setLocation("765324"); - taskResource.setLocationName("Taylor House"); - taskResource.setRegion("TestRegion"); - taskResource.setCaseId(caseId); - - taskRoleResource.setTaskId(taskId); - Set taskRoleResourceSet = Set.of(taskRoleResource); - taskResource.setTaskRoleResources(taskRoleResourceSet); - cftTaskDatabaseService.saveTask(taskResource); - } - - private void insertDummyTaskInDb(String jurisdiction, - String caseType, - String taskId, - TaskRoleResource taskRoleResource) { - insertDummyTaskInDb(jurisdiction, caseType, taskId, Set.of(taskRoleResource), "caseId1"); - } - - private void insertDummyTaskInDb(String jurisdiction, - String caseType, - String taskId, - Set taskRoleResources, String caseId) { - TaskResource taskResource = new TaskResource( - taskId, - "someTaskName", - "someTaskType", - UNASSIGNED - ); - taskResource.setCreated(OffsetDateTime.now()); - taskResource.setDueDateTime(OffsetDateTime.now()); - taskResource.setJurisdiction(jurisdiction); - taskResource.setCaseTypeId(caseType); - taskResource.setSecurityClassification(SecurityClassification.PUBLIC); - taskResource.setLocation("765324"); - taskResource.setLocationName("Taylor House"); - taskResource.setRegion("TestRegion"); - taskResource.setCaseId(caseId); - - taskRoleResources.forEach(t -> t.setTaskId(taskId)); - Set taskRoleResourceSet = taskRoleResources; - taskResource.setTaskRoleResources(taskRoleResourceSet); - cftTaskDatabaseService.saveTask(taskResource); - } - - - private void createTaskAndRoleAssignments(CFTTaskState cftTaskState, String caseId) { - //assigner permission : manage, own, cancel - TaskRoleResource assignerTaskRoleResource = new TaskRoleResource( - TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE.getRoleName(), - false, true, true, true, true, false, - new String[]{}, 1, false, - TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE.getRoleCategory().name() - ); - String jurisdiction = "IA"; - String caseType = "Asylum"; - insertDummyTaskInDb(jurisdiction, caseType, caseId, taskId, cftTaskState, assignerTaskRoleResource); - - List assignerRoles = new ArrayList<>(); - - RoleAssignmentRequest roleAssignmentRequest = RoleAssignmentRequest.builder() - .testRolesWithGrantType(TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE) - .roleAssignmentAttribute( - RoleAssignmentAttribute.builder() - .jurisdiction(jurisdiction) - .caseType(caseType) - .caseId(caseId) - .build() - ) - .build(); - - createRoleAssignment(assignerRoles, roleAssignmentRequest); - } - - private TaskResource createTask(String taskId, Set taskRoleResources, - String caseId) { - return new TaskResource( - taskId, - "aTaskName", - "startAppeal", - OffsetDateTime.parse("2022-05-09T20:15:45.345875+01:00"), - CFTTaskState.ASSIGNED, - TaskSystem.SELF, - SecurityClassification.PUBLIC, - "title", - "a description", - null, - 0, - 0, - "someAssignee", - false, - new ExecutionTypeResource(ExecutionType.MANUAL, "Manual", "Manual Description"), - new WorkTypeResource("routine_work", "Routine work"), - "JUDICIAL", - false, - OffsetDateTime.parse("2022-05-09T20:15:45.345875+01:00"), - caseId, - "WaCaseType", - "TestCase", - "WA", - "1", - "TestRegion", - "765324", - "Taylor House", - BusinessContext.CFT_TASK, - "Some termination reason", - OffsetDateTime.parse("2021-05-09T20:15:45.345875+01:00"), - taskRoleResources, - "caseCategory", - ADDITIONAL_PROPERTIES, - "nextHearingId", - OffsetDateTime.parse("2021-05-09T20:15:45.345875+01:00"), - OffsetDateTime.parse("2021-05-09T20:15:45.345875+01:00") - ); - } - } diff --git a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/MarkReconfigurationTaskOperationControllerTest.java b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/MarkReconfigurationTaskOperationControllerTest.java index 72f847b304..ba873f7403 100644 --- a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/MarkReconfigurationTaskOperationControllerTest.java +++ b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/MarkReconfigurationTaskOperationControllerTest.java @@ -1,6 +1,7 @@ package uk.gov.hmcts.reform.wataskmanagementapi.controllers; import jakarta.persistence.OptimisticLockException; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -15,7 +16,6 @@ import uk.gov.hmcts.reform.wataskmanagementapi.auth.idam.entities.UserIdamTokenGeneratorInfo; import uk.gov.hmcts.reform.wataskmanagementapi.auth.idam.entities.UserInfo; import uk.gov.hmcts.reform.wataskmanagementapi.auth.restrict.ClientAccessControlService; -import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.RoleAssignment; import uk.gov.hmcts.reform.wataskmanagementapi.cft.enums.CFTTaskState; import uk.gov.hmcts.reform.wataskmanagementapi.clients.IdamWebApi; import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.TaskOperationRequest; @@ -26,20 +26,15 @@ import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.enums.TaskOperationType; import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.CamundaValue; import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.ConfigurationDmnEvaluationResponse; -import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.SecurityClassification; -import uk.gov.hmcts.reform.wataskmanagementapi.domain.enums.TestRolesWithGrantType; import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskResource; -import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskRoleResource; import uk.gov.hmcts.reform.wataskmanagementapi.enums.TaskAction; import uk.gov.hmcts.reform.wataskmanagementapi.services.CFTTaskDatabaseService; import uk.gov.hmcts.reform.wataskmanagementapi.services.CaseConfigurationProviderService; +import uk.gov.hmcts.reform.wataskmanagementapi.utils.TaskTestUtils; import java.time.LocalDate; -import java.time.OffsetDateTime; -import java.util.ArrayList; import java.util.List; import java.util.Optional; -import java.util.Set; import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -84,12 +79,17 @@ class MarkReconfigurationTaskOperationControllerTest extends SpringBootIntegrati @Autowired private IdamTokenGenerator systemUserIdamToken; - private String taskId; + TaskTestUtils taskTestUtils; + private String bearerAccessToken1; + @BeforeAll + void init() { + taskTestUtils = new TaskTestUtils(cftTaskDatabaseService); + } + @BeforeEach void setUp() { - taskId = UUID.randomUUID().toString(); bearerAccessToken1 = "Token" + UUID.randomUUID(); when(idamWebApi.token(any())).thenReturn(new Token(bearerAccessToken1, "Scope")); when(idamWebApi.userInfo(any())).thenReturn(UserInfo.builder().uid(SYSTEM_USER_1).build()); @@ -110,7 +110,7 @@ void setUp() { @Test void should_perform_mark_to_reconfigure_if_tasks_status_is_assigned() throws Exception { - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, "caseId0"); + taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, "caseId0",null,null); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) @@ -133,7 +133,7 @@ void should_perform_mark_to_reconfigure_if_tasks_status_is_assigned() throws Exc @Test void should_not_perform_mark_to_reconfigure_if_tasks_were_already_marked() throws Exception { - createTaskAndRoleAssignments(UNASSIGNED, "caseId2"); + taskTestUtils.createTaskAndRoleAssignments(UNASSIGNED, "caseId2",null,null); mockMvc.perform( post(ENDPOINT_BEING_TESTED) @@ -175,7 +175,7 @@ void should_not_perform_mark_to_reconfigure_if_tasks_were_already_marked() throw @Test void should_perform_mark_to_reconfigure_if_tasks_status_is_unassigned() throws Exception { - createTaskAndRoleAssignments(UNASSIGNED, "caseId3"); + taskTestUtils.createTaskAndRoleAssignments(UNASSIGNED, "caseId3",null,null); mockMvc.perform( post(ENDPOINT_BEING_TESTED) .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) @@ -198,7 +198,7 @@ void should_perform_mark_to_reconfigure_if_tasks_status_is_unassigned() throws E @Test void should_not_perform_mark_to_reconfigure_if_tasks_status_is_not_active() throws Exception { - createTaskAndRoleAssignments(CANCELLED, "caseId4"); + taskTestUtils.createTaskAndRoleAssignments(CANCELLED, "caseId4",null,null); mockMvc.perform( post(ENDPOINT_BEING_TESTED) @@ -252,7 +252,7 @@ void should_not_perform_mark_to_reconfigure_if_no_tasks_found() throws Exception @Test void should_not_perform_mark_to_reconfigure_if_tasks_is_locked_by_another_process() throws Exception { - createTaskAndRoleAssignments(ASSIGNED, "caseId6"); + taskTestUtils.createTaskAndRoleAssignments(ASSIGNED, "caseId6",null,null); List taskResourcesTobeLocked = cftTaskDatabaseService.findByCaseIdOnly("caseId6"); taskResourcesTobeLocked.stream().forEach(task -> { @@ -282,9 +282,8 @@ void should_not_perform_mark_to_reconfigure_if_tasks_is_locked_by_another_proces @Test void should_partially_perform_mark_to_reconfigure_when_one_of_task_is_locked_by_another_process() throws Exception { - createTaskAndRoleAssignments(ASSIGNED, "caseId7"); - taskId = UUID.randomUUID().toString(); - createTaskAndRoleAssignments(UNASSIGNED, "caseId7"); + taskTestUtils.createTaskAndRoleAssignments(ASSIGNED, "caseId7",null,null); + taskTestUtils.createTaskAndRoleAssignments(UNASSIGNED, "caseId7",null,null); List taskResourcesTobeLocked = cftTaskDatabaseService.findByCaseIdOnly("caseId7"); when(cftTaskDatabaseService.findByIdAndStateInObtainPessimisticWriteLock( @@ -322,13 +321,10 @@ void should_partially_perform_mark_to_reconfigure_when_one_of_task_is_locked_by_ void should_partially_perform_mark_to_reconfigure_when_some_of_tasks_failed_to_be_marked_to_reconfigure() throws Exception { //4 tasks - createTaskAndRoleAssignments(ASSIGNED, "caseId8"); - taskId = UUID.randomUUID().toString(); - createTaskAndRoleAssignments(ASSIGNED, "caseId8"); - taskId = UUID.randomUUID().toString(); - createTaskAndRoleAssignments(UNASSIGNED, "caseId8"); - taskId = UUID.randomUUID().toString(); - createTaskAndRoleAssignments(UNASSIGNED, "caseId8"); + taskTestUtils.createTaskAndRoleAssignments(ASSIGNED, "caseId8",null,null); + taskTestUtils.createTaskAndRoleAssignments(ASSIGNED, "caseId8",null,null); + taskTestUtils.createTaskAndRoleAssignments(UNASSIGNED, "caseId8",null,null); + taskTestUtils.createTaskAndRoleAssignments(UNASSIGNED, "caseId8",null,null); //2 tasks failed, 2 tasks succeeded List taskResourcesTobeLocked = cftTaskDatabaseService.findByCaseIdOnly("caseId8"); @@ -412,7 +408,7 @@ void should_partially_perform_mark_to_reconfigure_when_some_of_tasks_failed_to_b @Test void should_retry_and_perform_mark_to_reconfigure_if_first_attempt_failed_to_mark_task_to_reconfigure() throws Exception { - createTaskAndRoleAssignments(ASSIGNED, "caseId9"); + taskTestUtils.createTaskAndRoleAssignments(ASSIGNED, "caseId9",null,null); List taskResourcesTobeLocked = cftTaskDatabaseService.findByCaseIdOnly("caseId9"); taskResourcesTobeLocked.stream().forEach(task -> { @@ -444,13 +440,10 @@ void should_retry_and_perform_mark_to_reconfigure_if_first_attempt_failed_to_mar void should_retry_and_perform_mark_to_reconfigure_when_first_attempt_failed_to_mark_multiple_tasks_to_be_reconfigurable() throws Exception { //4 tasks - createTaskAndRoleAssignments(ASSIGNED, "caseId10"); - taskId = UUID.randomUUID().toString(); - createTaskAndRoleAssignments(ASSIGNED, "caseId10"); - taskId = UUID.randomUUID().toString(); - createTaskAndRoleAssignments(UNASSIGNED, "caseId10"); - taskId = UUID.randomUUID().toString(); - createTaskAndRoleAssignments(UNASSIGNED, "caseId10"); + taskTestUtils.createTaskAndRoleAssignments(ASSIGNED, "caseId10",null,null); + taskTestUtils.createTaskAndRoleAssignments(ASSIGNED, "caseId10",null,null); + taskTestUtils.createTaskAndRoleAssignments(ASSIGNED, "caseId10",null,null); + taskTestUtils.createTaskAndRoleAssignments(ASSIGNED, "caseId10",null,null); //2 tasks failed, 2 tasks succeeded List taskResourcesTobeLocked = cftTaskDatabaseService.findByCaseIdOnly("caseId10"); @@ -512,59 +505,4 @@ private List> taskFilters(String caseId) { return List.of(filter); } - private void insertDummyTaskInDb(String jurisdiction, - String caseType, - String caseId, - String taskId, CFTTaskState cftTaskState, - TaskRoleResource taskRoleResource) { - TaskResource taskResource = new TaskResource( - taskId, - "someTaskName", - "someTaskType", - cftTaskState - ); - taskResource.setCreated(OffsetDateTime.now()); - taskResource.setDueDateTime(OffsetDateTime.now()); - taskResource.setJurisdiction(jurisdiction); - taskResource.setCaseTypeId(caseType); - taskResource.setSecurityClassification(SecurityClassification.PUBLIC); - taskResource.setLocation("765324"); - taskResource.setLocationName("Taylor House"); - taskResource.setRegion("TestRegion"); - taskResource.setCaseId(caseId); - - taskRoleResource.setTaskId(taskId); - Set taskRoleResourceSet = Set.of(taskRoleResource); - taskResource.setTaskRoleResources(taskRoleResourceSet); - cftTaskDatabaseService.saveTask(taskResource); - } - - private void createTaskAndRoleAssignments(CFTTaskState cftTaskState, String caseId) { - //assigner permission : manage, own, cancel - TaskRoleResource assignerTaskRoleResource = new TaskRoleResource( - TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE.getRoleName(), - false, true, true, true, true, false, - new String[]{}, 1, false, - TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE.getRoleCategory().name() - ); - String jurisdiction = "IA"; - String caseType = "Asylum"; - insertDummyTaskInDb(jurisdiction, caseType, caseId, taskId, cftTaskState, assignerTaskRoleResource); - - List assignerRoles = new ArrayList<>(); - - RoleAssignmentRequest roleAssignmentRequest = RoleAssignmentRequest.builder() - .testRolesWithGrantType(TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE) - .roleAssignmentAttribute( - RoleAssignmentAttribute.builder() - .jurisdiction(jurisdiction) - .caseType(caseType) - .caseId(caseId) - .build() - ) - .build(); - - createRoleAssignment(assignerRoles, roleAssignmentRequest); - } - } diff --git a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/UpdateSearchIndexTaskOperationControllerTest.java b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/UpdateSearchIndexTaskOperationControllerTest.java index dd133a17d5..c22e7f5a6b 100644 --- a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/UpdateSearchIndexTaskOperationControllerTest.java +++ b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/controllers/UpdateSearchIndexTaskOperationControllerTest.java @@ -1,5 +1,6 @@ package uk.gov.hmcts.reform.wataskmanagementapi.controllers; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.http.HttpStatus; @@ -11,21 +12,14 @@ import uk.gov.hmcts.reform.wataskmanagementapi.auth.idam.entities.UserIdamTokenGeneratorInfo; import uk.gov.hmcts.reform.wataskmanagementapi.auth.idam.entities.UserInfo; import uk.gov.hmcts.reform.wataskmanagementapi.auth.restrict.ClientAccessControlService; -import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.RoleAssignment; -import uk.gov.hmcts.reform.wataskmanagementapi.cft.enums.CFTTaskState; import uk.gov.hmcts.reform.wataskmanagementapi.clients.IdamWebApi; import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.TaskOperationRequest; import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.entities.TaskOperation; -import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.SecurityClassification; -import uk.gov.hmcts.reform.wataskmanagementapi.domain.enums.TestRolesWithGrantType; import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskResource; -import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskRoleResource; import uk.gov.hmcts.reform.wataskmanagementapi.services.CFTTaskDatabaseService; +import uk.gov.hmcts.reform.wataskmanagementapi.utils.TaskTestUtils; -import java.time.OffsetDateTime; -import java.util.ArrayList; import java.util.List; -import java.util.Set; import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -33,6 +27,7 @@ import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static uk.gov.hmcts.reform.wataskmanagementapi.cft.enums.CFTTaskState.UNASSIGNED; import static uk.gov.hmcts.reform.wataskmanagementapi.config.SecurityConfiguration.SERVICE_AUTHORIZATION; import static uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.enums.TaskOperationType.UPDATE_SEARCH_INDEX; import static uk.gov.hmcts.reform.wataskmanagementapi.utils.ServiceMocks.SERVICE_AUTHORIZATION_TOKEN; @@ -55,11 +50,15 @@ class UpdateSearchIndexTaskOperationControllerTest extends SpringBootIntegration @MockitoBean private IdamWebApi idamWebApi; - private String taskId; + TaskTestUtils taskTestUtils; + + @BeforeAll + void init() { + taskTestUtils = new TaskTestUtils(cftTaskDatabaseService); + } @BeforeEach void setUp() { - taskId = UUID.randomUUID().toString(); String bearerAccessToken1 = "Token" + UUID.randomUUID(); when(idamWebApi.token(any())).thenReturn(new Token(bearerAccessToken1, "Scope")); when(idamWebApi.userInfo(any())).thenReturn(UserInfo.builder().uid(SYSTEM_USER_1).build()); @@ -69,7 +68,7 @@ void setUp() { @Test void should_perform_update_index_if_tasks_index_is_false() throws Exception { - createTaskAndRoleAssignments(); + taskTestUtils.createTaskAndRoleAssignments(UNASSIGNED, "getTaskCaseId1",null,null); mockMvc.perform( post(ENDPOINT_BEING_TESTED) @@ -80,7 +79,7 @@ void should_perform_update_index_if_tasks_index_is_false() throws Exception { status().is(HttpStatus.OK.value()) ); - List taskResources = cftTaskDatabaseService.findByCaseIdOnly("caseId"); + List taskResources = cftTaskDatabaseService.findByCaseIdOnly("getTaskCaseId1"); taskResources.forEach(task -> assertTrue(task.getIndexed())); } @@ -92,59 +91,4 @@ private TaskOperationRequest taskOperationRequest() { return new TaskOperationRequest(operation, List.of()); } - private void insertDummyTaskInDb(String jurisdiction, - String caseType, - String taskId, - TaskRoleResource taskRoleResource) { - TaskResource taskResource = new TaskResource( - taskId, - "someTaskName", - "someTaskType", - CFTTaskState.ASSIGNED - ); - taskResource.setCreated(OffsetDateTime.now()); - taskResource.setDueDateTime(OffsetDateTime.now()); - taskResource.setJurisdiction(jurisdiction); - taskResource.setCaseTypeId(caseType); - taskResource.setSecurityClassification(SecurityClassification.PUBLIC); - taskResource.setLocation("765324"); - taskResource.setLocationName("Taylor House"); - taskResource.setRegion("TestRegion"); - taskResource.setCaseId("caseId"); - taskResource.setIndexed(false); - - taskRoleResource.setTaskId(taskId); - Set taskRoleResourceSet = Set.of(taskRoleResource); - taskResource.setTaskRoleResources(taskRoleResourceSet); - cftTaskDatabaseService.saveTask(taskResource); - } - - private void createTaskAndRoleAssignments() { - //assigner permission : manage, own, cancel - TaskRoleResource assignerTaskRoleResource = new TaskRoleResource( - TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE.getRoleName(), - false, true, true, true, true, false, - new String[]{}, 1, false, - TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE.getRoleCategory().name() - ); - String jurisdiction = "IA"; - String caseType = "Asylum"; - insertDummyTaskInDb(jurisdiction, caseType, taskId, assignerTaskRoleResource); - - List assignerRoles = new ArrayList<>(); - - RoleAssignmentRequest roleAssignmentRequest = RoleAssignmentRequest.builder() - .testRolesWithGrantType(TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE) - .roleAssignmentAttribute( - RoleAssignmentAttribute.builder() - .jurisdiction(jurisdiction) - .caseType(caseType) - .caseId("caseId") - .build() - ) - .build(); - - createRoleAssignment(assignerRoles, roleAssignmentRequest); - } - } diff --git a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/services/CFTSensitiveTaskEventLogsDatabaseServiceTest.java b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/services/CFTSensitiveTaskEventLogsDatabaseServiceTest.java index e2fc8dcafd..c38d69305f 100644 --- a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/services/CFTSensitiveTaskEventLogsDatabaseServiceTest.java +++ b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/services/CFTSensitiveTaskEventLogsDatabaseServiceTest.java @@ -72,7 +72,7 @@ void should_process_and_save_sensitive_task_event_log() throws InterruptedExcept ErrorMessages.ROLE_ASSIGNMENT_VERIFICATIONS_FAILED_ASSIGNEE ); - sensitiveTaskEventLogsExecutorService.awaitTermination(200, TimeUnit.MILLISECONDS); + sensitiveTaskEventLogsExecutorService.awaitTermination(300, TimeUnit.MILLISECONDS); Optional sensitiveTaskEventLog = sensitiveTaskEventLogsRepository.getByTaskId(taskId); assertThat(sensitiveTaskEventLog).isPresent(); diff --git a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/services/TaskManagementTimeZoneTest.java b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/services/TaskManagementTimeZoneTest.java index b7f66ed3e4..17c1a0e4f4 100644 --- a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/services/TaskManagementTimeZoneTest.java +++ b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/services/TaskManagementTimeZoneTest.java @@ -2,6 +2,7 @@ import lombok.extern.slf4j.Slf4j; import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @@ -36,36 +37,26 @@ import uk.gov.hmcts.reform.wataskmanagementapi.clients.RoleAssignmentServiceApi; import uk.gov.hmcts.reform.wataskmanagementapi.config.LaunchDarklyFeatureFlagProvider; import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.InitiateTaskRequestMap; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.TaskOperationRequest; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.entities.ExecuteReconfigureTaskFilter; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.entities.MarkTaskToReconfigureTaskFilter; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.entities.TaskFilter; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.entities.TaskOperation; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.enums.TaskFilterOperator; -import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.enums.TaskOperationType; import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.CamundaValue; import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.ConfigurationDmnEvaluationResponse; import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.PermissionsDmnEvaluationResponse; import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.SecurityClassification; import uk.gov.hmcts.reform.wataskmanagementapi.domain.ccd.CaseDetails; -import uk.gov.hmcts.reform.wataskmanagementapi.domain.enums.TestRolesWithGrantType; import uk.gov.hmcts.reform.wataskmanagementapi.entity.ReportableTaskResource; import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskHistoryResource; import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskResource; -import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskRoleResource; import uk.gov.hmcts.reform.wataskmanagementapi.services.utils.TaskMandatoryFieldsValidator; import uk.gov.hmcts.reform.wataskmanagementapi.utils.ServiceMocks; +import uk.gov.hmcts.reform.wataskmanagementapi.utils.TaskTestUtils; import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.time.temporal.ChronoUnit; -import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; import java.util.UUID; import java.util.concurrent.atomic.AtomicReference; @@ -160,13 +151,18 @@ class TaskManagementTimeZoneTest extends ReplicaBaseTest { @MockitoBean private RoleAssignmentService roleAssignmentService; - private String reconfigTaskId; + TaskTestUtils taskTestUtils; private String bearerAccessToken1; public static final String SYSTEM_USER_1 = "system_user1"; public static final String ASSIGNEE_USER = "assigneeUser"; + @BeforeAll + void init() { + taskTestUtils = new TaskTestUtils(cftTaskDatabaseService); + } + @ParameterizedTest @ValueSource(strings = {"UTC", "BST"}) void when_timezone_changes_all_timestamp_attributes_should_behave_consistently(String timeZone) throws Exception { @@ -284,7 +280,7 @@ void when_timezone_changes_reconfig_attributes_should_behave_consistently() thro Map.of("caseAccessCategory", "categoryA,categoryC") ); lenient().when(ccdDataService.getCaseData(anyString())).thenReturn(caseDetails); - RoleAssignment roleAssignmentResource = buildRoleAssignment( + RoleAssignment roleAssignmentResource = taskTestUtils.buildRoleAssignment( ASSIGNEE_USER, "tribunalCaseworker", singletonList("IA") @@ -295,17 +291,18 @@ void when_timezone_changes_reconfig_attributes_should_behave_consistently() thro OffsetDateTime now = OffsetDateTime.now(ZoneOffset.UTC); - reconfigTaskId = UUID.randomUUID().toString(); String caseIdToday = UUID.randomUUID().toString(); OffsetDateTime dueDateTime = OffsetDateTime.now(ZoneOffset.UTC); - createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, ASSIGNEE_USER, caseIdToday, dueDateTime); + String reconfigTaskId = taskTestUtils.createTaskAndRoleAssignments(CFTTaskState.ASSIGNED, caseIdToday, + dueDateTime, ASSIGNEE_USER); doNothing().when(taskMandatoryFieldsValidator).validate(any(TaskResource.class)); mockMvc.perform( post("/task/operation") .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest(MARK_TO_RECONFIGURE, markTaskFilters(caseIdToday)))) + .content(asJsonString(taskTestUtils.taskOperationRequest( + MARK_TO_RECONFIGURE, taskTestUtils.markTaskFilters(caseIdToday)))) ).andExpectAll( status().is(HttpStatus.OK.value()) ); @@ -347,21 +344,21 @@ void when_timezone_changes_reconfig_attributes_should_behave_consistently() thro anyString(), anyString(), anyString(), - anyString())).thenReturn(configurationDmnResponse(true)); + anyString())).thenReturn(taskTestUtils.configurationDmnResponse(true)); when(dmnEvaluationService.evaluateTaskPermissionsDmn( anyString(), anyString(), anyString(), - anyString())).thenReturn(permissionsResponse()); + anyString())).thenReturn(taskTestUtils.permissionsResponse()); when(cftQueryService.getTask(any(), any(), anyList())).thenReturn(Optional.of(taskResourcesBefore.get(0))); mockMvc.perform( post("/task/operation") .header(SERVICE_AUTHORIZATION, SERVICE_AUTHORIZATION_TOKEN) .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(asJsonString(taskOperationRequest( + .content(asJsonString(taskTestUtils.taskOperationRequest( EXECUTE_RECONFIGURE, - executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) + taskTestUtils.executeTaskFilters(OffsetDateTime.now().minusSeconds(30L)) ))) ).andExpectAll( status().is(HttpStatus.OK.value()) @@ -527,181 +524,4 @@ private String initiateTask(ZonedDateTime createdDate) throws Exception { return taskId; } - private void createTaskAndRoleAssignments(CFTTaskState cftTaskState, String assignee, String caseId, - OffsetDateTime dueDateTime) { - - //assigner permission : manage, own, cancel - TaskRoleResource assignerTaskRoleResource = new TaskRoleResource( - TestRolesWithGrantType.STANDARD_TRIBUNAL_CASE_WORKER_PUBLIC.getRoleName(), - false, true, true, true, true, false, - new String[]{"IA"}, 1, true, - TestRolesWithGrantType.SPECIFIC_TRIBUNAL_CASE_WORKER.getRoleCategory().name() - ); - String jurisdiction = "IA"; - String caseType = "Asylum"; - insertDummyTaskInDb(jurisdiction, caseType, caseId, reconfigTaskId, cftTaskState, assignee, dueDateTime, - assignerTaskRoleResource - ); - - List assignerRoles = new ArrayList<>(); - RoleAssignmentRequest roleAssignmentRequest = RoleAssignmentRequest.builder() - .testRolesWithGrantType(TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE) - .roleAssignmentAttribute( - RoleAssignmentAttribute.builder() - .jurisdiction(jurisdiction) - .caseType(caseType) - .caseId(caseId) - .build() - ) - .build(); - - createRoleAssignment(assignerRoles, roleAssignmentRequest); - } - - private void insertDummyTaskInDb(String jurisdiction, - String caseType, - String caseId, - String taskId, - CFTTaskState cftTaskState, - String assignee, - OffsetDateTime dueDateTime, - TaskRoleResource taskRoleResource) { - TaskResource taskResource = new TaskResource( - taskId, - "someTaskName", - "someTaskType", - cftTaskState - ); - taskResource.setCreated(OffsetDateTime.now()); - taskResource.setDueDateTime(dueDateTime); - taskResource.setJurisdiction(jurisdiction); - taskResource.setCaseTypeId(caseType); - taskResource.setSecurityClassification(SecurityClassification.PUBLIC); - taskResource.setLocation("765324"); - taskResource.setLocationName("Taylor House"); - taskResource.setRegion("TestRegion"); - taskResource.setCaseId(caseId); - taskResource.setAssignee(assignee); - taskResource.setTitle("title"); - taskRoleResource.setTaskId(taskId); - Set taskRoleResourceSet = Set.of(taskRoleResource); - taskResource.setTaskRoleResources(taskRoleResourceSet); - cftTaskDatabaseService.saveTask(taskResource); - } - - private TaskOperationRequest taskOperationRequest( - TaskOperationType operationName, List> taskFilters) { - TaskOperation operation = TaskOperation - .builder() - .type(operationName) - .runId(UUID.randomUUID().toString()) - .maxTimeLimit(60) - .retryWindowHours(0) - .build(); - return new TaskOperationRequest(operation, taskFilters); - } - - private List> markTaskFilters(String caseId) { - TaskFilter filter = new MarkTaskToReconfigureTaskFilter( - "case_id", List.of(caseId), TaskFilterOperator.IN - ); - return List.of(filter); - } - - private List configurationDmnResponse(boolean canReconfigure) { - return asList( - new ConfigurationDmnEvaluationResponse(stringValue("title"), stringValue("title1"), - booleanValue(false) - ), - new ConfigurationDmnEvaluationResponse(stringValue("description"), stringValue("description"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("caseName"), stringValue("TestCase"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("region"), stringValue("1"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("location"), stringValue("512401"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("locationName"), stringValue("Manchester"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("caseManagementCategory"), stringValue("caseCategory"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("workType"), stringValue("routine_work"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("roleCategory"), stringValue("JUDICIAL"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse( - stringValue("priorityDate"), - stringValue("2021-05-09T20:15"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("minorPriority"), stringValue("1"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("majorPriority"), stringValue("1"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse(stringValue("nextHearingId"), stringValue("nextHearingId1"), - booleanValue(canReconfigure) - ), - new ConfigurationDmnEvaluationResponse( - stringValue("nextHearingDate"), - stringValue("2021-05-09T20:15"), - booleanValue(canReconfigure) - ) - ); - } - - private List permissionsResponse() { - return asList( - new PermissionsDmnEvaluationResponse( - stringValue("tribunalCaseworker"), - stringValue("Read,Refer,Own,Execute,Manage,Cancel"), - stringValue("IA"), - integerValue(1), - booleanValue(true), - stringValue("LEGAL_OPERATIONS"), - stringValue("categoryA,categoryC") - ), - new PermissionsDmnEvaluationResponse( - stringValue("seniorTribunalCaseworker"), - stringValue("Read,Refer,Own,Execute,Manage,Cancel"), - stringValue("IA"), - integerValue(2), - booleanValue(true), - stringValue("LEGAL_OPERATIONS"), - stringValue("categoryB,categoryD") - ) - ); - } - - private List> executeTaskFilters(OffsetDateTime reconfigureRequestTime) { - TaskFilter filter = new ExecuteReconfigureTaskFilter("reconfigure_request_time", - reconfigureRequestTime, TaskFilterOperator.AFTER - ); - return List.of(filter); - } - - private RoleAssignment buildRoleAssignment(String actorId, String roleName, List authorisations) { - return RoleAssignment.builder() - .id(UUID.randomUUID().toString()) - .actorIdType(ActorIdType.IDAM) - .actorId(actorId) - .roleName(roleName) - .roleCategory(RoleCategory.LEGAL_OPERATIONS) - .roleType(RoleType.ORGANISATION) - .classification(Classification.PUBLIC) - .authorisations(authorisations) - .grantType(GrantType.STANDARD) - .beginTime(OffsetDateTime.now().minusYears(1)) - .endTime(OffsetDateTime.now().plusYears(1)) - .build(); - } } diff --git a/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/utils/TaskTestUtils.java b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/utils/TaskTestUtils.java new file mode 100644 index 0000000000..d8ca5a2863 --- /dev/null +++ b/src/integrationTest/java/uk/gov/hmcts/reform/wataskmanagementapi/utils/TaskTestUtils.java @@ -0,0 +1,351 @@ +package uk.gov.hmcts.reform.wataskmanagementapi.utils; + +import uk.gov.hmcts.reform.wataskmanagementapi.RoleAssignmentHelper; +import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.RoleAssignment; +import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.enums.ActorIdType; +import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.enums.Classification; +import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.enums.GrantType; +import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.enums.RoleCategory; +import uk.gov.hmcts.reform.wataskmanagementapi.auth.role.entities.enums.RoleType; +import uk.gov.hmcts.reform.wataskmanagementapi.cft.enums.CFTTaskState; +import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.TaskOperationRequest; +import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.entities.ExecuteReconfigureTaskFilter; +import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.entities.MarkTaskToReconfigureTaskFilter; +import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.entities.TaskFilter; +import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.entities.TaskOperation; +import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.enums.TaskFilterOperator; +import uk.gov.hmcts.reform.wataskmanagementapi.controllers.request.enums.TaskOperationType; +import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.CamundaValue; +import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.ConfigurationDmnEvaluationResponse; +import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.PermissionsDmnEvaluationResponse; +import uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.SecurityClassification; +import uk.gov.hmcts.reform.wataskmanagementapi.domain.enums.TestRolesWithGrantType; +import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskResource; +import uk.gov.hmcts.reform.wataskmanagementapi.entity.TaskRoleResource; +import uk.gov.hmcts.reform.wataskmanagementapi.services.CFTTaskDatabaseService; + +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import static java.util.Arrays.asList; +import static uk.gov.hmcts.reform.wataskmanagementapi.RoleAssignmentHelper.createRoleAssignment; +import static uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.CamundaValue.booleanValue; +import static uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.CamundaValue.integerValue; +import static uk.gov.hmcts.reform.wataskmanagementapi.domain.camunda.CamundaValue.stringValue; + +public class TaskTestUtils { + + private final CFTTaskDatabaseService cftTaskDatabaseService; + + public TaskTestUtils(CFTTaskDatabaseService cftTaskDatabaseService) { + this.cftTaskDatabaseService = cftTaskDatabaseService; + } + + public String createTaskAndRoleAssignments(CFTTaskState cftTaskState, String caseId,OffsetDateTime dueDateTime, + String assignee) { + String taskId = UUID.randomUUID().toString(); + + // Create TaskRoleResource + TaskRoleResource assignerTaskRoleResource = new TaskRoleResource( + TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE.getRoleName(), + false, true, true, true, true, false, + new String[]{"IA"}, 1, true, + TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE.getRoleCategory().name() + ); + + String jurisdiction = "IA"; + String caseType = "Asylum"; + // Insert dummy task into the database + insertDummyTaskInDb(jurisdiction, caseType, caseId, taskId, cftTaskState, assignerTaskRoleResource,dueDateTime, + assignee); + + // Create role assignments + List assignerRoles = new ArrayList<>(); + RoleAssignmentHelper.RoleAssignmentRequest roleAssignmentRequest = RoleAssignmentHelper + .RoleAssignmentRequest.builder() + .testRolesWithGrantType(TestRolesWithGrantType.SPECIFIC_HEARING_PANEL_JUDGE) + .roleAssignmentAttribute( + RoleAssignmentHelper.RoleAssignmentAttribute.builder() + .jurisdiction("IA") + .caseType("Asylum") + .caseId(caseId) + .build() + ) + .build(); + + createRoleAssignment(assignerRoles, roleAssignmentRequest); + + return taskId; + } + + public void insertDummyTaskInDb(String jurisdiction, + String caseType, + String caseId, + String taskId, CFTTaskState cftTaskState, + TaskRoleResource taskRoleResource, OffsetDateTime dueDateTime, String assignee) { + TaskResource taskResource = new TaskResource( + taskId, + "someTaskName", + "someTaskType", + cftTaskState + ); + taskResource.setCreated(OffsetDateTime.now()); + if (null != dueDateTime) { + taskResource.setDueDateTime(dueDateTime); + } else { + taskResource.setDueDateTime(OffsetDateTime.now()); + } + taskResource.setJurisdiction(jurisdiction); + taskResource.setCaseTypeId(caseType); + taskResource.setSecurityClassification(SecurityClassification.PUBLIC); + taskResource.setLocation("765324"); + taskResource.setLocationName("Taylor House"); + taskResource.setRegion("TestRegion"); + taskResource.setCaseId(caseId); + taskResource.setTitle("title"); + if (null != assignee) { + taskResource.setAssignee(assignee); + } + + taskRoleResource.setTaskId(taskId); + Set taskRoleResourceSet = Set.of(taskRoleResource); + taskResource.setTaskRoleResources(taskRoleResourceSet); + cftTaskDatabaseService.saveTask(taskResource); + } + + public List invalidIntermediateDateCalendarDmnResponse() { + ConfigurationDmnEvaluationResponse calculatedDates = ConfigurationDmnEvaluationResponse.builder() + .name(stringValue("calculatedDates")) + .value(stringValue("nextHearingDate,nonSpecifiedIntDate,hearingDatePreDate,dueDate,priorityDate")) + .build(); + LocalDateTime nextHearingDateLocalDateTime = LocalDateTime.of( + 2022, + 10, + 13, + 18, + 0, + 0 + ); + String nextHearingDateValue = nextHearingDateLocalDateTime + .plusDays(1) + .format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + + ConfigurationDmnEvaluationResponse nextHearingDate = ConfigurationDmnEvaluationResponse.builder() + .name(CamundaValue.stringValue("nextHearingDate")) + .value(CamundaValue.stringValue(nextHearingDateValue)) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + ConfigurationDmnEvaluationResponse hearingDatePreDateOriginRef = ConfigurationDmnEvaluationResponse.builder() + .name(CamundaValue.stringValue("hearingDatePreDateOriginRef")) + .value(CamundaValue.stringValue("nonSpecifiedIntDate")) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + ConfigurationDmnEvaluationResponse hearingDatePreDateIntervalDays = ConfigurationDmnEvaluationResponse + .builder() + .name(CamundaValue.stringValue("hearingDatePreDateIntervalDays")) + .value(CamundaValue.stringValue("5")) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + ConfigurationDmnEvaluationResponse hearingDatePreDateNonWorkingCalendar = ConfigurationDmnEvaluationResponse + .builder() + .name(CamundaValue.stringValue("hearingDatePreDateNonWorkingCalendar")) + .value(CamundaValue.stringValue("https://www.gov.uk/bank-holidays/england-and-wales.json")) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + ConfigurationDmnEvaluationResponse hearingDatePreDateNonWorkingDaysOfWeek = ConfigurationDmnEvaluationResponse + .builder() + .name(CamundaValue.stringValue("hearingDatePreDateNonWorkingDaysOfWeek")) + .value(CamundaValue.stringValue("SATURDAY,SUNDAY")) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + ConfigurationDmnEvaluationResponse hearingDatePreDateSkipNonWorkingDays = ConfigurationDmnEvaluationResponse + .builder() + .name(CamundaValue.stringValue("hearingDatePreDateSkipNonWorkingDays")) + .value(CamundaValue.stringValue("true")) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + ConfigurationDmnEvaluationResponse hearingDatePreDateMustBeWorkingDay = ConfigurationDmnEvaluationResponse + .builder() + .name(CamundaValue.stringValue("hearingDatePreDateMustBeWorkingDay")) + .value(CamundaValue.stringValue("Next")) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + ConfigurationDmnEvaluationResponse dueDateOriginRef = ConfigurationDmnEvaluationResponse.builder() + .name(CamundaValue.stringValue("dueDateOriginRef")) + .value(CamundaValue.stringValue("nextHearingDate")) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + ConfigurationDmnEvaluationResponse dueDateIntervalDays = ConfigurationDmnEvaluationResponse.builder() + .name(CamundaValue.stringValue("dueDateIntervalDays")) + .value(CamundaValue.stringValue("21")) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + ConfigurationDmnEvaluationResponse dueDateNonWorkingCalendar = ConfigurationDmnEvaluationResponse.builder() + .name(CamundaValue.stringValue("dueDateNonWorkingCalendar")) + .value(CamundaValue.stringValue("https://www.gov.uk/bank-holidays/england-and-wales.json")) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + ConfigurationDmnEvaluationResponse dueDateNonWorkingDaysOfWeek = ConfigurationDmnEvaluationResponse.builder() + .name(CamundaValue.stringValue("dueDateNonWorkingDaysOfWeek")) + .value(CamundaValue.stringValue("SATURDAY,SUNDAY")) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + ConfigurationDmnEvaluationResponse dueDateSkipNonWorkingDays = ConfigurationDmnEvaluationResponse.builder() + .name(CamundaValue.stringValue("dueDateSkipNonWorkingDays")) + .value(CamundaValue.stringValue("true")) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + ConfigurationDmnEvaluationResponse dueDateMustBeWorkingDay = ConfigurationDmnEvaluationResponse.builder() + .name(CamundaValue.stringValue("dueDateMustBeWorkingDay")) + .value(CamundaValue.stringValue("Next")) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + ConfigurationDmnEvaluationResponse priorityDateOriginEarliest = ConfigurationDmnEvaluationResponse.builder() + .name(CamundaValue.stringValue("priorityDateOriginLatest")) + .value(CamundaValue.stringValue("hearingDatePreDate,dueDate")) + .canReconfigure(CamundaValue.booleanValue(true)) + .build(); + + return List.of( + calculatedDates, nextHearingDate, hearingDatePreDateOriginRef, + hearingDatePreDateIntervalDays, hearingDatePreDateNonWorkingCalendar, + hearingDatePreDateNonWorkingDaysOfWeek, hearingDatePreDateSkipNonWorkingDays, + hearingDatePreDateMustBeWorkingDay, dueDateOriginRef, dueDateIntervalDays, + dueDateNonWorkingCalendar, dueDateMustBeWorkingDay, dueDateNonWorkingDaysOfWeek, + dueDateSkipNonWorkingDays, priorityDateOriginEarliest + ); + } + + public TaskOperationRequest taskOperationRequest(TaskOperationType operationName, List> taskFilters) { + TaskOperation operation = TaskOperation + .builder() + .type(operationName) + .runId(UUID.randomUUID().toString()) + .maxTimeLimit(60) + .retryWindowHours(0) + .build(); + return new TaskOperationRequest(operation, taskFilters); + } + + public List> executeTaskFilters(OffsetDateTime reconfigureRequestTime) { + TaskFilter filter = new ExecuteReconfigureTaskFilter("reconfigure_request_time", + reconfigureRequestTime, TaskFilterOperator.AFTER + ); + return List.of(filter); + } + + public List> markTaskFilters(String caseId) { + TaskFilter filter = new MarkTaskToReconfigureTaskFilter( + "case_id", List.of(caseId), TaskFilterOperator.IN + ); + return List.of(filter); + } + + public List permissionsResponse() { + return asList( + new PermissionsDmnEvaluationResponse( + stringValue("tribunalCaseworker"), + stringValue("Read,Refer,Own,Execute,Manage,Cancel"), + stringValue("IA"), + integerValue(1), + booleanValue(true), + stringValue("LEGAL_OPERATIONS"), + stringValue("categoryA,categoryC") + ), + new PermissionsDmnEvaluationResponse( + stringValue("seniorTribunalCaseworker"), + stringValue("Read,Refer,Own,Execute,Manage,Cancel"), + stringValue("IA"), + integerValue(2), + booleanValue(true), + stringValue("LEGAL_OPERATIONS"), + stringValue("categoryB,categoryD") + ) + ); + } + + public List configurationDmnResponse(boolean canReconfigure) { + return asList( + new ConfigurationDmnEvaluationResponse(stringValue("title"), stringValue("title1"), + booleanValue(false) + ), + new ConfigurationDmnEvaluationResponse(stringValue("description"), stringValue("description"), + booleanValue(canReconfigure) + ), + new ConfigurationDmnEvaluationResponse(stringValue("caseName"), stringValue("TestCase"), + booleanValue(canReconfigure) + ), + new ConfigurationDmnEvaluationResponse(stringValue("region"), stringValue("1"), + booleanValue(canReconfigure) + ), + new ConfigurationDmnEvaluationResponse(stringValue("location"), stringValue("512401"), + booleanValue(canReconfigure) + ), + new ConfigurationDmnEvaluationResponse(stringValue("locationName"), stringValue("Manchester"), + booleanValue(canReconfigure) + ), + new ConfigurationDmnEvaluationResponse(stringValue("caseManagementCategory"), stringValue("caseCategory"), + booleanValue(canReconfigure) + ), + new ConfigurationDmnEvaluationResponse(stringValue("workType"), stringValue("routine_work"), + booleanValue(canReconfigure) + ), + new ConfigurationDmnEvaluationResponse(stringValue("roleCategory"), stringValue("JUDICIAL"), + booleanValue(canReconfigure) + ), + new ConfigurationDmnEvaluationResponse( + stringValue("priorityDate"), + stringValue("2021-05-09T20:15"), + booleanValue(canReconfigure) + ), + new ConfigurationDmnEvaluationResponse(stringValue("minorPriority"), stringValue("1"), + booleanValue(canReconfigure) + ), + new ConfigurationDmnEvaluationResponse(stringValue("majorPriority"), stringValue("1"), + booleanValue(canReconfigure) + ), + new ConfigurationDmnEvaluationResponse(stringValue("nextHearingId"), stringValue("nextHearingId1"), + booleanValue(canReconfigure) + ), + new ConfigurationDmnEvaluationResponse( + stringValue("nextHearingDate"), + stringValue("2021-05-09T20:15"), + booleanValue(canReconfigure) + ) + ); + } + + public RoleAssignment buildRoleAssignment(String actorId, String roleName, List authorisations) { + return RoleAssignment.builder() + .id(UUID.randomUUID().toString()) + .actorIdType(ActorIdType.IDAM) + .actorId(actorId) + .roleName(roleName) + .roleCategory(RoleCategory.LEGAL_OPERATIONS) + .roleType(RoleType.ORGANISATION) + .classification(Classification.PUBLIC) + .authorisations(authorisations) + .grantType(GrantType.STANDARD) + .beginTime(OffsetDateTime.now().minusYears(1)) + .endTime(OffsetDateTime.now().plusYears(1)) + .build(); + } +} diff --git a/src/testUtils/java/uk/gov/hmcts/reform/wataskmanagementapi/RoleAssignmentHelper.java b/src/testUtils/java/uk/gov/hmcts/reform/wataskmanagementapi/RoleAssignmentHelper.java index 700d17b170..d76c6d0c28 100644 --- a/src/testUtils/java/uk/gov/hmcts/reform/wataskmanagementapi/RoleAssignmentHelper.java +++ b/src/testUtils/java/uk/gov/hmcts/reform/wataskmanagementapi/RoleAssignmentHelper.java @@ -24,8 +24,8 @@ public abstract class RoleAssignmentHelper { protected static final String SSCS_JURISDICTION = "SSCS"; protected static final String PRIMARY_LOCATION = "765324"; - protected static List createRoleAssignment(List roleAssignments, - RoleAssignmentRequest roleAssignmentRequest) { + public static List createRoleAssignment(List roleAssignments, + RoleAssignmentRequest roleAssignmentRequest) { Map attributes = createAttributes(roleAssignmentRequest.getRoleAssignmentAttribute()); @@ -89,7 +89,7 @@ private static Map createAttributes(RoleAssignmentAttribute attr @Builder @Getter - protected static class RoleAssignmentRequest { + public static class RoleAssignmentRequest { private TestRolesWithGrantType testRolesWithGrantType; private RoleAssignmentAttribute roleAssignmentAttribute; @@ -100,7 +100,7 @@ protected static class RoleAssignmentRequest { @Builder @Getter - protected static class RoleAssignmentAttribute { + public static class RoleAssignmentAttribute { private String jurisdiction; private String caseType;