Pull request #10: TestManualRedaction3

Merge in RED/persistence-service from testManualRedaction3 to master

* commit '262e8946697392238fa8701f7fce9c1205bc5b48':
  Tests for Manual Redaction
  Tests for Manual Redaction
This commit is contained in:
Ali Oezyetimoglu 2021-09-24 11:14:51 +02:00 committed by Dominique Eiflaender
commit 654f560d62
4 changed files with 173 additions and 13 deletions

View File

@ -30,7 +30,7 @@ public class ManualRedactionService {
private final ForceRedactionPersistenceService forceRedactionPersistenceService;
private final CommentPersistenceService commentPersistenceService;
private final FileStatusPersistenceService fileStatusPersistenceService;
private final DictionaryController dictionaryClient;
private final DictionaryController dictionaryController;
private final FileManagementStorageService fileManagementStorageService;
private final ImageRecategorizationPersistenceService recategorizationPersistenceService;
private final LegalBasisChangePersistenceService legalBasisChangePersistenceService;
@ -46,7 +46,7 @@ public class ManualRedactionService {
if (addRedactionRequest.isAddToDictionary()) {
try {
dictionaryClient.getDictionaryForType(addRedactionRequest.getType());
dictionaryController.getDictionaryForType(addRedactionRequest.getType());
} catch (FeignException e) {
if (e.status() == 404) {
throw new BadRequestException("Invalid type: " + addRedactionRequest.getType());
@ -480,7 +480,7 @@ public class ManualRedactionService {
try {
log.debug("Adding entries for {} / {}", dossierId, fileId);
dictionaryClient.addEntries(typeId, List.of(value), false);
dictionaryController.addEntries(typeId, List.of(value), false);
fileStatusService.setStatusReprocess(dossierId, fileId, 100);
} catch (Exception e) {
@ -493,7 +493,7 @@ public class ManualRedactionService {
try {
log.debug("Deleting entries for {} / {}", dossierId, fileId);
dictionaryClient.deleteEntries(typeId, List.of(value));
dictionaryController.deleteEntries(typeId, List.of(value));
fileStatusService.setStatusReprocess(dossierId, fileId, 100);
} catch (FeignException e) {
throw new BadRequestException(e.getMessage());

View File

@ -11,6 +11,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.JSONPrimitive;
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier;
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.File;
import com.iqser.red.service.redaction.v1.model.RedactionLog;
import com.iqser.red.service.redaction.v1.model.RedactionLogEntry;
import com.iqser.red.service.redaction.v1.model.SectionGrid;
import com.iqser.red.storage.commons.service.StorageService;
import lombok.SneakyThrows;
@ -19,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.nio.charset.StandardCharsets;
import java.util.List;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
@ -52,7 +54,7 @@ public class FileTesterAndProvider {
assertThat(fileClient.getDossierStatus(dossier.getId()).size()).isEqualTo(1);
fileManagementStorageService.storeObject(dossier.getId(),file.getId(), FileType.REDACTION_LOG, objectMapper.writeValueAsBytes(new RedactionLog(1, Lists.newArrayList(), Lists.newArrayList(),0,0,0,0)));
fileManagementStorageService.storeObject(dossier.getId(),file.getId(), FileType.REDACTION_LOG, objectMapper.writeValueAsBytes(new RedactionLog(1, List.of(RedactionLogEntry.builder().id("annotationId").type("manual:" + dossier.getDossierTemplateId()).value("value").build()), Lists.newArrayList(),0,0,0,0)));
fileManagementStorageService.storeObject(dossier.getId(),file.getId(), FileType.SECTION_GRID, objectMapper.writeValueAsBytes(new SectionGrid()));
return file;

View File

@ -3,11 +3,20 @@ package com.iqser.red.service.peristence.v1.server.integration.tests;
import com.google.common.collect.Sets;
import com.iqser.red.service.peristence.v1.server.integration.client.FileClient;
import com.iqser.red.service.peristence.v1.server.integration.client.ManualRedactionClient;
import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient;
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider;
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.service.v1.api.model.AddRedactionRequest;
import com.iqser.red.service.persistence.service.v1.api.model.BinaryFileRequest;
import com.iqser.red.service.persistence.service.v1.api.model.ForceRedactionRequest;
import com.iqser.red.service.persistence.service.v1.api.model.ImageRecategorizationRequest;
import com.iqser.red.service.persistence.service.v1.api.model.JSONPrimitive;
import com.iqser.red.service.persistence.service.v1.api.model.LegalBasisChangeRequest;
import com.iqser.red.service.persistence.service.v1.api.model.RemoveRedactionRequest;
import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus;
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileStatus;
import org.assertj.core.util.Lists;
import org.junit.Test;
@ -15,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import static org.assertj.core.api.Assertions.assertThat;
import java.nio.charset.StandardCharsets;
public class FileTest extends AbstractPersistenceServerServiceTest {
@ -24,12 +34,18 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
@Autowired
private DossierTesterAndProvider dossierTesterAndProvider;
@Autowired
private TypeProvider typeProvider;
@Autowired
private FileClient fileClient;
@Autowired
private UploadClient uploadClient;
@Autowired
private ManualRedactionClient manualRedactionClient;
@Test
public void testFile() {
var dossier = dossierTesterAndProvider.provideTestDossier();
@ -129,5 +145,65 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
}
@Test
public void testFilewithRedactions() {
var dossier = dossierTesterAndProvider.provideTestDossier();
String dossierId = dossier.getId();
var file = fileTesterAndProvider.testAndProvideFile(dossier);
String fileId = file.getId();
var type = typeProvider.testAndProvideType(dossier.getDossierTemplate(), null, "manual");
String typeId = type.getId();
assertThat(fileClient.getAllStatuses().size()).isEqualTo(1);
BinaryFileRequest upload = new BinaryFileRequest("test".getBytes(StandardCharsets.UTF_8), "test.pdf", dossier.getId(), "1");
JSONPrimitive<String> uploadResult = uploadClient.upload(upload);
var secondFile = fileClient.getFileStatus(dossier.getId(), uploadResult.getValue());
var addRedaction = manualRedactionClient.addAddRedaction(dossierId, fileId, AddRedactionRequest.builder().addToDictionary(true)
.addToDossierDictionary(false).comment("comment").status(AnnotationStatus.REQUESTED).type(typeId).user("user").reason("1").value("test").legalBasis("1").build());
var removeRedaction = manualRedactionClient.addRemoveRedaction(dossierId, fileId, RemoveRedactionRequest.builder()
.annotationId("removeRedactionAnnotation").comment("comment").status(AnnotationStatus.REQUESTED).user("test").removeFromDictionary(false).build());
var forceRedaction = manualRedactionClient.addForceRedaction(dossierId, fileId, ForceRedactionRequest.builder()
.annotationId("forceRedactionAnnotation").comment("comment").status(AnnotationStatus.REQUESTED).user("test").legalBasis("1").build());
var legalBasisChange = manualRedactionClient.addLegalBasisChange(dossierId, fileId, LegalBasisChangeRequest.builder()
.annotationId("legalBasisChangeAnnotation").comment("comment").status(AnnotationStatus.REQUESTED).user("test").legalBasis("1").build());
var imageRecategorization = manualRedactionClient.addImageRecategorization(dossierId, fileId, ImageRecategorizationRequest.builder()
.annotationId("imageRecategorizationAnnotation").comment("comment").status(AnnotationStatus.REQUESTED).user("test").type("new-type").build());
var loadedFile = fileClient.getFileStatus(dossierId, fileId);
assertThat(loadedFile.isHasAnnotationComments()).isEqualTo(true);
assertThat(manualRedactionClient.getAddRedaction(fileId, addRedaction.getAnnotationId()).getId().getFileId()).isEqualTo(loadedFile.getId());
assertThat(manualRedactionClient.getRemoveRedaction(fileId, removeRedaction.getAnnotationId()).getId().getFileId()).isEqualTo(loadedFile.getId());
assertThat(manualRedactionClient.getForceRedaction(fileId, forceRedaction.getAnnotationId()).getId().getFileId()).isEqualTo(loadedFile.getId());
assertThat(manualRedactionClient.getLegalBasisChange(fileId, legalBasisChange.getAnnotationId()).getId().getFileId()).isEqualTo(loadedFile.getId());
assertThat(manualRedactionClient.getImageRecategorization(fileId, imageRecategorization.getAnnotationId()).getId().getFileId()).isEqualTo(loadedFile.getId());
uploadClient.deleteFile(dossier.getId(),file.getId());
var softDeletedFiles = fileClient.getSoftDeletedDossierStatus(dossier.getId());
assertThat(softDeletedFiles.size()).isEqualTo(1);
var activeFiles = fileClient.getDossierStatus(dossier.getId());
assertThat(activeFiles.size()).isEqualTo(0);
uploadClient.undeleteFiles(dossier.getId(), Sets.newHashSet(file.getId()));
softDeletedFiles = fileClient.getSoftDeletedDossierStatus(dossier.getId());
assertThat(softDeletedFiles.size()).isEqualTo(0);
activeFiles = fileClient.getDossierStatus(dossier.getId());
assertThat(activeFiles.size()).isEqualTo(1);
uploadClient.hardDeleteFiles(dossier.getId(), Sets.newHashSet(file.getId()));
softDeletedFiles = fileClient.getSoftDeletedDossierStatus(dossier.getId());
assertThat(softDeletedFiles.size()).isEqualTo(0);
activeFiles = fileClient.getDossierStatus(dossier.getId());
assertThat(activeFiles.size()).isEqualTo(0);
}
}

View File

@ -1,16 +1,26 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient;
import com.iqser.red.service.peristence.v1.server.integration.client.ManualRedactionClient;
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider;
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.service.v1.api.model.*;
import com.iqser.red.service.persistence.service.v1.api.model.AddRedactionRequest;
import com.iqser.red.service.persistence.service.v1.api.model.CommentRequest;
import com.iqser.red.service.persistence.service.v1.api.model.ForceRedactionRequest;
import com.iqser.red.service.persistence.service.v1.api.model.ImageRecategorizationRequest;
import com.iqser.red.service.persistence.service.v1.api.model.JSONPrimitive;
import com.iqser.red.service.persistence.service.v1.api.model.LegalBasisChangeRequest;
import com.iqser.red.service.persistence.service.v1.api.model.ManualRedactions;
import com.iqser.red.service.persistence.service.v1.api.model.RemoveRedactionRequest;
import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import static org.assertj.core.api.Assertions.assertThat;
public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
@ -26,6 +36,9 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
@Autowired
private ManualRedactionClient manualRedactionClient;
@Autowired
private DictionaryClient dictionaryClient;
@Test
public void testManualRedaction() {
@ -55,10 +68,18 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
loadedAddRedaction = manualRedactionClient.getAddRedaction(file.getId(), addRedaction.getAnnotationId());
assertThat(loadedAddRedaction.getStatus()).isEqualTo(AnnotationStatus.APPROVED);
manualRedactionClient.updateAddRedactionStatus(dossier.getId(), file.getId(), addRedaction.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.DECLINED));
manualRedactionClient.updateAddRedactionStatus(dossier.getId(), file.getId(), addRedaction.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.DECLINED));
loadedAddRedaction = manualRedactionClient.getAddRedaction(file.getId(), addRedaction.getAnnotationId());
assertThat(loadedAddRedaction.getStatus()).isEqualTo(AnnotationStatus.DECLINED);
var addRedaction2 = manualRedactionClient.addAddRedaction(dossier.getId(), file.getId(), AddRedactionRequest.builder().addToDictionary(true)
.addToDossierDictionary(false).status(AnnotationStatus.APPROVED).type(type.getId()).user("user").reason("1").value("test").legalBasis("1").comment("comment").build());
manualRedactionClient.updateAddRedactionStatus(dossier.getId(), file.getId(), addRedaction2.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.REQUESTED));
var loadedAddRedaction2 = manualRedactionClient.getAddRedaction(file.getId(), addRedaction2.getAnnotationId());
assertThat(loadedAddRedaction2.getStatus()).isEqualTo(AnnotationStatus.REQUESTED);
assertThat(loadedAddRedaction2.isAddToDossierDictionary()).isEqualTo(false);
assertThat(loadedAddRedaction2.isAddToDictionary()).isEqualTo(true);
@ -77,6 +98,22 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
loadedRemoveRedaction = manualRedactionClient.getRemoveRedaction(file.getId(), addRedaction.getAnnotationId());
assertThat(loadedRemoveRedaction.getStatus()).isEqualTo(AnnotationStatus.DECLINED);
var removeRedaction2 = manualRedactionClient.addRemoveRedaction(dossier.getId(), file.getId(), RemoveRedactionRequest.builder()
.annotationId("annotationId").comment("comment").status(AnnotationStatus.APPROVED).user("test").removeFromDictionary(true).build());
manualRedactionClient.updateRemoveRedactionStatus(dossier.getId(), file.getId(), removeRedaction2.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.REQUESTED));
var loadedRemoveRedaction2 = manualRedactionClient.getRemoveRedaction(file.getId(), removeRedaction2.getAnnotationId());
assertThat(loadedRemoveRedaction2.getStatus()).isEqualTo(AnnotationStatus.REQUESTED);
assertThat(dictionaryClient.getDictionaryForType(type.getId()).getEntries().isEmpty());
assertThat(loadedRemoveRedaction2.isRemoveFromDictionary()).isEqualTo(true);
manualRedactionClient.updateRemoveRedactionStatus(dossier.getId(), file.getId(), removeRedaction2.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.APPROVED));
loadedRemoveRedaction2 = manualRedactionClient.getRemoveRedaction(file.getId(), removeRedaction2.getAnnotationId());
assertThat(loadedRemoveRedaction2.getStatus()).isEqualTo(AnnotationStatus.APPROVED);
manualRedactionClient.updateRemoveRedactionStatus(dossier.getId(), file.getId(), removeRedaction2.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.REQUESTED));
loadedRemoveRedaction2 = manualRedactionClient.getRemoveRedaction(file.getId(), removeRedaction2.getAnnotationId());
assertThat(loadedRemoveRedaction2.getStatus()).isEqualTo(AnnotationStatus.REQUESTED);
@ -84,6 +121,9 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
.annotationId(addRedaction.getAnnotationId()).comment("comment").status(AnnotationStatus.REQUESTED).user("test").legalBasis("1").build());
var loadedForceRedaction = manualRedactionClient.getForceRedaction(file.getId(), forceRedaction.getAnnotationId());
assertThat(loadedForceRedaction.getLegalBasis()).isEqualTo("1");
assertThat(loadedForceRedaction.getUser()).isEqualTo("test");
assertThat(loadedForceRedaction.getId()).isEqualTo(loadedForceRedaction.getId());
assertThat(loadedForceRedaction.getId().getId()).isEqualTo(loadedForceRedaction.getId().getId());
manualRedactionClient.updateForceRedactionStatus(dossier.getId(), file.getId(), forceRedaction.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.APPROVED));
loadedForceRedaction = manualRedactionClient.getForceRedaction(file.getId(), addRedaction.getAnnotationId());
@ -95,11 +135,12 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
var legalBasisChange = manualRedactionClient.addLegalBasisChange(dossier.getId(), file.getId(), LegalBasisChangeRequest.builder()
.annotationId(addRedaction.getAnnotationId()).comment("comment").status(AnnotationStatus.REQUESTED).user("test").legalBasis("1").build());
var loadedLegalBasisChange = manualRedactionClient.getLegalBasisChange(file.getId(), addRedaction.getAnnotationId());
assertThat(loadedLegalBasisChange.getId().getId()).isEqualTo(legalBasisChange.getAnnotationId());
assertThat(loadedLegalBasisChange.getUser()).isEqualTo("test");
assertThat(loadedLegalBasisChange.getLegalBasis()).isEqualTo("1");
manualRedactionClient.updateLegalBasisChangeStatus(dossier.getId(), file.getId(), legalBasisChange.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.APPROVED));
loadedLegalBasisChange = manualRedactionClient.getLegalBasisChange(file.getId(), addRedaction.getAnnotationId());
@ -111,7 +152,6 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
var imageRecategorization = manualRedactionClient.addImageRecategorization(dossier.getId(), file.getId(), ImageRecategorizationRequest.builder()
.annotationId(addRedaction.getAnnotationId()).comment("comment").status(AnnotationStatus.REQUESTED).user("test").type("new-type").build());
var loadedImageRecategorization = manualRedactionClient.getImageRecategorization(file.getId(), addRedaction.getAnnotationId());
@ -125,6 +165,17 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
loadedImageRecategorization = manualRedactionClient.getImageRecategorization(file.getId(), addRedaction.getAnnotationId());
assertThat(loadedImageRecategorization.getStatus()).isEqualTo(AnnotationStatus.DECLINED);
var imageRecategorization2 = manualRedactionClient.addImageRecategorization(dossier.getId(), file.getId(), ImageRecategorizationRequest.builder()
.annotationId(addRedaction2.getAnnotationId()).comment("comment").status(AnnotationStatus.APPROVED).user("test").type("new-type").build());
var loadedImageRecategorization2 = manualRedactionClient.getImageRecategorization(file.getId(), imageRecategorization2.getAnnotationId());
assertThat(loadedImageRecategorization2.getStatus()).isEqualTo(AnnotationStatus.APPROVED);
manualRedactionClient.updateImageRecategorizationStatus(dossier.getId(), file.getId(), imageRecategorization2.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.REQUESTED));
loadedImageRecategorization2 = manualRedactionClient.getImageRecategorization(file.getId(), imageRecategorization2.getAnnotationId());
assertThat(loadedImageRecategorization2.getStatus()).isEqualTo(AnnotationStatus.REQUESTED);
ManualRedactions manualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId());
assertThat(manualRedactions.getForceRedactions()).isNotEmpty();
@ -143,5 +194,36 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest {
manualRedactions.getComments().forEach((key, value) -> value.forEach(c -> manualRedactionClient.deleteComment(file.getId(), c.getId())));
var forceRedaction2 = manualRedactionClient.addForceRedaction(dossier.getId(), file.getId(), ForceRedactionRequest.builder()
.annotationId(addRedaction2.getAnnotationId()).comment("comment").status(AnnotationStatus.APPROVED).user("test").legalBasis("1").build());
var loadedForceRedaction2 = manualRedactionClient.getForceRedaction(file.getId(), forceRedaction2.getAnnotationId());
assertThat(loadedForceRedaction2.getStatus()).isEqualTo(AnnotationStatus.APPROVED);
manualRedactionClient.updateForceRedactionStatus(dossier.getId(), file.getId(), forceRedaction2.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.REQUESTED));
loadedForceRedaction2 = manualRedactionClient.getForceRedaction(file.getId(), forceRedaction2.getAnnotationId());
assertThat(loadedForceRedaction2.getStatus()).isEqualTo(AnnotationStatus.REQUESTED);
manualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId());
manualRedactions.getForceRedactions().forEach(e -> manualRedactionClient.deleteForceRedaction(dossier.getId(), file.getId(), e.getId().getId()));
var legalBasisChange2 = manualRedactionClient.addLegalBasisChange(dossier.getId(), file.getId(), LegalBasisChangeRequest.builder()
.annotationId(addRedaction2.getAnnotationId()).comment("comment").status(AnnotationStatus.APPROVED).user("test").legalBasis("1").build());
var loadedLegalBasisChange2 = manualRedactionClient.getLegalBasisChange(file.getId(), legalBasisChange2.getAnnotationId());
assertThat(loadedLegalBasisChange2.getStatus()).isEqualTo(AnnotationStatus.APPROVED);
manualRedactionClient.updateLegalBasisChangeStatus(dossier.getId(), file.getId(), legalBasisChange2.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.REQUESTED));
loadedLegalBasisChange2 = manualRedactionClient.getLegalBasisChange(file.getId(), legalBasisChange2.getAnnotationId());
assertThat(loadedLegalBasisChange2.getStatus()).isEqualTo(AnnotationStatus.REQUESTED);
manualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId());
manualRedactions.getLegalBasisChanges().forEach(e -> manualRedactionClient.deleteLegalBasisChange(dossier.getId(), file.getId(), e.getId().getId()));
}
}