Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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());
Expand All @@ -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);

Expand All @@ -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))
Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -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());

Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -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))
Expand Down Expand Up @@ -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<TaskRoleResource> 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<RoleAssignment> 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);
}
}

Loading