From aa233fec1bd020cd413b7545e63da164c9d91514 Mon Sep 17 00:00:00 2001 From: Holger Hagen <19706592+holgerhagen@users.noreply.github.com> Date: Thu, 12 Aug 2021 12:06:07 +0200 Subject: [PATCH] TSK-1701: added integration test for task routing via REST API. --- .../task/rest/TaskControllerIntTest.java | 25 ++++++++++++++++++ .../routing/IntegrationTestTaskRouter.java | 26 +++++++++++++++++++ ...askana.spi.routing.api.TaskRoutingProvider | 1 + 3 files changed, 52 insertions(+) create mode 100644 rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/routing/IntegrationTestTaskRouter.java create mode 100644 rest/taskana-rest-spring/src/test/resources/META-INF/services/pro.taskana.spi.routing.api.TaskRoutingProvider diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/TaskControllerIntTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/TaskControllerIntTest.java index f87423e91..91b07d932 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/TaskControllerIntTest.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/TaskControllerIntTest.java @@ -43,6 +43,7 @@ import pro.taskana.task.rest.models.TaskRepresentationModel.CustomAttribute; import pro.taskana.task.rest.models.TaskSummaryCollectionRepresentationModel; import pro.taskana.task.rest.models.TaskSummaryPagedRepresentationModel; import pro.taskana.task.rest.models.TaskSummaryRepresentationModel; +import pro.taskana.task.rest.routing.IntegrationTestTaskRouter; import pro.taskana.workbasket.rest.models.WorkbasketSummaryRepresentationModel; /** Test Task Controller. */ @@ -668,6 +669,30 @@ class TaskControllerIntTest { assertThatThrownBy(httpCall).isInstanceOf(HttpStatusCodeException.class); } + @Test + void should_RouteCreatedTask_When_CreatingTaskWithoutWorkbasketInformation() { + TaskRepresentationModel taskRepresentationModel = getTaskResourceSample(); + taskRepresentationModel.setWorkbasketSummary(null); + + String url = restHelper.toUrl(RestEndpoints.URL_TASKS); + HttpEntity auth = + new HttpEntity<>(taskRepresentationModel, RestHelper.generateHeadersForUser("user-1-1")); + ResponseEntity responseCreate = + TEMPLATE.exchange(url, HttpMethod.POST, auth, TASK_MODEL_TYPE); + + assertThat(responseCreate.getBody().getWorkbasketSummary().getWorkbasketId()) + .isEqualTo(IntegrationTestTaskRouter.DEFAULT_ROUTING_TARGET); + + String url2 = + restHelper.toUrl(RestEndpoints.URL_TASKS_ID, responseCreate.getBody().getTaskId()); + HttpEntity auth2 = new HttpEntity<>(RestHelper.generateHeadersForUser("admin")); + + ResponseEntity responseDeleted = + TEMPLATE.exchange( + url2, HttpMethod.DELETE, auth2, ParameterizedTypeReference.forType(Void.class)); + assertThat(responseDeleted.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT); + } + @Test void testCreateTaskWithInvalidParameter() throws Exception { final String taskToCreateJson = diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/routing/IntegrationTestTaskRouter.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/routing/IntegrationTestTaskRouter.java new file mode 100644 index 000000000..d79168a11 --- /dev/null +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/task/rest/routing/IntegrationTestTaskRouter.java @@ -0,0 +1,26 @@ +package pro.taskana.task.rest.routing; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import pro.taskana.common.api.TaskanaEngine; +import pro.taskana.spi.routing.api.TaskRoutingProvider; +import pro.taskana.task.api.models.Task; + +public class IntegrationTestTaskRouter implements TaskRoutingProvider { + + public static final String DEFAULT_ROUTING_TARGET = "WBI:100000000000000000000000000000000002"; + private static final Logger LOGGER = LoggerFactory.getLogger(IntegrationTestTaskRouter.class); + + private TaskanaEngine taskanaEngine; + + @Override + public void initialize(TaskanaEngine taskanaEngine) { + this.taskanaEngine = taskanaEngine; + } + + @Override + public String determineWorkbasketId(Task task) { + return DEFAULT_ROUTING_TARGET; + } +} diff --git a/rest/taskana-rest-spring/src/test/resources/META-INF/services/pro.taskana.spi.routing.api.TaskRoutingProvider b/rest/taskana-rest-spring/src/test/resources/META-INF/services/pro.taskana.spi.routing.api.TaskRoutingProvider new file mode 100644 index 000000000..2447d2b33 --- /dev/null +++ b/rest/taskana-rest-spring/src/test/resources/META-INF/services/pro.taskana.spi.routing.api.TaskRoutingProvider @@ -0,0 +1 @@ +pro.taskana.task.rest.routing.IntegrationTestTaskRouter