TSK-1038 duplicate workbasket errors in Rest tests

This commit is contained in:
BerndBreier 2020-01-23 11:57:48 +01:00 committed by Holger Hagen
parent 3709d98511
commit 16a82efcb5
3 changed files with 32 additions and 1 deletions

View File

@ -274,7 +274,7 @@ class UpdateWorkbasketAuthorizationsAccTest extends AbstractAccTest {
}
List<WorkbasketAccessItem> listEqualToOriginal =
new ArrayList<>(workbasketService.getWorkbasketAccessItems(wbId));
// with DB2 V 11, the lists are sorted differently...
assertEquals(
new HashSet<WorkbasketAccessItem>(originalList),

View File

@ -25,6 +25,7 @@ import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.NotAuthorizedToQueryWorkbasketException;
import pro.taskana.exceptions.TaskAlreadyExistException;
import pro.taskana.exceptions.TaskNotFoundException;
import pro.taskana.exceptions.WorkbasketAccessItemAlreadyExistException;
import pro.taskana.exceptions.WorkbasketAlreadyExistException;
import pro.taskana.exceptions.WorkbasketInUseException;
import pro.taskana.exceptions.WorkbasketNotFoundException;
@ -112,6 +113,12 @@ public class TaskanaRestExceptionHandler extends ResponseEntityExceptionHandler
WorkbasketAlreadyExistException ex, WebRequest req) {
return buildResponse(ex, req, HttpStatus.CONFLICT);
}
@ExceptionHandler(WorkbasketAccessItemAlreadyExistException.class)
protected ResponseEntity<Object> handleWorkbasketAccessItemAlreadyExist(
WorkbasketAccessItemAlreadyExistException ex, WebRequest req) {
return buildResponse(ex, req, HttpStatus.CONFLICT);
}
@ExceptionHandler(WorkbasketNotFoundException.class)
protected ResponseEntity<Object> handleWorkbasketNotFound(

View File

@ -16,6 +16,7 @@ import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import javax.sql.DataSource;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@ -36,6 +37,7 @@ import org.springframework.web.client.RestTemplate;
import pro.taskana.RestHelper;
import pro.taskana.TaskanaSpringBootTest;
import pro.taskana.impl.WorkbasketAccessItemImpl;
import pro.taskana.rest.resource.WorkbasketDefinitionResource;
import pro.taskana.sampledata.SampleDataGenerator;
@ -155,12 +157,34 @@ class WorkbasketDefinitionControllerIntTest {
ObjectMapper objMapper = new ObjectMapper();
WorkbasketDefinitionResource wbDef = response.getBody().get(0);
list.add(objMapper.writeValueAsString(wbDef));
int i = 1;
for (WorkbasketAccessItemImpl wbai : wbDef.getAuthorizations()) {
wbai.setAccessId("user_" + i++);
}
wbDef.getWorkbasket().setKey("new Key for this WB");
list.add(objMapper.writeValueAsString(wbDef));
ResponseEntity<Void> responseImport = importRequest(list);
assertEquals(HttpStatus.NO_CONTENT, responseImport.getStatusCode());
}
@Test
void testErrorWhenImportWithSameAccessIdAndWorkbasket() throws IOException {
ResponseEntity<List<WorkbasketDefinitionResource>> response =
template.exchange(
restHelper.toUrl(Mapping.URL_WORKBASKETDEFIITIONS) + "?domain=DOMAIN_A",
HttpMethod.GET,
restHelper.defaultRequest(),
new ParameterizedTypeReference<List<WorkbasketDefinitionResource>>() {});
List<String> list = new ArrayList<>();
ObjectMapper objMapper = new ObjectMapper();
WorkbasketDefinitionResource wbDef = response.getBody().get(0);
list.add(objMapper.writeValueAsString(wbDef));
wbDef.getWorkbasket().setKey("new Key for this WB");
list.add(objMapper.writeValueAsString(wbDef));
Assertions.assertThrows(HttpClientErrorException.class, () -> importRequest(list));
}
private ResponseEntity<Void> importRequest(List<String> clList) throws IOException {
File tmpFile = File.createTempFile("test", ".tmp");
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(tmpFile), UTF_8);