TSK-477: REST: get tasks by workbasket key and domain.
This commit is contained in:
parent
ec33a7a1ff
commit
2970edd119
|
@ -64,6 +64,54 @@ public class TaskControllerIntTest {
|
|||
assertEquals(23, response.getBody().getContent().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAllTasksByWorkbasketId() {
|
||||
RestTemplate template = getRestTemplate();
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.add("Authorization", "Basic dXNlcl8xXzI6dXNlcl8xXzI="); // user_1_2
|
||||
HttpEntity<String> request = new HttpEntity<String>(headers);
|
||||
ResponseEntity<PagedResources<TaskSummaryResource>> response = template.exchange(
|
||||
"http://127.0.0.1:" + port + "/v1/tasks?workbasket-id=WBI:100000000000000000000000000000000007",
|
||||
HttpMethod.GET, request,
|
||||
new ParameterizedTypeReference<PagedResources<TaskSummaryResource>>() {
|
||||
});
|
||||
assertNotNull(response.getBody().getLink(Link.REL_SELF));
|
||||
assertEquals(20, response.getBody().getContent().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAllTasksByWorkbasketKeyAndDomain() {
|
||||
RestTemplate template = getRestTemplate();
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.add("Authorization", "Basic dXNlcl8xXzI6dXNlcl8xXzI="); // user_1_2
|
||||
HttpEntity<String> request = new HttpEntity<String>(headers);
|
||||
ResponseEntity<PagedResources<TaskSummaryResource>> response = template.exchange(
|
||||
"http://127.0.0.1:" + port + "/v1/tasks?workbasket-key=USER_1_2&domain=DOMAIN_A",
|
||||
HttpMethod.GET, request,
|
||||
new ParameterizedTypeReference<PagedResources<TaskSummaryResource>>() {
|
||||
});
|
||||
assertNotNull(response.getBody().getLink(Link.REL_SELF));
|
||||
assertEquals(20, response.getBody().getContent().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExceptionIfKeyIsSetButDomainIsMissing() {
|
||||
RestTemplate template = getRestTemplate();
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.add("Authorization", "Basic dXNlcl8xXzI6dXNlcl8xXzI="); // user_1_2
|
||||
HttpEntity<String> request = new HttpEntity<String>(headers);
|
||||
try {
|
||||
ResponseEntity<PagedResources<TaskSummaryResource>> response = template.exchange(
|
||||
"http://127.0.0.1:" + port + "/v1/tasks?workbasket-key=USER_1_2",
|
||||
HttpMethod.GET, request,
|
||||
new ParameterizedTypeReference<PagedResources<TaskSummaryResource>>() {
|
||||
});
|
||||
fail();
|
||||
} catch (HttpClientErrorException e) {
|
||||
assertEquals(HttpStatus.BAD_REQUEST, e.getStatusCode());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAllTasksWithAdminRole() {
|
||||
RestTemplate template = getRestTemplate();
|
||||
|
|
|
@ -25,6 +25,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
|||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import pro.taskana.BaseQuery.SortDirection;
|
||||
import pro.taskana.KeyDomain;
|
||||
import pro.taskana.Task;
|
||||
import pro.taskana.TaskQuery;
|
||||
import pro.taskana.TaskService;
|
||||
|
@ -63,7 +64,9 @@ public class TaskController extends AbstractPagingController {
|
|||
private static final String PRIORITY = "priority";
|
||||
private static final String NAME = "name";
|
||||
private static final String OWNER = "owner";
|
||||
private static final String WORKBASKET_ID = "workbasketId";
|
||||
private static final String DOMAIN = "domain";
|
||||
private static final String WORKBASKET_ID = "workbasket-id";
|
||||
private static final String WORKBASKET_KEY = "workbasket-key";
|
||||
private static final String CLASSIFICATION_KEY = "classification.key";
|
||||
private static final String POR_VALUE = "por.value";
|
||||
private static final String POR_TYPE = "por.type";
|
||||
|
@ -238,6 +241,23 @@ public class TaskController extends AbstractPagingController {
|
|||
taskQuery.workbasketIdIn(workbaskets);
|
||||
params.remove(WORKBASKET_ID);
|
||||
}
|
||||
if (params.containsKey(WORKBASKET_KEY)) {
|
||||
String[] domains = null;
|
||||
if (params.get(DOMAIN) != null) {
|
||||
domains = extractCommaSeparatedFields(params.get(DOMAIN));
|
||||
}
|
||||
if (domains == null || domains.length != 1) {
|
||||
throw new InvalidArgumentException("workbasket-key requires excactly one domain as second parameter.");
|
||||
}
|
||||
String[] workbasketKeys = extractCommaSeparatedFields(params.get(WORKBASKET_KEY));
|
||||
KeyDomain[] keyDomains = new KeyDomain[workbasketKeys.length];
|
||||
for (int i = 0; i < workbasketKeys.length; i++) {
|
||||
keyDomains[i] = new KeyDomain(workbasketKeys[i], domains[0]);
|
||||
}
|
||||
taskQuery.workbasketKeyDomainIn(keyDomains);
|
||||
params.remove(WORKBASKET_KEY);
|
||||
params.remove(DOMAIN);
|
||||
}
|
||||
if (params.containsKey(OWNER)) {
|
||||
String[] owners = extractCommaSeparatedFields(params.get(OWNER));
|
||||
taskQuery.ownerIn(owners);
|
||||
|
|
Loading…
Reference in New Issue