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:
parent
2b29fcafa1
commit
5569695ca6
@ -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);
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user