mirror of
https://github.com/arsvendg/Stirling-PDF.git
synced 2026-07-16 19:33:11 +02:00
Migrate stream to resource for stability (#6160)
This commit is contained in:
+17
-24
@@ -20,11 +20,12 @@ import org.junit.jupiter.api.io.TempDir;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.general.BookletImpositionRequest;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -33,14 +34,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class BookletImpositionControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -94,8 +96,7 @@ class BookletImpositionControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(sourceDoc);
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(sourceDoc)).thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.createBookletImposition(request);
|
||||
ResponseEntity<Resource> response = controller.createBookletImposition(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
assertThat(drainBody(response)).isNotEmpty();
|
||||
@@ -126,8 +127,7 @@ class BookletImpositionControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(sourceDoc);
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(sourceDoc)).thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.createBookletImposition(request);
|
||||
ResponseEntity<Resource> response = controller.createBookletImposition(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
assertThat(drainBody(response)).isNotEmpty();
|
||||
@@ -144,8 +144,7 @@ class BookletImpositionControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(sourceDoc);
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(sourceDoc)).thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.createBookletImposition(request);
|
||||
ResponseEntity<Resource> response = controller.createBookletImposition(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
@@ -162,8 +161,7 @@ class BookletImpositionControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(sourceDoc);
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(sourceDoc)).thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.createBookletImposition(request);
|
||||
ResponseEntity<Resource> response = controller.createBookletImposition(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
@@ -180,8 +178,7 @@ class BookletImpositionControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(sourceDoc);
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(sourceDoc)).thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.createBookletImposition(request);
|
||||
ResponseEntity<Resource> response = controller.createBookletImposition(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
@@ -198,8 +195,7 @@ class BookletImpositionControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(sourceDoc);
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(sourceDoc)).thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.createBookletImposition(request);
|
||||
ResponseEntity<Resource> response = controller.createBookletImposition(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
@@ -216,8 +212,7 @@ class BookletImpositionControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(sourceDoc);
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(sourceDoc)).thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.createBookletImposition(request);
|
||||
ResponseEntity<Resource> response = controller.createBookletImposition(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
@@ -232,8 +227,7 @@ class BookletImpositionControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(sourceDoc);
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(sourceDoc)).thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.createBookletImposition(request);
|
||||
ResponseEntity<Resource> response = controller.createBookletImposition(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
@@ -261,8 +255,7 @@ class BookletImpositionControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(sourceDoc);
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(sourceDoc)).thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.createBookletImposition(request);
|
||||
ResponseEntity<Resource> response = controller.createBookletImposition(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
|
||||
+14
-12
@@ -27,11 +27,12 @@ import org.junit.jupiter.params.provider.ValueSource;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.general.CropPdfForm;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -41,14 +42,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@DisplayName("CropController Tests")
|
||||
class CropControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -205,7 +207,7 @@ class CropControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDocument))
|
||||
.thenReturn(newDocument);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = cropController.cropPdf(request);
|
||||
ResponseEntity<Resource> response = cropController.cropPdf(request);
|
||||
|
||||
assertThat(response)
|
||||
.isNotNull()
|
||||
@@ -242,7 +244,7 @@ class CropControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDocument))
|
||||
.thenReturn(newDocument);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = cropController.cropPdf(request);
|
||||
ResponseEntity<Resource> response = cropController.cropPdf(request);
|
||||
|
||||
assertThat(response).isNotNull();
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
@@ -282,7 +284,7 @@ class CropControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(sourceDoc))
|
||||
.thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = cropController.cropPdf(request);
|
||||
ResponseEntity<Resource> response = cropController.cropPdf(request);
|
||||
|
||||
assertThat(response).isNotNull();
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
@@ -313,7 +315,7 @@ class CropControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(sourceDoc))
|
||||
.thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = cropController.cropPdf(request);
|
||||
ResponseEntity<Resource> response = cropController.cropPdf(request);
|
||||
|
||||
assertThat(response).isNotNull();
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
@@ -676,7 +678,7 @@ class CropControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDocument))
|
||||
.thenReturn(newDocument);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = cropController.cropPdf(request);
|
||||
ResponseEntity<Resource> response = cropController.cropPdf(request);
|
||||
|
||||
assertThat(response).isNotNull();
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
@@ -704,7 +706,7 @@ class CropControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDocument))
|
||||
.thenReturn(newDocument);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = cropController.cropPdf(request);
|
||||
ResponseEntity<Resource> response = cropController.cropPdf(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
verify(mockDocument, times(1)).close();
|
||||
|
||||
+4
-4
@@ -25,10 +25,10 @@ import org.mockito.ArgumentMatchers;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.controller.api.EditTableOfContentsController.BookmarkItem;
|
||||
import stirling.software.SPDF.model.api.EditTableOfContentsRequest;
|
||||
@@ -255,7 +255,7 @@ class EditTableOfContentsControllerTest {
|
||||
.save(any(File.class));
|
||||
|
||||
// When
|
||||
ResponseEntity<StreamingResponseBody> result =
|
||||
ResponseEntity<Resource> result =
|
||||
editTableOfContentsController.editTableOfContents(request);
|
||||
|
||||
// Then
|
||||
@@ -319,7 +319,7 @@ class EditTableOfContentsControllerTest {
|
||||
.save(any(File.class));
|
||||
|
||||
// When
|
||||
ResponseEntity<StreamingResponseBody> result =
|
||||
ResponseEntity<Resource> result =
|
||||
editTableOfContentsController.editTableOfContents(request);
|
||||
|
||||
// Then
|
||||
@@ -373,7 +373,7 @@ class EditTableOfContentsControllerTest {
|
||||
.save(any(File.class));
|
||||
|
||||
// When
|
||||
ResponseEntity<StreamingResponseBody> result =
|
||||
ResponseEntity<Resource> result =
|
||||
editTableOfContentsController.editTableOfContents(request);
|
||||
|
||||
// Then
|
||||
|
||||
+11
-9
@@ -18,11 +18,12 @@ import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.general.MergeMultiplePagesRequest;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -31,14 +32,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class MultiPageLayoutControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -97,7 +99,7 @@ class MultiPageLayoutControllerTest {
|
||||
req.setAddBorder(Boolean.FALSE);
|
||||
req.setFileInput(fileWithExt);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> resp = controller.mergeMultiplePagesIntoOne(req);
|
||||
ResponseEntity<Resource> resp = controller.mergeMultiplePagesIntoOne(req);
|
||||
Assertions.assertEquals(HttpStatus.OK, resp.getStatusCode());
|
||||
Assertions.assertEquals(MediaType.APPLICATION_PDF, resp.getHeaders().getContentType());
|
||||
Assertions.assertNotNull(resp.getBody());
|
||||
@@ -122,7 +124,7 @@ class MultiPageLayoutControllerTest {
|
||||
req.setAddBorder(Boolean.TRUE);
|
||||
req.setFileInput(fileWithExt);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> resp = controller.mergeMultiplePagesIntoOne(req);
|
||||
ResponseEntity<Resource> resp = controller.mergeMultiplePagesIntoOne(req);
|
||||
Assertions.assertEquals(HttpStatus.OK, resp.getStatusCode());
|
||||
Assertions.assertEquals(MediaType.APPLICATION_PDF, resp.getHeaders().getContentType());
|
||||
Assertions.assertNotNull(resp.getBody());
|
||||
@@ -145,7 +147,7 @@ class MultiPageLayoutControllerTest {
|
||||
req.setAddBorder(Boolean.TRUE);
|
||||
req.setFileInput(fileNoExt);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> resp = controller.mergeMultiplePagesIntoOne(req);
|
||||
ResponseEntity<Resource> resp = controller.mergeMultiplePagesIntoOne(req);
|
||||
Assertions.assertEquals(
|
||||
"name_multi_page_layout.pdf",
|
||||
resp.getHeaders().getContentDisposition().getFilename());
|
||||
|
||||
+14
-12
@@ -25,12 +25,13 @@ import org.junit.jupiter.api.io.TempDir;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.general.OverlayPdfsRequest;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -39,14 +40,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class PdfOverlayControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -107,7 +109,7 @@ class PdfOverlayControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(((MultipartFile) inv.getArgument(0)).getBytes()));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.overlayPdfs(request);
|
||||
ResponseEntity<Resource> response = controller.overlayPdfs(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -141,7 +143,7 @@ class PdfOverlayControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(((MultipartFile) inv.getArgument(0)).getBytes()));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.overlayPdfs(request);
|
||||
ResponseEntity<Resource> response = controller.overlayPdfs(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -173,7 +175,7 @@ class PdfOverlayControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(((MultipartFile) inv.getArgument(0)).getBytes()));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.overlayPdfs(request);
|
||||
ResponseEntity<Resource> response = controller.overlayPdfs(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -204,7 +206,7 @@ class PdfOverlayControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(((MultipartFile) inv.getArgument(0)).getBytes()));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.overlayPdfs(request);
|
||||
ResponseEntity<Resource> response = controller.overlayPdfs(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -294,7 +296,7 @@ class PdfOverlayControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(((MultipartFile) inv.getArgument(0)).getBytes()));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.overlayPdfs(request);
|
||||
ResponseEntity<Resource> response = controller.overlayPdfs(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -327,7 +329,7 @@ class PdfOverlayControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(((MultipartFile) inv.getArgument(0)).getBytes()));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.overlayPdfs(request);
|
||||
ResponseEntity<Resource> response = controller.overlayPdfs(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
|
||||
+12
-12
@@ -16,10 +16,10 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.PDFWithPageNums;
|
||||
import stirling.software.SPDF.model.api.general.RearrangePagesRequest;
|
||||
@@ -67,7 +67,7 @@ class RearrangePagesPDFControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(mockDoc);
|
||||
when(mockDoc.getNumberOfPages()).thenReturn(5);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.deletePages(request);
|
||||
ResponseEntity<Resource> response = controller.deletePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -97,7 +97,7 @@ class RearrangePagesPDFControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDoc))
|
||||
.thenReturn(mockNewDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.rearrangePages(request);
|
||||
ResponseEntity<Resource> response = controller.rearrangePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -127,7 +127,7 @@ class RearrangePagesPDFControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDoc))
|
||||
.thenReturn(mockNewDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.rearrangePages(request);
|
||||
ResponseEntity<Resource> response = controller.rearrangePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
verify(mockNewDoc).addPage(page1);
|
||||
@@ -155,7 +155,7 @@ class RearrangePagesPDFControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDoc))
|
||||
.thenReturn(mockNewDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.rearrangePages(request);
|
||||
ResponseEntity<Resource> response = controller.rearrangePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
verify(mockNewDoc).addPage(page0);
|
||||
@@ -181,7 +181,7 @@ class RearrangePagesPDFControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDoc))
|
||||
.thenReturn(mockNewDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.rearrangePages(request);
|
||||
ResponseEntity<Resource> response = controller.rearrangePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -208,7 +208,7 @@ class RearrangePagesPDFControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDoc))
|
||||
.thenReturn(mockNewDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.rearrangePages(request);
|
||||
ResponseEntity<Resource> response = controller.rearrangePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -232,7 +232,7 @@ class RearrangePagesPDFControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDoc))
|
||||
.thenReturn(mockNewDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.rearrangePages(request);
|
||||
ResponseEntity<Resource> response = controller.rearrangePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -256,7 +256,7 @@ class RearrangePagesPDFControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDoc))
|
||||
.thenReturn(mockNewDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.rearrangePages(request);
|
||||
ResponseEntity<Resource> response = controller.rearrangePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -284,7 +284,7 @@ class RearrangePagesPDFControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDoc))
|
||||
.thenReturn(mockNewDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.rearrangePages(request);
|
||||
ResponseEntity<Resource> response = controller.rearrangePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -308,7 +308,7 @@ class RearrangePagesPDFControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDoc))
|
||||
.thenReturn(mockNewDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.rearrangePages(request);
|
||||
ResponseEntity<Resource> response = controller.rearrangePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
// 2 pages * 3 duplicates = 6 addPage calls
|
||||
@@ -333,7 +333,7 @@ class RearrangePagesPDFControllerTest {
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(mockDoc))
|
||||
.thenReturn(mockNewDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.rearrangePages(request);
|
||||
ResponseEntity<Resource> response = controller.rearrangePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
|
||||
+2
-2
@@ -20,10 +20,10 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.general.RotatePDFRequest;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -75,7 +75,7 @@ public class RotationControllerTest {
|
||||
when(mockPage.getRotation()).thenReturn(0);
|
||||
|
||||
// Act
|
||||
ResponseEntity<StreamingResponseBody> response = rotationController.rotatePDF(request);
|
||||
ResponseEntity<Resource> response = rotationController.rotatePDF(request);
|
||||
|
||||
// Assert
|
||||
verify(mockPage).setRotation(90);
|
||||
|
||||
+16
-14
@@ -20,11 +20,12 @@ import org.junit.jupiter.api.io.TempDir;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.general.ScalePagesRequest;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -33,14 +34,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ScalePagesControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -101,7 +103,7 @@ class ScalePagesControllerTest {
|
||||
|
||||
setupFactory();
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.scalePages(request);
|
||||
ResponseEntity<Resource> response = controller.scalePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -123,7 +125,7 @@ class ScalePagesControllerTest {
|
||||
|
||||
setupFactory();
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.scalePages(request);
|
||||
ResponseEntity<Resource> response = controller.scalePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -143,7 +145,7 @@ class ScalePagesControllerTest {
|
||||
|
||||
setupFactory();
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.scalePages(request);
|
||||
ResponseEntity<Resource> response = controller.scalePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -163,7 +165,7 @@ class ScalePagesControllerTest {
|
||||
|
||||
setupFactory();
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.scalePages(request);
|
||||
ResponseEntity<Resource> response = controller.scalePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -183,7 +185,7 @@ class ScalePagesControllerTest {
|
||||
|
||||
setupFactory();
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.scalePages(request);
|
||||
ResponseEntity<Resource> response = controller.scalePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -220,7 +222,7 @@ class ScalePagesControllerTest {
|
||||
|
||||
setupFactory();
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.scalePages(request);
|
||||
ResponseEntity<Resource> response = controller.scalePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -240,7 +242,7 @@ class ScalePagesControllerTest {
|
||||
|
||||
setupFactory();
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.scalePages(request);
|
||||
ResponseEntity<Resource> response = controller.scalePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -281,7 +283,7 @@ class ScalePagesControllerTest {
|
||||
|
||||
setupFactory();
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.scalePages(request);
|
||||
ResponseEntity<Resource> response = controller.scalePages(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
|
||||
+12
-11
@@ -31,9 +31,10 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.config.EndpointConfiguration;
|
||||
import stirling.software.SPDF.model.api.converters.ConvertEbookToPdfRequest;
|
||||
@@ -48,14 +49,15 @@ import stirling.software.common.util.WebResponseUtils;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ConvertEbookToPDFControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -145,14 +147,13 @@ class ConvertEbookToPDFControllerTest {
|
||||
return execResult;
|
||||
});
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
streamingOk("result".getBytes());
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk("result".getBytes());
|
||||
wr.when(() -> WebResponseUtils.pdfFileToWebResponse(any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
gu.when(() -> GeneralUtils.generateFilename("ebook.epub", "_convertedToPDF.pdf"))
|
||||
.thenReturn("ebook_convertedToPDF.pdf");
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertEbookToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertEbookToPdf(request);
|
||||
|
||||
assertSame(expectedResponse, response);
|
||||
|
||||
@@ -262,11 +263,11 @@ class ConvertEbookToPDFControllerTest {
|
||||
gu.when(() -> GeneralUtils.optimizePdfWithGhostscript(Mockito.any(byte[].class)))
|
||||
.thenReturn(optimizedBytes);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(optimizedBytes);
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(optimizedBytes);
|
||||
wr.when(() -> WebResponseUtils.pdfFileToWebResponse(any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertEbookToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertEbookToPdf(request);
|
||||
|
||||
assertSame(expectedResponse, response);
|
||||
gu.verify(() -> GeneralUtils.optimizePdfWithGhostscript(Mockito.any(byte[].class)));
|
||||
|
||||
+21
-19
@@ -23,11 +23,12 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.common.configuration.RuntimePathConfig;
|
||||
import stirling.software.common.model.api.converters.EmlToPdfRequest;
|
||||
@@ -40,14 +41,15 @@ import stirling.software.common.util.WebResponseUtils;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ConvertEmlToPDFTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -82,7 +84,7 @@ class ConvertEmlToPDFTest {
|
||||
EmlToPdfRequest request = new EmlToPdfRequest();
|
||||
request.setFileInput(emptyFile);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertEmlToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertEmlToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.BAD_REQUEST, response.getStatusCode());
|
||||
assertTrue(
|
||||
@@ -98,7 +100,7 @@ class ConvertEmlToPDFTest {
|
||||
EmlToPdfRequest request = new EmlToPdfRequest();
|
||||
request.setFileInput(file);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertEmlToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertEmlToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.BAD_REQUEST, response.getStatusCode());
|
||||
assertTrue(
|
||||
@@ -113,7 +115,7 @@ class ConvertEmlToPDFTest {
|
||||
EmlToPdfRequest request = new EmlToPdfRequest();
|
||||
request.setFileInput(file);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertEmlToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertEmlToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.BAD_REQUEST, response.getStatusCode());
|
||||
}
|
||||
@@ -126,7 +128,7 @@ class ConvertEmlToPDFTest {
|
||||
EmlToPdfRequest request = new EmlToPdfRequest();
|
||||
request.setFileInput(file);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertEmlToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertEmlToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.BAD_REQUEST, response.getStatusCode());
|
||||
assertTrue(
|
||||
@@ -146,7 +148,7 @@ class ConvertEmlToPDFTest {
|
||||
|
||||
when(runtimePathConfig.getWeasyPrintPath()).thenReturn("/usr/bin/weasyprint");
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(pdfBytes);
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(pdfBytes);
|
||||
|
||||
try (MockedStatic<EmlToPdf> emlMock = Mockito.mockStatic(EmlToPdf.class);
|
||||
MockedStatic<WebResponseUtils> wrMock =
|
||||
@@ -170,7 +172,7 @@ class ConvertEmlToPDFTest {
|
||||
any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertEmlToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertEmlToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
assertArrayEquals(pdfBytes, drainBody(response));
|
||||
@@ -188,7 +190,7 @@ class ConvertEmlToPDFTest {
|
||||
request.setFileInput(file);
|
||||
request.setDownloadHtml(true);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
ResponseEntity<Resource> expectedResponse =
|
||||
streamingOk(htmlContent.getBytes(StandardCharsets.UTF_8));
|
||||
|
||||
try (MockedStatic<EmlToPdf> emlMock = Mockito.mockStatic(EmlToPdf.class);
|
||||
@@ -209,7 +211,7 @@ class ConvertEmlToPDFTest {
|
||||
any(TempFile.class), anyString(), any(MediaType.class)))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertEmlToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertEmlToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
}
|
||||
@@ -235,7 +237,7 @@ class ConvertEmlToPDFTest {
|
||||
eq(customHtmlSanitizer)))
|
||||
.thenThrow(new IOException("Parse error"));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertEmlToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertEmlToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
|
||||
assertTrue(
|
||||
@@ -263,7 +265,7 @@ class ConvertEmlToPDFTest {
|
||||
any(), any(), any(), any(), any(), any(), any()))
|
||||
.thenReturn(null);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertEmlToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertEmlToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
|
||||
assertTrue(
|
||||
@@ -287,7 +289,7 @@ class ConvertEmlToPDFTest {
|
||||
|
||||
when(runtimePathConfig.getWeasyPrintPath()).thenReturn("/usr/bin/weasyprint");
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(pdfBytes);
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(pdfBytes);
|
||||
|
||||
try (MockedStatic<EmlToPdf> emlMock = Mockito.mockStatic(EmlToPdf.class);
|
||||
MockedStatic<WebResponseUtils> wrMock =
|
||||
@@ -305,7 +307,7 @@ class ConvertEmlToPDFTest {
|
||||
any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertEmlToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertEmlToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
}
|
||||
@@ -330,7 +332,7 @@ class ConvertEmlToPDFTest {
|
||||
any(), any(), any(), any(), any(), any(), any()))
|
||||
.thenThrow(new InterruptedException("interrupted"));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertEmlToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertEmlToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
|
||||
assertTrue(
|
||||
|
||||
+12
-10
@@ -20,10 +20,11 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.common.configuration.RuntimePathConfig;
|
||||
import stirling.software.common.model.api.converters.HTMLToPdfRequest;
|
||||
@@ -37,14 +38,15 @@ import stirling.software.common.util.WebResponseUtils;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ConvertHtmlToPDFTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -104,7 +106,7 @@ class ConvertHtmlToPDFTest {
|
||||
when(pdfDocumentFactory.createNewBytesBasedOnOldDocument(pdfBytes))
|
||||
.thenReturn(processedPdf);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(processedPdf);
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(processedPdf);
|
||||
|
||||
try (MockedStatic<FileToPdf> ftpMock = Mockito.mockStatic(FileToPdf.class);
|
||||
MockedStatic<GeneralUtils> guMock = Mockito.mockStatic(GeneralUtils.class);
|
||||
@@ -131,7 +133,7 @@ class ConvertHtmlToPDFTest {
|
||||
any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.HtmlToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.HtmlToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
}
|
||||
@@ -152,7 +154,7 @@ class ConvertHtmlToPDFTest {
|
||||
when(pdfDocumentFactory.createNewBytesBasedOnOldDocument(pdfBytes))
|
||||
.thenReturn(processedPdf);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(processedPdf);
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(processedPdf);
|
||||
|
||||
try (MockedStatic<FileToPdf> ftpMock = Mockito.mockStatic(FileToPdf.class);
|
||||
MockedStatic<GeneralUtils> guMock = Mockito.mockStatic(GeneralUtils.class);
|
||||
@@ -179,7 +181,7 @@ class ConvertHtmlToPDFTest {
|
||||
any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.HtmlToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.HtmlToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
}
|
||||
|
||||
+8
-6
@@ -12,9 +12,10 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.config.EndpointConfiguration;
|
||||
import stirling.software.SPDF.model.api.converters.ConvertToPdfRequest;
|
||||
@@ -26,14 +27,15 @@ import stirling.software.common.util.WebResponseUtils;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ConvertImgPDFControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
|
||||
+10
-8
@@ -22,10 +22,11 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.common.configuration.RuntimePathConfig;
|
||||
import stirling.software.common.model.api.GeneralFile;
|
||||
@@ -39,14 +40,15 @@ import stirling.software.common.util.WebResponseUtils;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ConvertMarkdownToPdfTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -106,7 +108,7 @@ class ConvertMarkdownToPdfTest {
|
||||
when(pdfDocumentFactory.createNewBytesBasedOnOldDocument(any(byte[].class)))
|
||||
.thenReturn(processedPdf);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(processedPdf);
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(processedPdf);
|
||||
|
||||
try (MockedStatic<FileToPdf> ftpMock = Mockito.mockStatic(FileToPdf.class);
|
||||
MockedStatic<GeneralUtils> guMock = Mockito.mockStatic(GeneralUtils.class);
|
||||
@@ -133,7 +135,7 @@ class ConvertMarkdownToPdfTest {
|
||||
any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.markdownToPdf(generalFile);
|
||||
ResponseEntity<Resource> response = controller.markdownToPdf(generalFile);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
}
|
||||
|
||||
+11
-9
@@ -30,10 +30,11 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.config.EndpointConfiguration;
|
||||
import stirling.software.SPDF.model.api.converters.ConvertPdfToEpubRequest;
|
||||
@@ -48,14 +49,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ConvertPDFToEpubControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -142,7 +144,7 @@ class ConvertPDFToEpubControllerTest {
|
||||
|
||||
gu.when(() -> GeneralUtils.generateFilename("novel.pdf", "_convertedToEPUB.epub"))
|
||||
.thenReturn("novel_convertedToEPUB.epub");
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertPdfToEpub(request);
|
||||
ResponseEntity<Resource> response = controller.convertPdfToEpub(request);
|
||||
|
||||
List<String> command = commandCaptor.getValue();
|
||||
assertEquals(13, command.size());
|
||||
@@ -234,7 +236,7 @@ class ConvertPDFToEpubControllerTest {
|
||||
|
||||
gu.when(() -> GeneralUtils.generateFilename("story.pdf", "_convertedToEPUB.epub"))
|
||||
.thenReturn("story_convertedToEPUB.epub");
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertPdfToEpub(request);
|
||||
ResponseEntity<Resource> response = controller.convertPdfToEpub(request);
|
||||
|
||||
List<String> command = commandCaptor.getValue();
|
||||
assertTrue(command.stream().noneMatch(arg -> "--chapter".equals(arg)));
|
||||
@@ -319,7 +321,7 @@ class ConvertPDFToEpubControllerTest {
|
||||
|
||||
gu.when(() -> GeneralUtils.generateFilename("book.pdf", "_convertedToAZW3.azw3"))
|
||||
.thenReturn("book_convertedToAZW3.azw3");
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertPdfToEpub(request);
|
||||
ResponseEntity<Resource> response = controller.convertPdfToEpub(request);
|
||||
|
||||
List<String> command = commandCaptor.getValue();
|
||||
assertEquals("ebook-convert", command.get(0));
|
||||
|
||||
+2
-2
@@ -20,10 +20,10 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.PDFWithPageNums;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -81,7 +81,7 @@ class ConvertPDFToExcelControllerTest {
|
||||
Mockito.eq(true)))
|
||||
.thenReturn(List.of(1));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.pdfToExcel(request);
|
||||
ResponseEntity<Resource> response = controller.pdfToExcel(request);
|
||||
|
||||
// tabula may or may not find tables in an empty page
|
||||
assertNotNull(response);
|
||||
|
||||
+11
-12
@@ -21,10 +21,11 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.converters.PdfToPresentationRequest;
|
||||
import stirling.software.SPDF.model.api.converters.PdfToTextOrRTFRequest;
|
||||
@@ -40,14 +41,15 @@ import stirling.software.common.util.WebResponseUtils;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ConvertPDFToOfficeTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -85,8 +87,7 @@ class ConvertPDFToOfficeTest {
|
||||
request.setFileInput(pdfFile);
|
||||
request.setOutputFormat("pptx");
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
streamingOk("pptx-content".getBytes());
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk("pptx-content".getBytes());
|
||||
|
||||
try (MockedStatic<PDFToFile> mock =
|
||||
Mockito.mockStatic(PDFToFile.class, Mockito.CALLS_REAL_METHODS)) {
|
||||
@@ -115,8 +116,7 @@ class ConvertPDFToOfficeTest {
|
||||
realDoc.addPage(new org.apache.pdfbox.pdmodel.PDPage());
|
||||
when(pdfDocumentFactory.load(pdfFile)).thenReturn(realDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
streamingOk("text content".getBytes());
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk("text content".getBytes());
|
||||
|
||||
try (MockedStatic<GeneralUtils> guMock = Mockito.mockStatic(GeneralUtils.class);
|
||||
MockedStatic<WebResponseUtils> wrMock =
|
||||
@@ -131,8 +131,7 @@ class ConvertPDFToOfficeTest {
|
||||
any(TempFile.class), anyString(), any(MediaType.class)))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.processPdfToRTForTXT(request);
|
||||
ResponseEntity<Resource> response = controller.processPdfToRTForTXT(request);
|
||||
|
||||
assertSame(expectedResponse, response);
|
||||
}
|
||||
|
||||
+65
-20
@@ -4,16 +4,18 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.doAnswer;
|
||||
import static org.mockito.Mockito.lenient;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.file.Files;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
@@ -22,11 +24,11 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.service.PdfJsonConversionService;
|
||||
import stirling.software.common.model.api.GeneralFile;
|
||||
@@ -58,10 +60,11 @@ class ConvertPdfJsonControllerTest {
|
||||
});
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws IOException {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream in = response.getBody().getInputStream()) {
|
||||
in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -82,10 +85,17 @@ class ConvertPdfJsonControllerTest {
|
||||
PDFFile request = new PDFFile();
|
||||
request.setFileInput(pdfFile);
|
||||
|
||||
when(pdfJsonConversionService.convertPdfToJson(pdfFile, false)).thenReturn(jsonBytes);
|
||||
// Service writes directly to the OutputStream passed by the controller
|
||||
doAnswer(
|
||||
inv -> {
|
||||
OutputStream os = inv.getArgument(2, OutputStream.class);
|
||||
os.write(jsonBytes);
|
||||
return null;
|
||||
})
|
||||
.when(pdfJsonConversionService)
|
||||
.convertPdfToJson(eq(pdfFile), eq(false), any(OutputStream.class));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.convertPdfToJson(request, false);
|
||||
ResponseEntity<Resource> response = controller.convertPdfToJson(request, false);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
assertNotNull(response.getBody());
|
||||
@@ -100,12 +110,20 @@ class ConvertPdfJsonControllerTest {
|
||||
PDFFile request = new PDFFile();
|
||||
request.setFileInput(pdfFile);
|
||||
|
||||
when(pdfJsonConversionService.convertPdfToJson(pdfFile, true)).thenReturn(jsonBytes);
|
||||
doAnswer(
|
||||
inv -> {
|
||||
OutputStream os = inv.getArgument(2, OutputStream.class);
|
||||
os.write(jsonBytes);
|
||||
return null;
|
||||
})
|
||||
.when(pdfJsonConversionService)
|
||||
.convertPdfToJson(eq(pdfFile), eq(true), any(OutputStream.class));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertPdfToJson(request, true);
|
||||
ResponseEntity<Resource> response = controller.convertPdfToJson(request, true);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
verify(pdfJsonConversionService).convertPdfToJson(pdfFile, true);
|
||||
verify(pdfJsonConversionService)
|
||||
.convertPdfToJson(eq(pdfFile), eq(true), any(OutputStream.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -125,9 +143,16 @@ class ConvertPdfJsonControllerTest {
|
||||
GeneralFile request = new GeneralFile();
|
||||
request.setFileInput(jsonFile);
|
||||
|
||||
when(pdfJsonConversionService.convertJsonToPdf(jsonFile)).thenReturn(pdfBytes);
|
||||
doAnswer(
|
||||
inv -> {
|
||||
OutputStream os = inv.getArgument(1, OutputStream.class);
|
||||
os.write(pdfBytes);
|
||||
return null;
|
||||
})
|
||||
.when(pdfJsonConversionService)
|
||||
.convertJsonToPdf(eq(jsonFile), any(OutputStream.class));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertJsonToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertJsonToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
assertNotNull(response.getBody());
|
||||
@@ -150,10 +175,16 @@ class ConvertPdfJsonControllerTest {
|
||||
PDFFile request = new PDFFile();
|
||||
request.setFileInput(pdfFile);
|
||||
|
||||
when(pdfJsonConversionService.extractDocumentMetadata(eq(pdfFile), any(String.class)))
|
||||
.thenReturn(jsonBytes);
|
||||
doAnswer(
|
||||
inv -> {
|
||||
OutputStream os = inv.getArgument(2, OutputStream.class);
|
||||
os.write(jsonBytes);
|
||||
return null;
|
||||
})
|
||||
.when(pdfJsonConversionService)
|
||||
.extractDocumentMetadata(eq(pdfFile), any(String.class), any(OutputStream.class));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.extractPdfMetadata(request);
|
||||
ResponseEntity<Resource> response = controller.extractPdfMetadata(request);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
assertEquals(MediaType.APPLICATION_JSON, response.getHeaders().getContentType());
|
||||
@@ -175,9 +206,16 @@ class ConvertPdfJsonControllerTest {
|
||||
byte[] jsonBytes = "{\"content\":[]}".getBytes();
|
||||
String jobId = "test-job-id";
|
||||
|
||||
when(pdfJsonConversionService.extractSinglePage(jobId, 1)).thenReturn(jsonBytes);
|
||||
doAnswer(
|
||||
inv -> {
|
||||
OutputStream os = inv.getArgument(2, OutputStream.class);
|
||||
os.write(jsonBytes);
|
||||
return null;
|
||||
})
|
||||
.when(pdfJsonConversionService)
|
||||
.extractSinglePage(eq(jobId), anyInt(), any(OutputStream.class));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.extractSinglePage(jobId, 1);
|
||||
ResponseEntity<Resource> response = controller.extractSinglePage(jobId, 1);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
assertNotNull(response.getBody());
|
||||
@@ -188,9 +226,16 @@ class ConvertPdfJsonControllerTest {
|
||||
byte[] jsonBytes = "{\"fonts\":[]}".getBytes();
|
||||
String jobId = "test-job-id";
|
||||
|
||||
when(pdfJsonConversionService.extractPageFonts(jobId, 1)).thenReturn(jsonBytes);
|
||||
doAnswer(
|
||||
inv -> {
|
||||
OutputStream os = inv.getArgument(2, OutputStream.class);
|
||||
os.write(jsonBytes);
|
||||
return null;
|
||||
})
|
||||
.when(pdfJsonConversionService)
|
||||
.extractPageFonts(eq(jobId), anyInt(), any(OutputStream.class));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.extractPageFonts(jobId, 1);
|
||||
ResponseEntity<Resource> response = controller.extractPageFonts(jobId, 1);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
assertNotNull(response.getBody());
|
||||
|
||||
+18
-16
@@ -21,10 +21,11 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.converters.SvgToPdfRequest;
|
||||
import stirling.software.SPDF.utils.SvgToPdf;
|
||||
@@ -37,14 +38,15 @@ import stirling.software.common.util.WebResponseUtils;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ConvertSvgToPDFTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -75,7 +77,7 @@ class ConvertSvgToPDFTest {
|
||||
SvgToPdfRequest request = new SvgToPdfRequest();
|
||||
request.setFileInput(null);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertSvgToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertSvgToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.BAD_REQUEST, response.getStatusCode());
|
||||
assertTrue(
|
||||
@@ -88,7 +90,7 @@ class ConvertSvgToPDFTest {
|
||||
SvgToPdfRequest request = new SvgToPdfRequest();
|
||||
request.setFileInput(new MockMultipartFile[0]);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertSvgToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertSvgToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.BAD_REQUEST, response.getStatusCode());
|
||||
}
|
||||
@@ -102,7 +104,7 @@ class ConvertSvgToPDFTest {
|
||||
request.setFileInput(new MockMultipartFile[] {txtFile});
|
||||
request.setCombineIntoSinglePdf(false);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertSvgToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertSvgToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.BAD_REQUEST, response.getStatusCode());
|
||||
assertTrue(
|
||||
@@ -118,7 +120,7 @@ class ConvertSvgToPDFTest {
|
||||
request.setFileInput(new MockMultipartFile[] {emptyFile});
|
||||
request.setCombineIntoSinglePdf(false);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertSvgToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertSvgToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.BAD_REQUEST, response.getStatusCode());
|
||||
}
|
||||
@@ -141,7 +143,7 @@ class ConvertSvgToPDFTest {
|
||||
when(pdfDocumentFactory.createNewBytesBasedOnOldDocument(pdfBytes))
|
||||
.thenReturn(processedPdf);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(processedPdf);
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(processedPdf);
|
||||
|
||||
try (MockedStatic<SvgToPdf> svgMock = Mockito.mockStatic(SvgToPdf.class);
|
||||
MockedStatic<GeneralUtils> guMock = Mockito.mockStatic(GeneralUtils.class);
|
||||
@@ -159,7 +161,7 @@ class ConvertSvgToPDFTest {
|
||||
any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertSvgToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertSvgToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
}
|
||||
@@ -188,7 +190,7 @@ class ConvertSvgToPDFTest {
|
||||
when(pdfDocumentFactory.createNewBytesBasedOnOldDocument(combinedPdf))
|
||||
.thenReturn(processedPdf);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(processedPdf);
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(processedPdf);
|
||||
|
||||
try (MockedStatic<SvgToPdf> svgMock = Mockito.mockStatic(SvgToPdf.class);
|
||||
MockedStatic<GeneralUtils> guMock = Mockito.mockStatic(GeneralUtils.class);
|
||||
@@ -206,7 +208,7 @@ class ConvertSvgToPDFTest {
|
||||
any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertSvgToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertSvgToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
}
|
||||
@@ -221,7 +223,7 @@ class ConvertSvgToPDFTest {
|
||||
request.setFileInput(new MockMultipartFile[] {nullNameFile});
|
||||
request.setCombineIntoSinglePdf(false);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertSvgToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertSvgToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.BAD_REQUEST, response.getStatusCode());
|
||||
}
|
||||
@@ -238,7 +240,7 @@ class ConvertSvgToPDFTest {
|
||||
|
||||
when(svgSanitizer.sanitize(svgContent)).thenThrow(new IOException("sanitization error"));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.convertSvgToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertSvgToPdf(request);
|
||||
|
||||
assertEquals(HttpStatus.BAD_REQUEST, response.getStatusCode());
|
||||
}
|
||||
|
||||
+8
-6
@@ -30,12 +30,13 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.converters.UrlToPdfRequest;
|
||||
import stirling.software.common.configuration.RuntimePathConfig;
|
||||
@@ -49,14 +50,15 @@ import stirling.software.common.util.TempFile;
|
||||
import stirling.software.common.util.TempFileManager;
|
||||
|
||||
public class ConvertWebsiteToPdfTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
|
||||
+6
-6
@@ -24,10 +24,10 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.config.EndpointConfiguration;
|
||||
import stirling.software.SPDF.model.api.converters.PdfVectorExportRequest;
|
||||
@@ -122,8 +122,7 @@ class PdfVectorExportControllerTest {
|
||||
PdfVectorExportRequest request = new PdfVectorExportRequest();
|
||||
request.setFileInput(file);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.convertGhostscriptInputsToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertGhostscriptInputsToPdf(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(org.springframework.http.HttpStatus.OK);
|
||||
assertThat(response.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_PDF);
|
||||
@@ -140,13 +139,14 @@ class PdfVectorExportControllerTest {
|
||||
PdfVectorExportRequest request = new PdfVectorExportRequest();
|
||||
request.setFileInput(file);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.convertGhostscriptInputsToPdf(request);
|
||||
ResponseEntity<Resource> response = controller.convertGhostscriptInputsToPdf(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(org.springframework.http.HttpStatus.OK);
|
||||
assertThat(response.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_PDF);
|
||||
java.io.ByteArrayOutputStream baosVerify = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baosVerify);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baosVerify);
|
||||
}
|
||||
assertThat(baosVerify.toByteArray()).contains(content);
|
||||
}
|
||||
|
||||
|
||||
+14
-12
@@ -13,11 +13,12 @@ import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.PDFComparisonAndCount;
|
||||
import stirling.software.SPDF.model.api.PDFWithPageNums;
|
||||
@@ -32,14 +33,15 @@ import stirling.software.common.util.WebResponseUtils;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class FilterControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -72,7 +74,7 @@ class FilterControllerTest {
|
||||
PDDocument mockDoc = mock(PDDocument.class);
|
||||
when(pdfDocumentFactory.load(mockFile)).thenReturn(mockDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(new byte[] {1, 2, 3});
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(new byte[] {1, 2, 3});
|
||||
|
||||
try (MockedStatic<PdfUtils> pdfUtilsMock = mockStatic(PdfUtils.class);
|
||||
MockedStatic<WebResponseUtils> webMock = mockStatic(WebResponseUtils.class)) {
|
||||
@@ -84,7 +86,7 @@ class FilterControllerTest {
|
||||
mockDoc, "test.pdf", tempFileManager))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> result = filterController.containsText(request);
|
||||
ResponseEntity<Resource> result = filterController.containsText(request);
|
||||
|
||||
assertEquals(HttpStatus.OK, result.getStatusCode());
|
||||
assertArrayEquals(new byte[] {1, 2, 3}, drainBody(result));
|
||||
@@ -104,7 +106,7 @@ class FilterControllerTest {
|
||||
try (MockedStatic<PdfUtils> pdfUtilsMock = mockStatic(PdfUtils.class)) {
|
||||
pdfUtilsMock.when(() -> PdfUtils.hasText(mockDoc, "all", "missing")).thenReturn(false);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> result = filterController.containsText(request);
|
||||
ResponseEntity<Resource> result = filterController.containsText(request);
|
||||
|
||||
assertEquals(HttpStatus.NO_CONTENT, result.getStatusCode());
|
||||
assertNull(result.getBody());
|
||||
@@ -122,7 +124,7 @@ class FilterControllerTest {
|
||||
PDDocument mockDoc = mock(PDDocument.class);
|
||||
when(pdfDocumentFactory.load(mockFile)).thenReturn(mockDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(new byte[] {4, 5, 6});
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(new byte[] {4, 5, 6});
|
||||
|
||||
try (MockedStatic<PdfUtils> pdfUtilsMock = mockStatic(PdfUtils.class);
|
||||
MockedStatic<WebResponseUtils> webMock = mockStatic(WebResponseUtils.class)) {
|
||||
@@ -134,7 +136,7 @@ class FilterControllerTest {
|
||||
mockDoc, "test.pdf", tempFileManager))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> result = filterController.containsImage(request);
|
||||
ResponseEntity<Resource> result = filterController.containsImage(request);
|
||||
|
||||
assertEquals(HttpStatus.OK, result.getStatusCode());
|
||||
assertArrayEquals(new byte[] {4, 5, 6}, drainBody(result));
|
||||
@@ -153,7 +155,7 @@ class FilterControllerTest {
|
||||
try (MockedStatic<PdfUtils> pdfUtilsMock = mockStatic(PdfUtils.class)) {
|
||||
pdfUtilsMock.when(() -> PdfUtils.hasImages(mockDoc, "1")).thenReturn(false);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> result = filterController.containsImage(request);
|
||||
ResponseEntity<Resource> result = filterController.containsImage(request);
|
||||
|
||||
assertEquals(HttpStatus.NO_CONTENT, result.getStatusCode());
|
||||
}
|
||||
|
||||
+12
-12
@@ -22,10 +22,11 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
import stirling.software.common.util.TempFile;
|
||||
@@ -37,14 +38,15 @@ import tools.jackson.databind.json.JsonMapper;
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@DisplayName("FormFillController Tests")
|
||||
class FormFillControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -232,8 +234,7 @@ class FormFillControllerTest {
|
||||
when(pdfDocumentFactory.load(eq(file))).thenReturn(doc);
|
||||
|
||||
byte[] payload = "{\"field1\":\"value1\"}".getBytes();
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.fillForm(file, payload, false);
|
||||
ResponseEntity<Resource> response = controller.fillForm(file, payload, false);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
assertThat(response.getBody()).isNotNull();
|
||||
@@ -246,7 +247,7 @@ class FormFillControllerTest {
|
||||
PDDocument doc = createMinimalPdf();
|
||||
when(pdfDocumentFactory.load(eq(file))).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.fillForm(file, null, false);
|
||||
ResponseEntity<Resource> response = controller.fillForm(file, null, false);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
@@ -287,7 +288,7 @@ class FormFillControllerTest {
|
||||
when(pdfDocumentFactory.load(eq(file))).thenReturn(doc);
|
||||
|
||||
byte[] payload = "[\"field1\"]".getBytes();
|
||||
ResponseEntity<StreamingResponseBody> response = controller.deleteFields(file, payload);
|
||||
ResponseEntity<Resource> response = controller.deleteFields(file, payload);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
@@ -323,8 +324,7 @@ class FormFillControllerTest {
|
||||
String json =
|
||||
"[{\"targetName\":\"f1\",\"name\":null,\"label\":null,\"type\":null,"
|
||||
+ "\"required\":null,\"multiSelect\":null,\"options\":null,\"defaultValue\":\"newVal\",\"tooltip\":null}]";
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.modifyFields(file, json.getBytes());
|
||||
ResponseEntity<Resource> response = controller.modifyFields(file, json.getBytes());
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
|
||||
+12
-14
@@ -17,12 +17,13 @@ import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.misc.AddAttachmentRequest;
|
||||
import stirling.software.SPDF.service.AttachmentServiceInterface;
|
||||
@@ -33,14 +34,15 @@ import stirling.software.common.util.WebResponseUtils;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class AttachmentControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -100,8 +102,7 @@ class AttachmentControllerTest {
|
||||
List<MultipartFile> attachments = List.of(attachment1, attachment2);
|
||||
request.setAttachments(attachments);
|
||||
request.setFileInput(pdfFile);
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
streamingOk("modified PDF content".getBytes());
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk("modified PDF content".getBytes());
|
||||
|
||||
when(pdfDocumentFactory.load(request, false)).thenReturn(mockDocument);
|
||||
when(pdfAttachmentService.addAttachment(mockDocument, attachments))
|
||||
@@ -118,8 +119,7 @@ class AttachmentControllerTest {
|
||||
any(TempFileManager.class)))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
attachmentController.addAttachments(request);
|
||||
ResponseEntity<Resource> response = attachmentController.addAttachments(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -134,8 +134,7 @@ class AttachmentControllerTest {
|
||||
List<MultipartFile> attachments = List.of(attachment1);
|
||||
request.setAttachments(attachments);
|
||||
request.setFileInput(pdfFile);
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
streamingOk("modified PDF content".getBytes());
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk("modified PDF content".getBytes());
|
||||
|
||||
when(pdfDocumentFactory.load(request, false)).thenReturn(mockDocument);
|
||||
when(pdfAttachmentService.addAttachment(mockDocument, attachments))
|
||||
@@ -152,8 +151,7 @@ class AttachmentControllerTest {
|
||||
any(TempFileManager.class)))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
attachmentController.addAttachments(request);
|
||||
ResponseEntity<Resource> response = attachmentController.addAttachments(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
|
||||
+15
-13
@@ -23,11 +23,12 @@ import org.junit.jupiter.api.io.TempDir;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.misc.ExtractHeaderRequest;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -36,14 +37,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class AutoRenameControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -101,7 +103,7 @@ class AutoRenameControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.extractHeader(request);
|
||||
ResponseEntity<Resource> response = controller.extractHeader(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
assertThat(drainBody(response)).isNotEmpty();
|
||||
@@ -127,7 +129,7 @@ class AutoRenameControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.extractHeader(request);
|
||||
ResponseEntity<Resource> response = controller.extractHeader(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
@@ -140,7 +142,7 @@ class AutoRenameControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.extractHeader(request);
|
||||
ResponseEntity<Resource> response = controller.extractHeader(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
@@ -188,7 +190,7 @@ class AutoRenameControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.extractHeader(request);
|
||||
ResponseEntity<Resource> response = controller.extractHeader(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
// The largest font text should be used as title (URL-encoded in Content-Disposition)
|
||||
@@ -206,7 +208,7 @@ class AutoRenameControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.extractHeader(request);
|
||||
ResponseEntity<Resource> response = controller.extractHeader(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
// Should fallback to original filename since header is too long
|
||||
@@ -222,7 +224,7 @@ class AutoRenameControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.extractHeader(request);
|
||||
ResponseEntity<Resource> response = controller.extractHeader(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
// Special characters should be sanitized
|
||||
@@ -248,7 +250,7 @@ class AutoRenameControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.extractHeader(request);
|
||||
ResponseEntity<Resource> response = controller.extractHeader(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
|
||||
+14
-12
@@ -23,11 +23,12 @@ import org.junit.jupiter.api.io.TempDir;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.common.model.api.PDFFile;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -36,14 +37,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class DecompressPdfControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -97,7 +99,7 @@ class DecompressPdfControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.decompressPdf(request);
|
||||
ResponseEntity<Resource> response = controller.decompressPdf(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
assertThat(drainBody(response)).isNotEmpty();
|
||||
@@ -116,7 +118,7 @@ class DecompressPdfControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.decompressPdf(request);
|
||||
ResponseEntity<Resource> response = controller.decompressPdf(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
assertThat(drainBody(response)).isNotEmpty();
|
||||
@@ -147,7 +149,7 @@ class DecompressPdfControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.decompressPdf(request);
|
||||
ResponseEntity<Resource> response = controller.decompressPdf(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
String contentDisposition = response.getHeaders().getFirst("Content-Disposition");
|
||||
@@ -183,7 +185,7 @@ class DecompressPdfControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.decompressPdf(request);
|
||||
ResponseEntity<Resource> response = controller.decompressPdf(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
try (PDDocument result = Loader.loadPDF(drainBody(response))) {
|
||||
@@ -200,7 +202,7 @@ class DecompressPdfControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.decompressPdf(request);
|
||||
ResponseEntity<Resource> response = controller.decompressPdf(request);
|
||||
|
||||
assertThat(response.getBody()).isNotNull();
|
||||
// Decompressed PDF should generally be larger or equal to compressed
|
||||
@@ -216,7 +218,7 @@ class DecompressPdfControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.decompressPdf(request);
|
||||
ResponseEntity<Resource> response = controller.decompressPdf(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
|
||||
+15
-13
@@ -25,11 +25,12 @@ import org.junit.jupiter.api.io.TempDir;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.misc.FlattenRequest;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -38,14 +39,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class FlattenControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -98,7 +100,7 @@ class FlattenControllerTest {
|
||||
PDDocument doc = Loader.loadPDF(file.getBytes());
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.flatten(request);
|
||||
ResponseEntity<Resource> response = controller.flatten(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
assertThat(drainBody(response)).isNotEmpty();
|
||||
@@ -118,7 +120,7 @@ class FlattenControllerTest {
|
||||
when(doc.getDocumentCatalog()).thenReturn(catalog);
|
||||
when(catalog.getAcroForm()).thenReturn(null);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.flatten(request);
|
||||
ResponseEntity<Resource> response = controller.flatten(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
verify(doc).close();
|
||||
@@ -138,7 +140,7 @@ class FlattenControllerTest {
|
||||
when(doc.getDocumentCatalog()).thenReturn(catalog);
|
||||
when(catalog.getAcroForm()).thenReturn(form);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.flatten(request);
|
||||
ResponseEntity<Resource> response = controller.flatten(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
verify(form).flatten();
|
||||
@@ -170,7 +172,7 @@ class FlattenControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(doc)).thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.flatten(request);
|
||||
ResponseEntity<Resource> response = controller.flatten(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
assertThat(drainBody(response)).isNotEmpty();
|
||||
@@ -188,7 +190,7 @@ class FlattenControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(doc)).thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.flatten(request);
|
||||
ResponseEntity<Resource> response = controller.flatten(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
@@ -206,7 +208,7 @@ class FlattenControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(doc)).thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.flatten(request);
|
||||
ResponseEntity<Resource> response = controller.flatten(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
@@ -224,7 +226,7 @@ class FlattenControllerTest {
|
||||
when(pdfDocumentFactory.load(file)).thenReturn(doc);
|
||||
when(pdfDocumentFactory.createNewDocumentBasedOnOldDocument(doc)).thenReturn(newDoc);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.flatten(request);
|
||||
ResponseEntity<Resource> response = controller.flatten(request);
|
||||
|
||||
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
|
||||
}
|
||||
|
||||
+17
-19
@@ -23,11 +23,12 @@ import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.misc.OverlayImageRequest;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -37,14 +38,15 @@ import stirling.software.common.util.WebResponseUtils;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class OverlayImageControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -108,8 +110,7 @@ class OverlayImageControllerTest {
|
||||
|
||||
try (MockedStatic<WebResponseUtils> mockedWebResponse =
|
||||
mockStatic(WebResponseUtils.class)) {
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
streamingOk("result".getBytes());
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk("result".getBytes());
|
||||
mockedWebResponse
|
||||
.when(
|
||||
() ->
|
||||
@@ -117,7 +118,7 @@ class OverlayImageControllerTest {
|
||||
any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.overlayImage(request);
|
||||
ResponseEntity<Resource> response = controller.overlayImage(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -136,7 +137,7 @@ class OverlayImageControllerTest {
|
||||
|
||||
when(pdfDocumentFactory.load(any(byte[].class))).thenThrow(new IOException("bad PDF"));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.overlayImage(request);
|
||||
ResponseEntity<Resource> response = controller.overlayImage(request);
|
||||
|
||||
assertEquals(HttpStatus.BAD_REQUEST, response.getStatusCode());
|
||||
}
|
||||
@@ -157,8 +158,7 @@ class OverlayImageControllerTest {
|
||||
|
||||
try (MockedStatic<WebResponseUtils> mockedWebResponse =
|
||||
mockStatic(WebResponseUtils.class)) {
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
streamingOk("result".getBytes());
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk("result".getBytes());
|
||||
mockedWebResponse
|
||||
.when(
|
||||
() ->
|
||||
@@ -166,7 +166,7 @@ class OverlayImageControllerTest {
|
||||
any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.overlayImage(request);
|
||||
ResponseEntity<Resource> response = controller.overlayImage(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -189,8 +189,7 @@ class OverlayImageControllerTest {
|
||||
|
||||
try (MockedStatic<WebResponseUtils> mockedWebResponse =
|
||||
mockStatic(WebResponseUtils.class)) {
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
streamingOk("result".getBytes());
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk("result".getBytes());
|
||||
mockedWebResponse
|
||||
.when(
|
||||
() ->
|
||||
@@ -198,7 +197,7 @@ class OverlayImageControllerTest {
|
||||
any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.overlayImage(request);
|
||||
ResponseEntity<Resource> response = controller.overlayImage(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -221,8 +220,7 @@ class OverlayImageControllerTest {
|
||||
|
||||
try (MockedStatic<WebResponseUtils> mockedWebResponse =
|
||||
mockStatic(WebResponseUtils.class)) {
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
streamingOk("result".getBytes());
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk("result".getBytes());
|
||||
mockedWebResponse
|
||||
.when(
|
||||
() ->
|
||||
@@ -231,7 +229,7 @@ class OverlayImageControllerTest {
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
// Should not throw - coordinates are passed to contentStream.drawImage
|
||||
ResponseEntity<StreamingResponseBody> response = controller.overlayImage(request);
|
||||
ResponseEntity<Resource> response = controller.overlayImage(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
|
||||
+15
-16
@@ -17,12 +17,13 @@ import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.InputStreamResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.misc.ReplaceAndInvertColorRequest;
|
||||
import stirling.software.SPDF.service.misc.ReplaceAndInvertColorService;
|
||||
@@ -34,14 +35,15 @@ import stirling.software.common.util.WebResponseUtils;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ReplaceAndInvertColorControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -96,7 +98,7 @@ class ReplaceAndInvertColorControllerTest {
|
||||
|
||||
try (MockedStatic<WebResponseUtils> mockedWebResponse =
|
||||
mockStatic(WebResponseUtils.class)) {
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(resultBytes);
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(resultBytes);
|
||||
mockedWebResponse
|
||||
.when(
|
||||
() ->
|
||||
@@ -104,8 +106,7 @@ class ReplaceAndInvertColorControllerTest {
|
||||
any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.replaceAndInvertColor(request);
|
||||
ResponseEntity<Resource> response = controller.replaceAndInvertColor(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -132,7 +133,7 @@ class ReplaceAndInvertColorControllerTest {
|
||||
|
||||
try (MockedStatic<WebResponseUtils> mockedWebResponse =
|
||||
mockStatic(WebResponseUtils.class)) {
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(resultBytes);
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(resultBytes);
|
||||
mockedWebResponse
|
||||
.when(
|
||||
() ->
|
||||
@@ -140,8 +141,7 @@ class ReplaceAndInvertColorControllerTest {
|
||||
any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.replaceAndInvertColor(request);
|
||||
ResponseEntity<Resource> response = controller.replaceAndInvertColor(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -166,7 +166,7 @@ class ReplaceAndInvertColorControllerTest {
|
||||
|
||||
try (MockedStatic<WebResponseUtils> mockedWebResponse =
|
||||
mockStatic(WebResponseUtils.class)) {
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(resultBytes);
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(resultBytes);
|
||||
mockedWebResponse
|
||||
.when(
|
||||
() ->
|
||||
@@ -174,8 +174,7 @@ class ReplaceAndInvertColorControllerTest {
|
||||
any(TempFile.class), anyString()))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
controller.replaceAndInvertColor(request);
|
||||
ResponseEntity<Resource> response = controller.replaceAndInvertColor(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -205,7 +204,7 @@ class ReplaceAndInvertColorControllerTest {
|
||||
|
||||
try (MockedStatic<WebResponseUtils> mockedWebResponse =
|
||||
mockStatic(WebResponseUtils.class)) {
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse = streamingOk(resultBytes);
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk(resultBytes);
|
||||
mockedWebResponse
|
||||
.when(
|
||||
() ->
|
||||
|
||||
+16
-18
@@ -19,11 +19,12 @@ import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.common.model.api.PDFFile;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -33,14 +34,15 @@ import stirling.software.common.util.WebResponseUtils;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ShowJavascriptTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -86,8 +88,7 @@ class ShowJavascriptTest {
|
||||
|
||||
try (MockedStatic<WebResponseUtils> mockedWebResponse =
|
||||
mockStatic(WebResponseUtils.class)) {
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
streamingOk("no js".getBytes());
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk("no js".getBytes());
|
||||
mockedWebResponse
|
||||
.when(
|
||||
() ->
|
||||
@@ -97,7 +98,7 @@ class ShowJavascriptTest {
|
||||
eq(MediaType.TEXT_PLAIN)))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = showJavascript.extractHeader(request);
|
||||
ResponseEntity<Resource> response = showJavascript.extractHeader(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -129,8 +130,7 @@ class ShowJavascriptTest {
|
||||
|
||||
try (MockedStatic<WebResponseUtils> mockedWebResponse =
|
||||
mockStatic(WebResponseUtils.class)) {
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
streamingOk("js content".getBytes());
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk("js content".getBytes());
|
||||
mockedWebResponse
|
||||
.when(
|
||||
() ->
|
||||
@@ -140,7 +140,7 @@ class ShowJavascriptTest {
|
||||
eq(MediaType.TEXT_PLAIN)))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = showJavascript.extractHeader(request);
|
||||
ResponseEntity<Resource> response = showJavascript.extractHeader(request);
|
||||
|
||||
assertNotNull(response);
|
||||
mockedWebResponse.verify(
|
||||
@@ -160,8 +160,7 @@ class ShowJavascriptTest {
|
||||
|
||||
try (MockedStatic<WebResponseUtils> mockedWebResponse =
|
||||
mockStatic(WebResponseUtils.class)) {
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
streamingOk("no js".getBytes());
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk("no js".getBytes());
|
||||
mockedWebResponse
|
||||
.when(
|
||||
() ->
|
||||
@@ -171,7 +170,7 @@ class ShowJavascriptTest {
|
||||
eq(MediaType.TEXT_PLAIN)))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = showJavascript.extractHeader(request);
|
||||
ResponseEntity<Resource> response = showJavascript.extractHeader(request);
|
||||
|
||||
assertNotNull(response);
|
||||
mockedWebResponse.verify(
|
||||
@@ -200,8 +199,7 @@ class ShowJavascriptTest {
|
||||
|
||||
try (MockedStatic<WebResponseUtils> mockedWebResponse =
|
||||
mockStatic(WebResponseUtils.class)) {
|
||||
ResponseEntity<StreamingResponseBody> expectedResponse =
|
||||
streamingOk("no js".getBytes());
|
||||
ResponseEntity<Resource> expectedResponse = streamingOk("no js".getBytes());
|
||||
mockedWebResponse
|
||||
.when(
|
||||
() ->
|
||||
@@ -211,7 +209,7 @@ class ShowJavascriptTest {
|
||||
eq(MediaType.TEXT_PLAIN)))
|
||||
.thenReturn(expectedResponse);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = showJavascript.extractHeader(request);
|
||||
ResponseEntity<Resource> response = showJavascript.extractHeader(request);
|
||||
|
||||
assertNotNull(response);
|
||||
mockedWebResponse.verify(
|
||||
|
||||
+6
-6
@@ -16,9 +16,9 @@ import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.common.model.api.PDFFile;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -67,7 +67,7 @@ class UnlockPDFFormsControllerTest {
|
||||
PDFFile file = new PDFFile();
|
||||
file.setFileInput(mockPdfFile);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.unlockPDFForms(file);
|
||||
ResponseEntity<Resource> response = controller.unlockPDFForms(file);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -85,7 +85,7 @@ class UnlockPDFFormsControllerTest {
|
||||
PDFFile file = new PDFFile();
|
||||
file.setFileInput(mockPdfFile);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.unlockPDFForms(file);
|
||||
ResponseEntity<Resource> response = controller.unlockPDFForms(file);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -99,7 +99,7 @@ class UnlockPDFFormsControllerTest {
|
||||
PDFFile file = new PDFFile();
|
||||
file.setFileInput(mockPdfFile);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.unlockPDFForms(file);
|
||||
ResponseEntity<Resource> response = controller.unlockPDFForms(file);
|
||||
|
||||
// Controller catches exceptions and returns null
|
||||
assertNull(response);
|
||||
@@ -114,7 +114,7 @@ class UnlockPDFFormsControllerTest {
|
||||
PDFFile file = new PDFFile();
|
||||
file.setFileInput(mockPdfFile);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.unlockPDFForms(file);
|
||||
ResponseEntity<Resource> response = controller.unlockPDFForms(file);
|
||||
|
||||
assertNotNull(response);
|
||||
String contentDisposition = response.getHeaders().getFirst("Content-Disposition");
|
||||
@@ -133,7 +133,7 @@ class UnlockPDFFormsControllerTest {
|
||||
PDFFile file = new PDFFile();
|
||||
file.setFileInput(mockPdfFile);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = controller.unlockPDFForms(file);
|
||||
ResponseEntity<Resource> response = controller.unlockPDFForms(file);
|
||||
|
||||
assertNotNull(response);
|
||||
assertTrue(acroForm.getNeedAppearances());
|
||||
|
||||
+15
-20
@@ -22,12 +22,13 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.security.SignPDFWithCertRequest;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -36,14 +37,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class CertSignControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -167,8 +169,7 @@ class CertSignControllerTest {
|
||||
request.setPageNumber(1);
|
||||
request.setShowLogo(false);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
certSignController.signPDFWithCert(request);
|
||||
ResponseEntity<Resource> response = certSignController.signPDFWithCert(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
@@ -194,8 +195,7 @@ class CertSignControllerTest {
|
||||
request.setPageNumber(1);
|
||||
request.setShowLogo(false);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
certSignController.signPDFWithCert(request);
|
||||
ResponseEntity<Resource> response = certSignController.signPDFWithCert(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
@@ -247,8 +247,7 @@ class CertSignControllerTest {
|
||||
request.setPageNumber(1);
|
||||
request.setShowLogo(false);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
certSignController.signPDFWithCert(request);
|
||||
ResponseEntity<Resource> response = certSignController.signPDFWithCert(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
@@ -279,8 +278,7 @@ class CertSignControllerTest {
|
||||
request.setPageNumber(1);
|
||||
request.setShowLogo(false);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
certSignController.signPDFWithCert(request);
|
||||
ResponseEntity<Resource> response = certSignController.signPDFWithCert(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
@@ -311,8 +309,7 @@ class CertSignControllerTest {
|
||||
request.setPageNumber(1);
|
||||
request.setShowLogo(false);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
certSignController.signPDFWithCert(request);
|
||||
ResponseEntity<Resource> response = certSignController.signPDFWithCert(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
@@ -343,8 +340,7 @@ class CertSignControllerTest {
|
||||
request.setPageNumber(1);
|
||||
request.setShowLogo(false);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
certSignController.signPDFWithCert(request);
|
||||
ResponseEntity<Resource> response = certSignController.signPDFWithCert(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
@@ -375,8 +371,7 @@ class CertSignControllerTest {
|
||||
request.setPageNumber(1);
|
||||
request.setShowLogo(false);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
certSignController.signPDFWithCert(request);
|
||||
ResponseEntity<Resource> response = certSignController.signPDFWithCert(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
|
||||
+20
-30
@@ -27,12 +27,13 @@ import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.mockito.junit.jupiter.MockitoSettings;
|
||||
import org.mockito.quality.Strictness;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.security.AddPasswordRequest;
|
||||
import stirling.software.SPDF.model.api.security.PDFPasswordRequest;
|
||||
@@ -44,14 +45,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@MockitoSettings(strictness = Strictness.LENIENT)
|
||||
class PasswordControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -120,8 +122,7 @@ class PasswordControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyString()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
passwordController.removePassword(request);
|
||||
ResponseEntity<Resource> response = passwordController.removePassword(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
@@ -145,8 +146,7 @@ class PasswordControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyString()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
passwordController.removePassword(request);
|
||||
ResponseEntity<Resource> response = passwordController.removePassword(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertNotNull(response.getBody());
|
||||
@@ -209,8 +209,7 @@ class PasswordControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyString()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
passwordController.removePassword(request);
|
||||
ResponseEntity<Resource> response = passwordController.removePassword(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -228,8 +227,7 @@ class PasswordControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyString()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
passwordController.removePassword(request);
|
||||
ResponseEntity<Resource> response = passwordController.removePassword(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
}
|
||||
@@ -257,8 +255,7 @@ class PasswordControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
passwordController.addPassword(request);
|
||||
ResponseEntity<Resource> response = passwordController.addPassword(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
@@ -283,8 +280,7 @@ class PasswordControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
passwordController.addPassword(request);
|
||||
ResponseEntity<Resource> response = passwordController.addPassword(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
@@ -310,8 +306,7 @@ class PasswordControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
passwordController.addPassword(request);
|
||||
ResponseEntity<Resource> response = passwordController.addPassword(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -334,8 +329,7 @@ class PasswordControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
passwordController.addPassword(request);
|
||||
ResponseEntity<Resource> response = passwordController.addPassword(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -366,8 +360,7 @@ class PasswordControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
passwordController.addPassword(request);
|
||||
ResponseEntity<Resource> response = passwordController.addPassword(request);
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
}
|
||||
@@ -392,8 +385,7 @@ class PasswordControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
passwordController.addPassword(request);
|
||||
ResponseEntity<Resource> response = passwordController.addPassword(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -416,8 +408,7 @@ class PasswordControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
passwordController.addPassword(request);
|
||||
ResponseEntity<Resource> response = passwordController.addPassword(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -440,8 +431,7 @@ class PasswordControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
passwordController.addPassword(request);
|
||||
ResponseEntity<Resource> response = passwordController.addPassword(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
}
|
||||
|
||||
+15
-13
@@ -44,10 +44,11 @@ import org.mockito.junit.jupiter.MockitoSettings;
|
||||
import org.mockito.quality.Strictness;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.security.ManualRedactPdfRequest;
|
||||
import stirling.software.SPDF.model.api.security.RedactPdfRequest;
|
||||
@@ -60,14 +61,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@MockitoSettings(strictness = Strictness.LENIENT)
|
||||
class RedactControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -328,7 +330,7 @@ class RedactControllerTest {
|
||||
mock(org.apache.pdfbox.pdmodel.PDDocumentInformation.class);
|
||||
when(mockDocument.getDocumentInformation()).thenReturn(mockInfo);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = redactController.redactPdf(request);
|
||||
ResponseEntity<Resource> response = redactController.redactPdf(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -732,7 +734,7 @@ class RedactControllerTest {
|
||||
request.setConvertPDFToImage(convertToImage);
|
||||
|
||||
try {
|
||||
ResponseEntity<StreamingResponseBody> response = redactController.redactPdf(request);
|
||||
ResponseEntity<Resource> response = redactController.redactPdf(request);
|
||||
|
||||
if (expectSuccess && response != null) {
|
||||
assertNotNull(response);
|
||||
@@ -757,7 +759,7 @@ class RedactControllerTest {
|
||||
request.setConvertPDFToImage(convertToImage);
|
||||
|
||||
try {
|
||||
ResponseEntity<StreamingResponseBody> response = redactController.redactPDF(request);
|
||||
ResponseEntity<Resource> response = redactController.redactPDF(request);
|
||||
|
||||
if (response != null) {
|
||||
assertNotNull(response);
|
||||
@@ -948,7 +950,7 @@ class RedactControllerTest {
|
||||
request.setListOfText("test");
|
||||
request.setRedactColor(null);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = redactController.redactPdf(request);
|
||||
ResponseEntity<Resource> response = redactController.redactPdf(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -972,7 +974,7 @@ class RedactControllerTest {
|
||||
ManualRedactPdfRequest request = createManualRedactPdfRequest();
|
||||
request.setRedactions(null);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = redactController.redactPDF(request);
|
||||
ResponseEntity<Resource> response = redactController.redactPDF(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -984,7 +986,7 @@ class RedactControllerTest {
|
||||
ManualRedactPdfRequest request = createManualRedactPdfRequest();
|
||||
request.setPageNumbers("100-200");
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = redactController.redactPDF(request);
|
||||
ResponseEntity<Resource> response = redactController.redactPDF(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
@@ -1449,7 +1451,7 @@ class RedactControllerTest {
|
||||
request.setUseRegex(false);
|
||||
request.setWholeWordSearch(false);
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response = redactController.redactPdf(request);
|
||||
ResponseEntity<Resource> response = redactController.redactPdf(request);
|
||||
|
||||
assertNotNull(response);
|
||||
assertEquals(200, response.getStatusCode().value());
|
||||
|
||||
+15
-20
@@ -27,12 +27,13 @@ import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.mockito.junit.jupiter.MockitoSettings;
|
||||
import org.mockito.quality.Strictness;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.common.model.api.PDFFile;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -43,14 +44,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@MockitoSettings(strictness = Strictness.LENIENT)
|
||||
class RemoveCertSignControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -103,8 +105,7 @@ class RemoveCertSignControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
removeCertSignController.removeCertSignPDF(request);
|
||||
ResponseEntity<Resource> response = removeCertSignController.removeCertSignPDF(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
@@ -127,8 +128,7 @@ class RemoveCertSignControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
removeCertSignController.removeCertSignPDF(request);
|
||||
ResponseEntity<Resource> response = removeCertSignController.removeCertSignPDF(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
@@ -159,8 +159,7 @@ class RemoveCertSignControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(pdfWithAcroForm));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
removeCertSignController.removeCertSignPDF(request);
|
||||
ResponseEntity<Resource> response = removeCertSignController.removeCertSignPDF(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -190,8 +189,7 @@ class RemoveCertSignControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(pdfWithSig));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
removeCertSignController.removeCertSignPDF(request);
|
||||
ResponseEntity<Resource> response = removeCertSignController.removeCertSignPDF(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -211,8 +209,7 @@ class RemoveCertSignControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
removeCertSignController.removeCertSignPDF(request);
|
||||
ResponseEntity<Resource> response = removeCertSignController.removeCertSignPDF(request);
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
}
|
||||
@@ -230,8 +227,7 @@ class RemoveCertSignControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
removeCertSignController.removeCertSignPDF(request);
|
||||
ResponseEntity<Resource> response = removeCertSignController.removeCertSignPDF(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -261,8 +257,7 @@ class RemoveCertSignControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(multiPagePdf));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
removeCertSignController.removeCertSignPDF(request);
|
||||
ResponseEntity<Resource> response = removeCertSignController.removeCertSignPDF(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
|
||||
+19
-28
@@ -35,12 +35,13 @@ import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.mockito.junit.jupiter.MockitoSettings;
|
||||
import org.mockito.quality.Strictness;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.security.SanitizePdfRequest;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -51,14 +52,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@MockitoSettings(strictness = Strictness.LENIENT)
|
||||
class SanitizeControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -170,8 +172,7 @@ class SanitizeControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyBoolean()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(jsBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
sanitizeController.sanitizePDF(request);
|
||||
ResponseEntity<Resource> response = sanitizeController.sanitizePDF(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
@@ -199,8 +200,7 @@ class SanitizeControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyBoolean()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
sanitizeController.sanitizePDF(request);
|
||||
ResponseEntity<Resource> response = sanitizeController.sanitizePDF(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
}
|
||||
@@ -229,8 +229,7 @@ class SanitizeControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyBoolean()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(linkBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
sanitizeController.sanitizePDF(request);
|
||||
ResponseEntity<Resource> response = sanitizeController.sanitizePDF(request);
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
}
|
||||
@@ -260,8 +259,7 @@ class SanitizeControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyBoolean()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(metaBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
sanitizeController.sanitizePDF(request);
|
||||
ResponseEntity<Resource> response = sanitizeController.sanitizePDF(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -287,8 +285,7 @@ class SanitizeControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyBoolean()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
sanitizeController.sanitizePDF(request);
|
||||
ResponseEntity<Resource> response = sanitizeController.sanitizePDF(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
}
|
||||
@@ -319,8 +316,7 @@ class SanitizeControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyBoolean()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
sanitizeController.sanitizePDF(request);
|
||||
ResponseEntity<Resource> response = sanitizeController.sanitizePDF(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
}
|
||||
@@ -349,8 +345,7 @@ class SanitizeControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyBoolean()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(jsBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
sanitizeController.sanitizePDF(request);
|
||||
ResponseEntity<Resource> response = sanitizeController.sanitizePDF(request);
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
}
|
||||
@@ -377,8 +372,7 @@ class SanitizeControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyBoolean()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
sanitizeController.sanitizePDF(request);
|
||||
ResponseEntity<Resource> response = sanitizeController.sanitizePDF(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -399,8 +393,7 @@ class SanitizeControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyBoolean()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
sanitizeController.sanitizePDF(request);
|
||||
ResponseEntity<Resource> response = sanitizeController.sanitizePDF(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -426,8 +419,7 @@ class SanitizeControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyBoolean()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
sanitizeController.sanitizePDF(request);
|
||||
ResponseEntity<Resource> response = sanitizeController.sanitizePDF(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -453,8 +445,7 @@ class SanitizeControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class), anyBoolean()))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
sanitizeController.sanitizePDF(request);
|
||||
ResponseEntity<Resource> response = sanitizeController.sanitizePDF(request);
|
||||
assertNotNull(response);
|
||||
assertEquals(HttpStatus.OK, response.getStatusCode());
|
||||
}
|
||||
|
||||
+17
-24
@@ -28,12 +28,13 @@ import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.mockito.junit.jupiter.MockitoSettings;
|
||||
import org.mockito.quality.Strictness;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.SPDF.model.api.security.AddWatermarkRequest;
|
||||
import stirling.software.common.service.CustomPDFDocumentFactory;
|
||||
@@ -44,14 +45,15 @@ import stirling.software.common.util.TempFileManager;
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@MockitoSettings(strictness = Strictness.LENIENT)
|
||||
class WatermarkControllerTest {
|
||||
private static ResponseEntity<StreamingResponseBody> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(out -> out.write(bytes));
|
||||
private static ResponseEntity<Resource> streamingOk(byte[] bytes) {
|
||||
return ResponseEntity.ok(new ByteArrayResource(bytes));
|
||||
}
|
||||
|
||||
private static byte[] drainBody(ResponseEntity<StreamingResponseBody> response)
|
||||
throws java.io.IOException {
|
||||
private static byte[] drainBody(ResponseEntity<Resource> response) throws java.io.IOException {
|
||||
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
|
||||
response.getBody().writeTo(baos);
|
||||
try (java.io.InputStream __in = response.getBody().getInputStream()) {
|
||||
__in.transferTo(baos);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
@@ -122,8 +124,7 @@ class WatermarkControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
watermarkController.addWatermark(request);
|
||||
ResponseEntity<Resource> response = watermarkController.addWatermark(request);
|
||||
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
@@ -156,8 +157,7 @@ class WatermarkControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
watermarkController.addWatermark(request);
|
||||
ResponseEntity<Resource> response = watermarkController.addWatermark(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -187,8 +187,7 @@ class WatermarkControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
watermarkController.addWatermark(request);
|
||||
ResponseEntity<Resource> response = watermarkController.addWatermark(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -218,8 +217,7 @@ class WatermarkControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
watermarkController.addWatermark(request);
|
||||
ResponseEntity<Resource> response = watermarkController.addWatermark(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -249,8 +247,7 @@ class WatermarkControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
watermarkController.addWatermark(request);
|
||||
ResponseEntity<Resource> response = watermarkController.addWatermark(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
}
|
||||
@@ -386,8 +383,7 @@ class WatermarkControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(multiPagePdf));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
watermarkController.addWatermark(request);
|
||||
ResponseEntity<Resource> response = watermarkController.addWatermark(request);
|
||||
assertNotNull(response.getBody());
|
||||
assertTrue(drainBody(response).length > 0);
|
||||
}
|
||||
@@ -428,8 +424,7 @@ class WatermarkControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
watermarkController.addWatermark(request);
|
||||
ResponseEntity<Resource> response = watermarkController.addWatermark(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -456,8 +451,7 @@ class WatermarkControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
watermarkController.addWatermark(request);
|
||||
ResponseEntity<Resource> response = watermarkController.addWatermark(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
|
||||
@@ -487,8 +481,7 @@ class WatermarkControllerTest {
|
||||
when(pdfDocumentFactory.load(any(MultipartFile.class)))
|
||||
.thenAnswer(inv -> Loader.loadPDF(simplePdfBytes));
|
||||
|
||||
ResponseEntity<StreamingResponseBody> response =
|
||||
watermarkController.addWatermark(request);
|
||||
ResponseEntity<Resource> response = watermarkController.addWatermark(request);
|
||||
assertNotNull(response.getBody());
|
||||
}
|
||||
}
|
||||
|
||||
+10
-14
@@ -3,7 +3,6 @@ package stirling.software.SPDF.model.api.converters;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.*;
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch;
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.multipart;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
||||
|
||||
@@ -13,16 +12,16 @@ import org.junit.jupiter.api.Test;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.MockedConstruction;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.MvcResult;
|
||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
||||
|
||||
import stirling.software.common.util.PDFToFile;
|
||||
|
||||
@@ -37,11 +36,11 @@ class ConvertPDFToMarkdownTest {
|
||||
@RestControllerAdvice
|
||||
static class GlobalErrorHandler {
|
||||
@ExceptionHandler(Exception.class)
|
||||
ResponseEntity<StreamingResponseBody> handle(Exception ex) {
|
||||
ResponseEntity<Resource> handle(Exception ex) {
|
||||
String message = ex.getMessage();
|
||||
byte[] body = message != null ? message.getBytes(StandardCharsets.UTF_8) : new byte[0];
|
||||
StreamingResponseBody stream = out -> out.write(body);
|
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(stream);
|
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
.body(new ByteArrayResource(body));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,13 +52,12 @@ class ConvertPDFToMarkdownTest {
|
||||
Mockito.mockConstruction(
|
||||
PDFToFile.class,
|
||||
(mock, ctx) -> {
|
||||
StreamingResponseBody stream = out -> out.write(md);
|
||||
when(mock.processPdfToMarkdown(any(MultipartFile.class)))
|
||||
.thenAnswer(
|
||||
inv ->
|
||||
ResponseEntity.ok()
|
||||
.header("Content-Type", "text/markdown")
|
||||
.body(stream));
|
||||
.body(new ByteArrayResource(md)));
|
||||
})) {
|
||||
|
||||
MockMvc mvc = mockMvc();
|
||||
@@ -71,12 +69,10 @@ class ConvertPDFToMarkdownTest {
|
||||
"application/pdf",
|
||||
new byte[] {1, 2, 3});
|
||||
|
||||
MvcResult asyncResult =
|
||||
mvc.perform(multipart("/api/v1/convert/pdf/markdown").file(file))
|
||||
.andExpect(request().asyncStarted())
|
||||
.andReturn();
|
||||
|
||||
mvc.perform(asyncDispatch(asyncResult))
|
||||
// ResponseEntity<Resource> is written synchronously on the request thread,
|
||||
// so there is no async dispatch to wait for (unlike the old StreamingResponseBody
|
||||
// path).
|
||||
mvc.perform(multipart("/api/v1/convert/pdf/markdown").file(file))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(header().string("Content-Type", "text/markdown"))
|
||||
.andExpect(content().bytes(md));
|
||||
|
||||
+23
-5
@@ -5,6 +5,8 @@ import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -52,7 +54,11 @@ class PdfLazyLoadingServiceTest {
|
||||
Exception.class,
|
||||
() ->
|
||||
service.extractDocumentMetadata(
|
||||
null, "job1", new HashMap<>(), new HashMap<>()));
|
||||
null,
|
||||
"job1",
|
||||
new HashMap<>(),
|
||||
new HashMap<>(),
|
||||
new ByteArrayOutputStream()));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -89,7 +95,8 @@ class PdfLazyLoadingServiceTest {
|
||||
page -> null,
|
||||
cos -> cos,
|
||||
(doc, pageNum) -> new java.util.ArrayList<>(),
|
||||
(doc, pageNum) -> new java.util.ArrayList<>()));
|
||||
(doc, pageNum) -> new java.util.ArrayList<>(),
|
||||
new ByteArrayOutputStream()));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -108,15 +115,26 @@ class PdfLazyLoadingServiceTest {
|
||||
metadata.setNumberOfPages(1);
|
||||
when(metadataService.extractMetadata(any())).thenReturn(metadata);
|
||||
when(metadataService.extractXmpMetadata(any())).thenReturn(null);
|
||||
when(objectMapper.writeValueAsBytes(any())).thenReturn(new byte[] {'{', '}'});
|
||||
// Service now writes directly to the OutputStream using writeValue, not writeValueAsBytes.
|
||||
// ObjectMapper.writeValue(OutputStream, Object) — the OutputStream is argument 0.
|
||||
doAnswer(
|
||||
inv -> {
|
||||
OutputStream os = inv.getArgument(0, OutputStream.class);
|
||||
os.write(new byte[] {'{', '}'});
|
||||
return null;
|
||||
})
|
||||
.when(objectMapper)
|
||||
.writeValue(any(OutputStream.class), any());
|
||||
when(taskManager.addNote(any(), any())).thenReturn(true);
|
||||
|
||||
Map<String, PdfJsonFont> fonts = new HashMap<>();
|
||||
Map<Integer, Map<PDFont, String>> pageFontResources = new HashMap<>();
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
|
||||
byte[] result = service.extractDocumentMetadata(file, "job1", fonts, pageFontResources);
|
||||
service.extractDocumentMetadata(file, "job1", fonts, pageFontResources, out);
|
||||
|
||||
assertNotNull(result);
|
||||
assertNotNull(out.toByteArray());
|
||||
assertEquals(2, out.toByteArray().length);
|
||||
verify(metadataService).extractMetadata(any());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user