TSK-1814: structured acceptance tests in packages
This commit is contained in:
parent
68fc1d62b4
commit
a0fe4ea468
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.classification;
|
package acceptance.classification.create;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.classification;
|
package acceptance.classification.delete;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.classification;
|
package acceptance.classification.get;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.classification;
|
package acceptance.classification.query;
|
||||||
|
|
||||||
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.classification;
|
package acceptance.classification.query;
|
||||||
|
|
||||||
import static java.lang.String.CASE_INSENSITIVE_ORDER;
|
import static java.lang.String.CASE_INSENSITIVE_ORDER;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.classification;
|
package acceptance.classification.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.classification;
|
package acceptance.classification.update;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
import static org.assertj.core.api.Assertions.assertThatCode;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.security;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
@ -16,9 +16,9 @@ import pro.taskana.common.test.security.WithAccessId;
|
||||||
|
|
||||||
/** Acceptance test for task queries and authorization. */
|
/** Acceptance test for task queries and authorization. */
|
||||||
@ExtendWith(JaasExtension.class)
|
@ExtendWith(JaasExtension.class)
|
||||||
class TaskEngineAccTest extends AbstractAccTest {
|
class TaskanaSecurityAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
TaskEngineAccTest() {
|
TaskanaSecurityAccTest() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
package acceptance.task;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
import acceptance.AbstractAccTest;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
|
|
||||||
import pro.taskana.common.api.BulkOperationResults;
|
|
||||||
import pro.taskana.common.api.exceptions.TaskanaException;
|
|
||||||
import pro.taskana.common.test.security.JaasExtension;
|
|
||||||
import pro.taskana.common.test.security.WithAccessId;
|
|
||||||
import pro.taskana.task.api.models.Task;
|
|
||||||
import pro.taskana.task.api.models.TaskSummary;
|
|
||||||
|
|
||||||
/** Acceptance test for planned and prio of all tasks. */
|
|
||||||
@ExtendWith(JaasExtension.class)
|
|
||||||
class ServiceLevelOfAllTasksAccTest extends AbstractAccTest {
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
|
||||||
@Test
|
|
||||||
void testSetPlannedPropertyOnAllTasks() throws Exception {
|
|
||||||
Instant planned = getInstant("2020-05-03T07:00:00");
|
|
||||||
List<TaskSummary> allTasks = taskService.createTaskQuery().list();
|
|
||||||
// Now update each task with updateTask() and new planned
|
|
||||||
final List<TaskSummary> individuallyUpdatedTasks = new ArrayList<>();
|
|
||||||
allTasks.forEach(t -> individuallyUpdatedTasks.add(getUpdatedTaskSummary(t, planned)));
|
|
||||||
// reset DB and do the same with bulk update
|
|
||||||
resetDb(false);
|
|
||||||
List<String> taskIds = allTasks.stream().map(TaskSummary::getId).collect(Collectors.toList());
|
|
||||||
BulkOperationResults<String, TaskanaException> bulkLog =
|
|
||||||
taskService.setPlannedPropertyOfTasks(planned, taskIds);
|
|
||||||
// check that there was no error and compare the result of the 2 operations
|
|
||||||
assertThat(bulkLog.containsErrors()).isFalse();
|
|
||||||
Map<String, Instant> bulkUpdatedTaskMap =
|
|
||||||
taskService.createTaskQuery().list().stream()
|
|
||||||
.collect(Collectors.toMap(TaskSummary::getId, TaskSummary::getDue));
|
|
||||||
individuallyUpdatedTasks.forEach(
|
|
||||||
t -> assertThat(t.getDue().equals(bulkUpdatedTaskMap.get(t.getId()))));
|
|
||||||
}
|
|
||||||
|
|
||||||
private TaskSummary getUpdatedTaskSummary(TaskSummary t, Instant planned) {
|
|
||||||
try {
|
|
||||||
Task task = taskService.getTask(t.getId());
|
|
||||||
task.setPlanned(planned);
|
|
||||||
return taskService.updateTask(task);
|
|
||||||
} catch (Exception e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -12,6 +12,8 @@ import java.time.ZoneId;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
|
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
|
||||||
import org.assertj.core.data.TemporalUnitWithinOffset;
|
import org.assertj.core.data.TemporalUnitWithinOffset;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
@ -29,6 +31,7 @@ import pro.taskana.common.test.security.WithAccessId;
|
||||||
import pro.taskana.task.api.TaskService;
|
import pro.taskana.task.api.TaskService;
|
||||||
import pro.taskana.task.api.exceptions.TaskNotFoundException;
|
import pro.taskana.task.api.exceptions.TaskNotFoundException;
|
||||||
import pro.taskana.task.api.models.Task;
|
import pro.taskana.task.api.models.Task;
|
||||||
|
import pro.taskana.task.api.models.TaskSummary;
|
||||||
|
|
||||||
/** Acceptance test for all "create task" scenarios. */
|
/** Acceptance test for all "create task" scenarios. */
|
||||||
@ExtendWith(JaasExtension.class)
|
@ExtendWith(JaasExtension.class)
|
||||||
|
@ -600,4 +603,38 @@ class ServiceLevelPriorityAccTest extends AbstractAccTest {
|
||||||
assertThat(task.getDue()).isEqualTo(getInstant("2020-04-14T07:00:00")); // Tuesday
|
assertThat(task.getDue()).isEqualTo(getInstant("2020-04-14T07:00:00")); // Tuesday
|
||||||
assertThat(task.getPlanned()).isEqualTo(getInstant("2020-04-09T07:00:00")); // Thursday
|
assertThat(task.getPlanned()).isEqualTo(getInstant("2020-04-09T07:00:00")); // Thursday
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "admin")
|
||||||
|
@Test
|
||||||
|
void testSetPlannedPropertyOnAllTasks() throws Exception {
|
||||||
|
resetDb(false);
|
||||||
|
|
||||||
|
Instant planned = getInstant("2020-05-03T07:00:00");
|
||||||
|
List<TaskSummary> allTasks = taskService.createTaskQuery().list();
|
||||||
|
// Now update each task with updateTask() and new planned
|
||||||
|
final List<TaskSummary> individuallyUpdatedTasks = new ArrayList<>();
|
||||||
|
allTasks.forEach(t -> individuallyUpdatedTasks.add(getUpdatedTaskSummary(t, planned)));
|
||||||
|
// reset DB and do the same with bulk update
|
||||||
|
resetDb(false);
|
||||||
|
List<String> taskIds = allTasks.stream().map(TaskSummary::getId).collect(Collectors.toList());
|
||||||
|
BulkOperationResults<String, TaskanaException> bulkLog =
|
||||||
|
taskService.setPlannedPropertyOfTasks(planned, taskIds);
|
||||||
|
// check that there was no error and compare the result of the 2 operations
|
||||||
|
assertThat(bulkLog.containsErrors()).isFalse();
|
||||||
|
Map<String, Instant> bulkUpdatedTaskMap =
|
||||||
|
taskService.createTaskQuery().list().stream()
|
||||||
|
.collect(Collectors.toMap(TaskSummary::getId, TaskSummary::getDue));
|
||||||
|
individuallyUpdatedTasks.forEach(
|
||||||
|
t -> assertThat(t.getDue().equals(bulkUpdatedTaskMap.get(t.getId()))));
|
||||||
|
}
|
||||||
|
|
||||||
|
private TaskSummary getUpdatedTaskSummary(TaskSummary t, Instant planned) {
|
||||||
|
try {
|
||||||
|
Task task = taskService.getTask(t.getId());
|
||||||
|
task.setPlanned(planned);
|
||||||
|
return taskService.updateTask(task);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.claim;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
import static org.assertj.core.api.Assertions.assertThatCode;
|
||||||
|
@ -25,7 +25,7 @@ import pro.taskana.task.api.models.Task;
|
||||||
|
|
||||||
/** Acceptance test for all "work on task" scenarios. This includes claim, complete... */
|
/** Acceptance test for all "work on task" scenarios. This includes claim, complete... */
|
||||||
@ExtendWith(JaasExtension.class)
|
@ExtendWith(JaasExtension.class)
|
||||||
class WorkOnTaskAccTest extends AbstractAccTest {
|
class ClaimTaskAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
@WithAccessId(user = "user-1-2")
|
@WithAccessId(user = "user-1-2")
|
||||||
@Test
|
@Test
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.claim;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.claim;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.complete;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.complete;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.complete;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.create;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.create;
|
||||||
|
|
||||||
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
||||||
import static acceptance.DefaultTestEntities.defaultTestObjectReference;
|
import static acceptance.DefaultTestEntities.defaultTestObjectReference;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.delete;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.delete;
|
||||||
|
|
||||||
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
||||||
import static acceptance.DefaultTestEntities.defaultTestObjectReference;
|
import static acceptance.DefaultTestEntities.defaultTestObjectReference;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.get;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
import static org.assertj.core.api.Assertions.assertThatCode;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.get;
|
||||||
|
|
||||||
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
||||||
import static acceptance.DefaultTestEntities.defaultTestObjectReference;
|
import static acceptance.DefaultTestEntities.defaultTestObjectReference;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.objectreference;
|
package acceptance.task.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static pro.taskana.task.api.ObjectReferenceQueryColumnName.COMPANY;
|
import static pro.taskana.task.api.ObjectReferenceQueryColumnName.COMPANY;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.objectreference;
|
package acceptance.task.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static pro.taskana.common.api.BaseQuery.SortDirection.ASCENDING;
|
import static pro.taskana.common.api.BaseQuery.SortDirection.ASCENDING;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static pro.taskana.common.api.BaseQuery.SortDirection.DESCENDING;
|
import static pro.taskana.common.api.BaseQuery.SortDirection.DESCENDING;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.query;
|
||||||
|
|
||||||
import static java.lang.String.CASE_INSENSITIVE_ORDER;
|
import static java.lang.String.CASE_INSENSITIVE_ORDER;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.query;
|
||||||
|
|
||||||
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
||||||
import static acceptance.DefaultTestEntities.defaultTestObjectReference;
|
import static acceptance.DefaultTestEntities.defaultTestObjectReference;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.transfer;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
import static org.assertj.core.api.Assertions.assertThatCode;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.update;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
import static org.assertj.core.api.Assertions.assertThatCode;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.update;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.task.update;
|
||||||
|
|
||||||
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
||||||
import static acceptance.DefaultTestEntities.defaultTestObjectReference;
|
import static acceptance.DefaultTestEntities.defaultTestObjectReference;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.taskcomment.create;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.taskcomment.delete;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.taskcomment.get;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.taskcomment.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.task;
|
package acceptance.taskcomment.update;
|
||||||
|
|
||||||
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
import static acceptance.DefaultTestEntities.defaultTestClassification;
|
||||||
import static acceptance.DefaultTestEntities.defaultTestObjectReference;
|
import static acceptance.DefaultTestEntities.defaultTestObjectReference;
|
|
@ -1,248 +0,0 @@
|
||||||
package acceptance.workbasket;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
|
||||||
import static org.mockito.Mockito.doReturn;
|
|
||||||
import static org.mockito.Mockito.lenient;
|
|
||||||
import static org.mockito.Mockito.times;
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.temporal.ChronoUnit;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.stream.IntStream;
|
|
||||||
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.mockito.InjectMocks;
|
|
||||||
import org.mockito.Mock;
|
|
||||||
import org.mockito.Spy;
|
|
||||||
import org.mockito.junit.jupiter.MockitoExtension;
|
|
||||||
|
|
||||||
import pro.taskana.TaskanaEngineConfiguration;
|
|
||||||
import pro.taskana.common.api.TaskanaEngine;
|
|
||||||
import pro.taskana.common.api.exceptions.ConcurrencyException;
|
|
||||||
import pro.taskana.common.internal.InternalTaskanaEngine;
|
|
||||||
import pro.taskana.spi.history.internal.HistoryEventManager;
|
|
||||||
import pro.taskana.task.api.TaskQuery;
|
|
||||||
import pro.taskana.task.api.TaskService;
|
|
||||||
import pro.taskana.workbasket.api.WorkbasketType;
|
|
||||||
import pro.taskana.workbasket.api.exceptions.WorkbasketAccessItemAlreadyExistException;
|
|
||||||
import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException;
|
|
||||||
import pro.taskana.workbasket.api.models.Workbasket;
|
|
||||||
import pro.taskana.workbasket.api.models.WorkbasketAccessItem;
|
|
||||||
import pro.taskana.workbasket.internal.DistributionTargetMapper;
|
|
||||||
import pro.taskana.workbasket.internal.WorkbasketAccessMapper;
|
|
||||||
import pro.taskana.workbasket.internal.WorkbasketMapper;
|
|
||||||
import pro.taskana.workbasket.internal.WorkbasketServiceImpl;
|
|
||||||
import pro.taskana.workbasket.internal.models.WorkbasketAccessItemImpl;
|
|
||||||
import pro.taskana.workbasket.internal.models.WorkbasketImpl;
|
|
||||||
|
|
||||||
/** Unit Test for workbasketServiceImpl. */
|
|
||||||
@ExtendWith(MockitoExtension.class)
|
|
||||||
class WorkbasketServiceImplTest {
|
|
||||||
|
|
||||||
@Spy @InjectMocks private WorkbasketServiceImpl workbasketServiceSpy;
|
|
||||||
|
|
||||||
@Mock private WorkbasketMapper workbasketMapperMock;
|
|
||||||
|
|
||||||
@Mock private DistributionTargetMapper distributionTargetMapperMock;
|
|
||||||
|
|
||||||
@Mock private WorkbasketAccessMapper workbasketAccessMapperMock;
|
|
||||||
|
|
||||||
@Mock private TaskService taskServiceMock;
|
|
||||||
|
|
||||||
@Mock private TaskQuery taskQueryMock;
|
|
||||||
|
|
||||||
@Mock private TaskanaEngine taskanaEngine;
|
|
||||||
|
|
||||||
@Mock private InternalTaskanaEngine internalTaskanaEngineMock;
|
|
||||||
|
|
||||||
@Mock private TaskanaEngineConfiguration taskanaEngineConfigurationMock;
|
|
||||||
|
|
||||||
@Mock private HistoryEventManager historyEventManager;
|
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
void setup() {
|
|
||||||
lenient().when(internalTaskanaEngineMock.getEngine()).thenReturn(taskanaEngine);
|
|
||||||
lenient().when(historyEventManager.isEnabled()).thenReturn(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testCreateWorkbasket_WithDistributionTargets() throws Exception {
|
|
||||||
final int distTargetAmount = 2;
|
|
||||||
WorkbasketImpl expectedWb = createTestWorkbasket(null, "Key-1");
|
|
||||||
doReturn(expectedWb).when(workbasketServiceSpy).getWorkbasket(any());
|
|
||||||
when(internalTaskanaEngineMock.domainExists(any())).thenReturn(true);
|
|
||||||
|
|
||||||
final Workbasket actualWb = workbasketServiceSpy.createWorkbasket(expectedWb);
|
|
||||||
workbasketServiceSpy.setDistributionTargets(
|
|
||||||
expectedWb.getId(), createTestDistributionTargets(distTargetAmount));
|
|
||||||
|
|
||||||
verify(internalTaskanaEngineMock, times(4)).openConnection();
|
|
||||||
verify(workbasketMapperMock, times(3)).insert(any());
|
|
||||||
verify(workbasketServiceSpy, times(distTargetAmount + 1)).getWorkbasket(any());
|
|
||||||
verify(distributionTargetMapperMock, times(1)).deleteAllDistributionTargetsBySourceId(any());
|
|
||||||
verify(distributionTargetMapperMock, times(distTargetAmount)).insert(any(), any());
|
|
||||||
verify(workbasketMapperMock, times(3)).findByKeyAndDomain(any(), any());
|
|
||||||
verify(workbasketMapperMock, times(1)).update(any());
|
|
||||||
verify(internalTaskanaEngineMock, times(4)).returnConnection();
|
|
||||||
verify(taskanaEngine, times(4)).checkRoleMembership(any());
|
|
||||||
verify(internalTaskanaEngineMock, times(4)).getEngine();
|
|
||||||
verify(internalTaskanaEngineMock, times(3)).domainExists(any());
|
|
||||||
verify(historyEventManager, times(5)).isEnabled();
|
|
||||||
verifyNoMoreInteractions(
|
|
||||||
taskQueryMock,
|
|
||||||
taskServiceMock,
|
|
||||||
workbasketMapperMock,
|
|
||||||
workbasketAccessMapperMock,
|
|
||||||
distributionTargetMapperMock,
|
|
||||||
internalTaskanaEngineMock,
|
|
||||||
taskanaEngine,
|
|
||||||
taskanaEngineConfigurationMock);
|
|
||||||
assertThat(actualWb.getId()).isNotNull();
|
|
||||||
assertThat(actualWb.getId()).startsWith("WBI");
|
|
||||||
assertThat(actualWb.getCreated()).isNotNull();
|
|
||||||
assertThat(actualWb.getModified()).isNotNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testCreateWorkbasket_DistributionTargetNotExisting() throws Exception {
|
|
||||||
WorkbasketImpl expectedWb = createTestWorkbasket("ID-1", "Key-1");
|
|
||||||
when(internalTaskanaEngineMock.domainExists(any())).thenReturn(true);
|
|
||||||
String otherWorkbasketId = "4711";
|
|
||||||
List<String> destinations = List.of(otherWorkbasketId);
|
|
||||||
workbasketServiceSpy.createWorkbasket(expectedWb);
|
|
||||||
doReturn(expectedWb).when(workbasketServiceSpy).getWorkbasket(expectedWb.getId());
|
|
||||||
|
|
||||||
ThrowingCallable call =
|
|
||||||
() -> {
|
|
||||||
workbasketServiceSpy.setDistributionTargets(expectedWb.getId(), destinations);
|
|
||||||
};
|
|
||||||
assertThatThrownBy(call)
|
|
||||||
.isInstanceOf(WorkbasketNotFoundException.class)
|
|
||||||
.hasFieldOrPropertyWithValue("id", otherWorkbasketId)
|
|
||||||
.hasFieldOrPropertyWithValue("key", null)
|
|
||||||
.hasFieldOrPropertyWithValue("domain", null);
|
|
||||||
|
|
||||||
verify(internalTaskanaEngineMock, times(3)).openConnection();
|
|
||||||
verify(workbasketMapperMock, times(1)).insert(expectedWb);
|
|
||||||
verify(workbasketMapperMock, times(1)).findById(any());
|
|
||||||
verify(workbasketMapperMock, times(1)).findByKeyAndDomain(any(), any());
|
|
||||||
verify(workbasketServiceSpy, times(2)).getWorkbasket(any());
|
|
||||||
verify(internalTaskanaEngineMock, times(3)).returnConnection();
|
|
||||||
verify(taskanaEngine, times(2)).checkRoleMembership(any());
|
|
||||||
verify(internalTaskanaEngineMock, times(2)).getEngine();
|
|
||||||
verify(internalTaskanaEngineMock, times(1)).domainExists(any());
|
|
||||||
verify(distributionTargetMapperMock).deleteAllDistributionTargetsBySourceId(expectedWb.getId());
|
|
||||||
verify(workbasketMapperMock).update(expectedWb);
|
|
||||||
verify(historyEventManager, times(2)).isEnabled();
|
|
||||||
|
|
||||||
verifyNoMoreInteractions(
|
|
||||||
taskQueryMock,
|
|
||||||
taskServiceMock,
|
|
||||||
workbasketMapperMock,
|
|
||||||
workbasketAccessMapperMock,
|
|
||||||
distributionTargetMapperMock,
|
|
||||||
internalTaskanaEngineMock,
|
|
||||||
taskanaEngine,
|
|
||||||
taskanaEngineConfigurationMock);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testDeleteWorkbasketIsUsed() throws Exception {
|
|
||||||
Workbasket wb = createTestWorkbasket("WBI:0", "wb-key");
|
|
||||||
|
|
||||||
ThrowingCallable call =
|
|
||||||
() -> {
|
|
||||||
workbasketServiceSpy.deleteWorkbasket(wb.getId());
|
|
||||||
};
|
|
||||||
assertThatThrownBy(call).isInstanceOf(WorkbasketNotFoundException.class);
|
|
||||||
|
|
||||||
verify(internalTaskanaEngineMock, times(2)).openConnection();
|
|
||||||
verify(workbasketServiceSpy, times(1)).getWorkbasket(wb.getId());
|
|
||||||
verify(taskanaEngine, times(0)).getTaskService();
|
|
||||||
verify(taskServiceMock, times(0)).createTaskQuery();
|
|
||||||
verify(taskQueryMock, times(0)).workbasketIdIn(wb.getId());
|
|
||||||
verify(taskQueryMock, times(0)).count();
|
|
||||||
verify(internalTaskanaEngineMock, times(2)).returnConnection();
|
|
||||||
verifyNoMoreInteractions(
|
|
||||||
taskQueryMock,
|
|
||||||
taskServiceMock,
|
|
||||||
workbasketAccessMapperMock,
|
|
||||||
distributionTargetMapperMock,
|
|
||||||
taskanaEngineConfigurationMock);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testSetWorkbasketAccessItemsWithMultipleAccessIds() {
|
|
||||||
|
|
||||||
String wid = "workbasketId";
|
|
||||||
List<WorkbasketAccessItem> accessItems =
|
|
||||||
IntStream.rangeClosed(0, 10)
|
|
||||||
.mapToObj(i -> createWorkbasketAccessItem("id" + i, "access" + i, wid))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
accessItems.add(createWorkbasketAccessItem("id5", "access5", wid));
|
|
||||||
|
|
||||||
assertThatThrownBy(() -> workbasketServiceSpy.setWorkbasketAccessItems(wid, accessItems))
|
|
||||||
.isInstanceOf(WorkbasketAccessItemAlreadyExistException.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testCheckModifiedHasNotChanged() {
|
|
||||||
|
|
||||||
Instant expectedModifiedTimestamp = Instant.now();
|
|
||||||
|
|
||||||
WorkbasketImpl oldWb = createTestWorkbasket(null, "Key-1");
|
|
||||||
WorkbasketImpl workbasketImplToUpdate = createTestWorkbasket(null, "Key-2");
|
|
||||||
oldWb.setModified(expectedModifiedTimestamp);
|
|
||||||
workbasketImplToUpdate.setModified(expectedModifiedTimestamp);
|
|
||||||
|
|
||||||
ThrowingCallable call =
|
|
||||||
() -> workbasketServiceSpy.checkModifiedHasNotChanged(oldWb, workbasketImplToUpdate);
|
|
||||||
assertThatCode(call).doesNotThrowAnyException();
|
|
||||||
|
|
||||||
workbasketImplToUpdate.setModified(expectedModifiedTimestamp.minus(1, ChronoUnit.HOURS));
|
|
||||||
|
|
||||||
call = () -> workbasketServiceSpy.checkModifiedHasNotChanged(oldWb, workbasketImplToUpdate);
|
|
||||||
assertThatThrownBy(call).isInstanceOf(ConcurrencyException.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
private WorkbasketImpl createTestWorkbasket(String id, String key) {
|
|
||||||
WorkbasketImpl workbasket = new WorkbasketImpl();
|
|
||||||
workbasket.setId(id);
|
|
||||||
workbasket.setKey(key);
|
|
||||||
workbasket.setName("Workbasket " + id);
|
|
||||||
workbasket.setDescription("Description WB with Key " + key);
|
|
||||||
workbasket.setType(WorkbasketType.PERSONAL);
|
|
||||||
workbasket.setDomain("DOMAIN_A");
|
|
||||||
return workbasket;
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<String> createTestDistributionTargets(int amount) throws Exception {
|
|
||||||
List<String> distributionsTargets = new ArrayList<>();
|
|
||||||
amount = Math.max(amount, 0);
|
|
||||||
for (int i = 0; i < amount; i++) {
|
|
||||||
WorkbasketImpl wb = createTestWorkbasket("WB-ID-" + i, "WB-KEY-" + i);
|
|
||||||
workbasketServiceSpy.createWorkbasket(wb);
|
|
||||||
distributionsTargets.add(wb.getId());
|
|
||||||
}
|
|
||||||
return distributionsTargets;
|
|
||||||
}
|
|
||||||
|
|
||||||
private WorkbasketAccessItem createWorkbasketAccessItem(
|
|
||||||
String id, String accessId, String workbasketId) {
|
|
||||||
WorkbasketAccessItemImpl workbasketAccessItem = new WorkbasketAccessItemImpl();
|
|
||||||
workbasketAccessItem.setId(id);
|
|
||||||
workbasketAccessItem.setAccessId(accessId);
|
|
||||||
workbasketAccessItem.setWorkbasketId(workbasketId);
|
|
||||||
return workbasketAccessItem;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.create;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.create;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.delete;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.delete;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -0,0 +1,182 @@
|
||||||
|
package acceptance.workbasket.get;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
||||||
|
import acceptance.AbstractAccTest;
|
||||||
|
import java.util.List;
|
||||||
|
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.TestTemplate;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
|
||||||
|
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
||||||
|
import pro.taskana.common.test.security.JaasExtension;
|
||||||
|
import pro.taskana.common.test.security.WithAccessId;
|
||||||
|
import pro.taskana.workbasket.api.WorkbasketService;
|
||||||
|
import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException;
|
||||||
|
import pro.taskana.workbasket.api.models.WorkbasketSummary;
|
||||||
|
|
||||||
|
/** Acceptance test for all "get workbasket" scenarios. */
|
||||||
|
@ExtendWith(JaasExtension.class)
|
||||||
|
class GetDistributionTargetsAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
|
GetDistributionTargetsAccTest() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "businessadmin")
|
||||||
|
@Test
|
||||||
|
void should_ReturnDistributionTargets_When_QueriedById() throws Exception {
|
||||||
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
|
WorkbasketSummary workbasketSummary =
|
||||||
|
workbasketService.createWorkbasketQuery().keyIn("GPK_KSC").single();
|
||||||
|
List<String> expectedTargetIds =
|
||||||
|
List.of(
|
||||||
|
"WBI:100000000000000000000000000000000002",
|
||||||
|
"WBI:100000000000000000000000000000000003",
|
||||||
|
"WBI:100000000000000000000000000000000004",
|
||||||
|
"WBI:100000000000000000000000000000000005");
|
||||||
|
|
||||||
|
List<WorkbasketSummary> retrievedDistributionTargets =
|
||||||
|
workbasketService.getDistributionTargets(workbasketSummary.getId());
|
||||||
|
|
||||||
|
assertThat(retrievedDistributionTargets)
|
||||||
|
.extracting(WorkbasketSummary::getId)
|
||||||
|
.containsExactlyInAnyOrderElementsOf(expectedTargetIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "businessadmin")
|
||||||
|
@Test
|
||||||
|
void should_ReturnDistributionTargets_When_QueriedByKeyDomain() throws Exception {
|
||||||
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
|
WorkbasketSummary workbasketSummary =
|
||||||
|
workbasketService.createWorkbasketQuery().keyIn("GPK_KSC").single();
|
||||||
|
List<String> expectedTargetIds =
|
||||||
|
List.of(
|
||||||
|
"WBI:100000000000000000000000000000000002",
|
||||||
|
"WBI:100000000000000000000000000000000003",
|
||||||
|
"WBI:100000000000000000000000000000000004",
|
||||||
|
"WBI:100000000000000000000000000000000005");
|
||||||
|
|
||||||
|
List<WorkbasketSummary> retrievedDistributionTargets =
|
||||||
|
workbasketService.getDistributionTargets(
|
||||||
|
workbasketSummary.getKey(), workbasketSummary.getDomain());
|
||||||
|
|
||||||
|
assertThat(retrievedDistributionTargets)
|
||||||
|
.extracting(WorkbasketSummary::getId)
|
||||||
|
.containsExactlyInAnyOrderElementsOf(expectedTargetIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "businessadmin")
|
||||||
|
@Test
|
||||||
|
void should_ThrowException_When_QueriedWithInvalidWorkbasket() throws Exception {
|
||||||
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
|
String existingWb = "WBI:100000000000000000000000000000000001";
|
||||||
|
String nonExistingWb = "WBI:100000000000000000000000000000000xx1";
|
||||||
|
|
||||||
|
ThrowingCallable call =
|
||||||
|
() -> {
|
||||||
|
workbasketService.getDistributionTargets("WBI:100000000000000000000000000000000xx1");
|
||||||
|
};
|
||||||
|
assertThatThrownBy(call).isInstanceOf(WorkbasketNotFoundException.class);
|
||||||
|
|
||||||
|
call =
|
||||||
|
() -> {
|
||||||
|
workbasketService.getDistributionTargets("NOT_EXUTSING", "NOT_EXUTSING");
|
||||||
|
};
|
||||||
|
assertThatThrownBy(call).isInstanceOf(WorkbasketNotFoundException.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "admin")
|
||||||
|
@WithAccessId(user = "businessadmin")
|
||||||
|
@WithAccessId(user = "taskadmin")
|
||||||
|
@TestTemplate
|
||||||
|
void should_ReturnDistributionTargets_When_NoExplicitPermissionsButUserIsInAdministrativeRole()
|
||||||
|
throws Exception {
|
||||||
|
|
||||||
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
|
String existingWb = "WBI:100000000000000000000000000000000001";
|
||||||
|
|
||||||
|
List<WorkbasketSummary> distributionTargets =
|
||||||
|
workbasketService.getDistributionTargets(existingWb);
|
||||||
|
assertThat(distributionTargets).hasSize(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "user-1-1")
|
||||||
|
@WithAccessId(user = "taskadmin")
|
||||||
|
@TestTemplate
|
||||||
|
void should_ThrowException_When_UserRoleIsNotAdminOrBusinessAdminAndMakesDistTargetCalls() {
|
||||||
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
|
String existingWb = "WBI:100000000000000000000000000000000001";
|
||||||
|
|
||||||
|
ThrowingCallable call =
|
||||||
|
() -> {
|
||||||
|
workbasketService.setDistributionTargets(
|
||||||
|
existingWb, List.of("WBI:100000000000000000000000000000000002"));
|
||||||
|
};
|
||||||
|
assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "user-1-1")
|
||||||
|
@Test
|
||||||
|
void should_ThrowException_When_UserTriesToGetDistributionTargetsAndRoleIsNotAdministrative() {
|
||||||
|
|
||||||
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
|
String existingWb = "WBI:100000000000000000000000000000000001";
|
||||||
|
|
||||||
|
ThrowingCallable getDistributionTargetsCall =
|
||||||
|
() -> {
|
||||||
|
workbasketService.getDistributionTargets(existingWb);
|
||||||
|
};
|
||||||
|
assertThatThrownBy(getDistributionTargetsCall).isInstanceOf(NotAuthorizedException.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "businessadmin")
|
||||||
|
@Test
|
||||||
|
void testGetDistributionSourcesById() throws Exception {
|
||||||
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
|
|
||||||
|
List<WorkbasketSummary> distributionSources =
|
||||||
|
workbasketService.getDistributionSources("WBI:100000000000000000000000000000000004");
|
||||||
|
|
||||||
|
assertThat(distributionSources)
|
||||||
|
.extracting(WorkbasketSummary::getId)
|
||||||
|
.containsExactlyInAnyOrder(
|
||||||
|
"WBI:100000000000000000000000000000000001", "WBI:100000000000000000000000000000000002");
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "teamlead-1")
|
||||||
|
@Test
|
||||||
|
void testGetDistributionSourcesByKeyDomain() throws Exception {
|
||||||
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
|
|
||||||
|
List<WorkbasketSummary> distributionSources =
|
||||||
|
workbasketService.getDistributionSources("TEAMLEAD-1", "DOMAIN_A");
|
||||||
|
|
||||||
|
assertThat(distributionSources)
|
||||||
|
.extracting(WorkbasketSummary::getId)
|
||||||
|
.containsExactlyInAnyOrder(
|
||||||
|
"WBI:100000000000000000000000000000000001", "WBI:100000000000000000000000000000000002");
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "unknownuser")
|
||||||
|
@Test
|
||||||
|
void testGetDistributionSourcesThrowsNotAuthorized() {
|
||||||
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
|
|
||||||
|
ThrowingCallable call =
|
||||||
|
() -> workbasketService.getDistributionSources("WBI:100000000000000000000000000000000004");
|
||||||
|
assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "user-2-2")
|
||||||
|
@Test
|
||||||
|
void testGetDistributionSourcesThrowsWorkbasketNotFound() {
|
||||||
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
|
|
||||||
|
ThrowingCallable call =
|
||||||
|
() -> workbasketService.getDistributionSources("WBI:10dasgibtsdochnicht00000000000000004");
|
||||||
|
assertThatThrownBy(call).isInstanceOf(WorkbasketNotFoundException.class);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.get;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.get;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.query;
|
||||||
|
|
||||||
import static java.lang.String.CASE_INSENSITIVE_ORDER;
|
import static java.lang.String.CASE_INSENSITIVE_ORDER;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.query;
|
||||||
|
|
||||||
import static java.lang.String.CASE_INSENSITIVE_ORDER;
|
import static java.lang.String.CASE_INSENSITIVE_ORDER;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.query;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.update;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
@ -21,55 +21,12 @@ import pro.taskana.workbasket.api.models.WorkbasketSummary;
|
||||||
|
|
||||||
/** Acceptance test for all "get workbasket" scenarios. */
|
/** Acceptance test for all "get workbasket" scenarios. */
|
||||||
@ExtendWith(JaasExtension.class)
|
@ExtendWith(JaasExtension.class)
|
||||||
class DistributionTargetsAccTest extends AbstractAccTest {
|
class UpdateDistributionTargetsAccTest extends AbstractAccTest {
|
||||||
|
|
||||||
DistributionTargetsAccTest() {
|
UpdateDistributionTargetsAccTest() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
@WithAccessId(user = "businessadmin")
|
|
||||||
@Test
|
|
||||||
void testGetDistributionTargetsSucceedsById() throws Exception {
|
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
|
||||||
WorkbasketSummary workbasketSummary =
|
|
||||||
workbasketService.createWorkbasketQuery().keyIn("GPK_KSC").single();
|
|
||||||
List<String> expectedTargetIds =
|
|
||||||
List.of(
|
|
||||||
"WBI:100000000000000000000000000000000002",
|
|
||||||
"WBI:100000000000000000000000000000000003",
|
|
||||||
"WBI:100000000000000000000000000000000004",
|
|
||||||
"WBI:100000000000000000000000000000000005");
|
|
||||||
|
|
||||||
List<WorkbasketSummary> retrievedDistributionTargets =
|
|
||||||
workbasketService.getDistributionTargets(workbasketSummary.getId());
|
|
||||||
|
|
||||||
assertThat(retrievedDistributionTargets)
|
|
||||||
.extracting(WorkbasketSummary::getId)
|
|
||||||
.containsExactlyInAnyOrderElementsOf(expectedTargetIds);
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "businessadmin")
|
|
||||||
@Test
|
|
||||||
void testGetDistributionTargetsSucceeds() throws Exception {
|
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
|
||||||
WorkbasketSummary workbasketSummary =
|
|
||||||
workbasketService.createWorkbasketQuery().keyIn("GPK_KSC").single();
|
|
||||||
List<String> expectedTargetIds =
|
|
||||||
List.of(
|
|
||||||
"WBI:100000000000000000000000000000000002",
|
|
||||||
"WBI:100000000000000000000000000000000003",
|
|
||||||
"WBI:100000000000000000000000000000000004",
|
|
||||||
"WBI:100000000000000000000000000000000005");
|
|
||||||
|
|
||||||
List<WorkbasketSummary> retrievedDistributionTargets =
|
|
||||||
workbasketService.getDistributionTargets(
|
|
||||||
workbasketSummary.getKey(), workbasketSummary.getDomain());
|
|
||||||
|
|
||||||
assertThat(retrievedDistributionTargets)
|
|
||||||
.extracting(WorkbasketSummary::getId)
|
|
||||||
.containsExactlyInAnyOrderElementsOf(expectedTargetIds);
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "businessadmin")
|
@WithAccessId(user = "businessadmin")
|
||||||
@Test
|
@Test
|
||||||
void testDistributionTargetCallsWithNonExistingWorkbaskets() throws Exception {
|
void testDistributionTargetCallsWithNonExistingWorkbaskets() throws Exception {
|
||||||
|
@ -99,21 +56,6 @@ class DistributionTargetsAccTest extends AbstractAccTest {
|
||||||
assertThat(beforeCount).isEqualTo(afterCount);
|
assertThat(beforeCount).isEqualTo(afterCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
|
||||||
@WithAccessId(user = "businessadmin")
|
|
||||||
@WithAccessId(user = "taskadmin")
|
|
||||||
@TestTemplate
|
|
||||||
void should_ReturnDistributionTargets_When_NoExplicitPermissionsButUserIsInAdministrativeRole()
|
|
||||||
throws Exception {
|
|
||||||
|
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
|
||||||
String existingWb = "WBI:100000000000000000000000000000000001";
|
|
||||||
|
|
||||||
List<WorkbasketSummary> distributionTargets =
|
|
||||||
workbasketService.getDistributionTargets(existingWb);
|
|
||||||
assertThat(distributionTargets).hasSize(4);
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "user-1-1")
|
@WithAccessId(user = "user-1-1")
|
||||||
@WithAccessId(user = "taskadmin")
|
@WithAccessId(user = "taskadmin")
|
||||||
@TestTemplate
|
@TestTemplate
|
||||||
|
@ -143,20 +85,6 @@ class DistributionTargetsAccTest extends AbstractAccTest {
|
||||||
assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class);
|
assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@WithAccessId(user = "user-1-1")
|
|
||||||
@Test
|
|
||||||
void should_ThrowException_When_UserTriesToGetDistributionTargetsAndRoleIsNotAdministrative() {
|
|
||||||
|
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
|
||||||
String existingWb = "WBI:100000000000000000000000000000000001";
|
|
||||||
|
|
||||||
ThrowingCallable getDistributionTargetsCall =
|
|
||||||
() -> {
|
|
||||||
workbasketService.getDistributionTargets(existingWb);
|
|
||||||
};
|
|
||||||
assertThatThrownBy(getDistributionTargetsCall).isInstanceOf(NotAuthorizedException.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "businessadmin")
|
@WithAccessId(user = "businessadmin")
|
||||||
@Test
|
@Test
|
||||||
void testAddAndRemoveDistributionTargets() throws Exception {
|
void testAddAndRemoveDistributionTargets() throws Exception {
|
||||||
|
@ -254,52 +182,4 @@ class DistributionTargetsAccTest extends AbstractAccTest {
|
||||||
// reset DB to original state
|
// reset DB to original state
|
||||||
resetDb(false);
|
resetDb(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@WithAccessId(user = "businessadmin")
|
|
||||||
@Test
|
|
||||||
void testGetDistributionSourcesById() throws Exception {
|
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
|
||||||
|
|
||||||
List<WorkbasketSummary> distributionSources =
|
|
||||||
workbasketService.getDistributionSources("WBI:100000000000000000000000000000000004");
|
|
||||||
|
|
||||||
assertThat(distributionSources)
|
|
||||||
.extracting(WorkbasketSummary::getId)
|
|
||||||
.containsExactlyInAnyOrder(
|
|
||||||
"WBI:100000000000000000000000000000000001", "WBI:100000000000000000000000000000000002");
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "teamlead-1")
|
|
||||||
@Test
|
|
||||||
void testGetDistributionSourcesByKeyDomain() throws Exception {
|
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
|
||||||
|
|
||||||
List<WorkbasketSummary> distributionSources =
|
|
||||||
workbasketService.getDistributionSources("TEAMLEAD-1", "DOMAIN_A");
|
|
||||||
|
|
||||||
assertThat(distributionSources)
|
|
||||||
.extracting(WorkbasketSummary::getId)
|
|
||||||
.containsExactlyInAnyOrder(
|
|
||||||
"WBI:100000000000000000000000000000000001", "WBI:100000000000000000000000000000000002");
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "unknownuser")
|
|
||||||
@Test
|
|
||||||
void testQueryDistributionSourcesThrowsNotAuthorized() {
|
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
|
||||||
|
|
||||||
ThrowingCallable call =
|
|
||||||
() -> workbasketService.getDistributionSources("WBI:100000000000000000000000000000000004");
|
|
||||||
assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "user-2-2")
|
|
||||||
@Test
|
|
||||||
void testQueryDistributionSourcesThrowsWorkbasketNotFound() {
|
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
|
||||||
|
|
||||||
ThrowingCallable call =
|
|
||||||
() -> workbasketService.getDistributionSources("WBI:10dasgibtsdochnicht00000000000000004");
|
|
||||||
assertThatThrownBy(call).isInstanceOf(WorkbasketNotFoundException.class);
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.update;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.update;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package acceptance.workbasket;
|
package acceptance.workbasket.update;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
import static org.assertj.core.api.Assertions.assertThatCode;
|
Loading…
Reference in New Issue