RED-3433 - When importing redactions from a redacted file the system should decline a file that is not a PDF and has a different number of pages

- check for validating the pdf file and the number of pages
- add junit test
This commit is contained in:
devplant 2022-03-09 15:45:58 +02:00
parent 2b29fcafa1
commit 5569695ca6
2 changed files with 44 additions and 8 deletions

View File

@ -1,16 +1,11 @@
package com.iqser.red.service.peristence.v1.server.controller;
import com.google.common.collect.Sets;
import com.iqser.red.service.pdftron.redaction.v1.api.model.DocumentRequest;
import com.iqser.red.service.pdftron.redaction.v1.api.model.TextHighlightOperation;
import com.iqser.red.service.pdftron.redaction.v1.api.model.TextHighlightRequest;
import com.iqser.red.service.pdftron.redaction.v1.api.model.TextHighlightResponse;
import com.iqser.red.service.pdftron.redaction.v1.api.model.*;
import com.iqser.red.service.peristence.v1.server.service.FileStatusService;
import com.iqser.red.service.peristence.v1.server.service.IndexingService;
import com.iqser.red.service.peristence.v1.server.service.ReanalysisRequiredStatusService;
import com.iqser.red.service.peristence.v1.server.utils.FileModelMapper;
import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService;
@ -87,6 +82,19 @@ public class ReanalysisController implements ReanalysisResource {
public void importRedactions(@RequestBody DocumentRequest documentRequest){
// validate the pdf file
PdfTronOptimizeRequest request = new PdfTronOptimizeRequest();
request.setDocument(documentRequest.getDocument());
PdfTronOptimizeResponse optimize;
try {
optimize = pDFTronRedactionClient.optimize(request);
}catch (Exception e){
throw new BadRequestException("File Not Valid PDF");
}
FileModel file = fileStatusService.getStatus(documentRequest.getFileId());
if (optimize != null && optimize.getNumberOfPages() != file.getNumberOfPages()) {
throw new BadRequestException("The files differ in number of pages");
}
pDFTronRedactionClient.importRedactions(documentRequest);
fileStatusService.setStatusFullReprocess(documentRequest.getDossierId(), documentRequest.getFileId(), 1);
}

View File

@ -1,22 +1,26 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import com.iqser.red.service.pdftron.redaction.v1.api.model.*;
import com.iqser.red.service.peristence.v1.server.integration.client.FileClient;
import com.iqser.red.service.peristence.v1.server.integration.client.ReanalysisClient;
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.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.BinaryFileRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
import org.assertj.core.util.Sets;
import feign.FeignException;
import org.junit.Test;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import java.nio.charset.StandardCharsets;
import java.util.Set;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
public class ReanalysisTest extends AbstractPersistenceServerServiceTest {
@ -70,6 +74,30 @@ public class ReanalysisTest extends AbstractPersistenceServerServiceTest {
}
@Test
public void testImportRedactions() {
var dossier = dossierTesterAndProvider.provideTestDossier();
var file = fileTesterAndProvider.testAndProvideFile(dossier);
BinaryFileRequest upload = new BinaryFileRequest("testing".getBytes(StandardCharsets.UTF_8), "emptyFile.pdf", dossier.getId(), "1");
DocumentRequest documentRequest = DocumentRequest.builder()
.document(upload.getData())
.fileId(file.getId()).build();
when(pdfTronRedactionClient.optimize(Mockito.any())).thenAnswer((args) ->
PdfTronOptimizeResponse.builder()
.document(((PdfTronOptimizeRequest) args.getArguments()[0]).getDocument())
.numberOfPages(100).build());
try {
reanalysisClient.importRedactions(documentRequest);
} catch (FeignException e) {
assertThat(e.status()).isEqualTo(400);
}
}
private void resetProcessingStatus(FileModel file) {