Pull request #103: RED-2508 empty pdf file

Merge in RED/persistence-service from bugfix/RED-2508 to master

* commit '10287b658e490a21330eaa20ad28a1c1b02e448a':
  RED-2508 empty pdf file
This commit is contained in:
Corina Olariu 2021-11-03 15:19:15 +01:00 committed by Timo Bejan
commit cd460af9a6
4 changed files with 27 additions and 3 deletions

View File

@ -6,6 +6,7 @@ import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronOptimizeReque
import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronOptimizeResponse;
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.exception.NotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.*;
@ -68,6 +69,9 @@ public class FileService {
try {
PdfTronOptimizeResponse optimized = pdfTronRedactionClient.optimize(new PdfTronOptimizeRequest(request.getData()));
if (optimized.getNumberOfPages() == 0) {
throw new BadRequestException("Empty document");
}
// if successful update request with linearized PDF
request.setData(optimized.getDocument());
} catch (Exception e) {

View File

@ -2,6 +2,8 @@ package com.iqser.red.service.peristence.v1.server.integration.tests;
import com.google.common.collect.Sets;
import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronOptimizeRequest;
import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronOptimizeResponse;
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;
@ -10,17 +12,20 @@ import com.iqser.red.service.peristence.v1.server.integration.service.DossierTes
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.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.service.v1.api.model.annotations.*;
import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive;
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.WorkflowStatus;
import org.junit.Test;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import java.nio.charset.StandardCharsets;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
public class FileTest extends AbstractPersistenceServerServiceTest {
@ -45,6 +50,18 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
@Autowired
private ManualRedactionClient manualRedactionClient;
@Test
public void testEmptyFile() {
var dossier = dossierTesterAndProvider.provideTestDossier();
BinaryFileRequest upload = new BinaryFileRequest("".getBytes(StandardCharsets.UTF_8), "emptyFile.pdf", dossier.getId(), "1");
try {
uploadClient.upload(upload);
} catch (BadRequestException e) {
assertThat(e.getMessage().startsWith("empty")).isTrue();
}
}
@Test
public void testFile() {
var dossier = dossierTesterAndProvider.provideTestDossier();

View File

@ -114,8 +114,11 @@ public abstract class AbstractPersistenceServerServiceTest {
doNothing().when(pdfTronRedactionClient).testDigitalCurrentSignature(Mockito.any());
when(amqpAdmin.getQueueInfo(Mockito.any())).thenReturn(null);
when(pdfTronRedactionClient.optimize(Mockito.any())).thenAnswer((args) ->
new PdfTronOptimizeResponse(((PdfTronOptimizeRequest) args.getArguments()[0]).getDocument()));
when(pdfTronRedactionClient.optimize(Mockito.any())).thenAnswer((args) -> {
PdfTronOptimizeRequest request = (PdfTronOptimizeRequest) args.getArguments()[0];
int numberOfPages = (request.getDocument().length == 0? 0: 10);
return new PdfTronOptimizeResponse(request.getDocument(), numberOfPages);
});
when(pdfTronRedactionClient.redact(Mockito.any())).thenAnswer((args) ->
new PdfTronRedactionResult(((PdfTronRedactionRequest) args.getArguments()[0]).getDocument()));
when(pdfTronRedactionClient.redactionPreview(Mockito.any())).thenAnswer((args) ->

View File

@ -50,7 +50,7 @@
<dependency>
<groupId>com.iqser.red.service</groupId>
<artifactId>pdftron-redaction-service-api-v1</artifactId>
<version>3.13.0</version>
<version>3.16.0</version>
</dependency>
</dependencies>
</dependencyManagement>