From 6320e04b6488c78eadf9bd71744be4faae666555 Mon Sep 17 00:00:00 2001 From: David Edwards Date: Wed, 22 Apr 2020 16:55:30 +0100 Subject: [PATCH] ATS-702 Add AIO tests from Pdf Renderer (#233) * ATS-702 implement AIOControllerTikaTest * ATS-702 Implement PDFIT in AIO --- .../alfresco-transform-core-aio-boot/pom.xml | 8 ++ .../AIOControllerPdfRendererTest.java | 128 ++++++++++++++++++ .../transformer/AIOPdfRendererIT.java | 39 ++++++ .../pom.xml | 17 ++- .../AlfrescoPdfRendererControllerTest.java | 30 ++-- .../AlfrescoPdfRendererTransformationIT.java | 20 ++- .../alfresco-transform-tika/pom.xml | 4 + pom.xml | 1 + 8 files changed, 229 insertions(+), 18 deletions(-) create mode 100644 alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/test/java/org/alfresco/transformer/AIOControllerPdfRendererTest.java create mode 100644 alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/test/java/org/alfresco/transformer/AIOPdfRendererIT.java diff --git a/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/pom.xml b/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/pom.xml index 056b2e56..f8f297fc 100644 --- a/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/pom.xml +++ b/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/pom.xml @@ -46,6 +46,14 @@ test-jar test + + org.alfresco + alfresco-transform-pdf-renderer-boot + ${project.version} + tests + test-jar + test + org.alfresco alfresco-transform-tika-boot diff --git a/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/test/java/org/alfresco/transformer/AIOControllerPdfRendererTest.java b/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/test/java/org/alfresco/transformer/AIOControllerPdfRendererTest.java new file mode 100644 index 00000000..82fd2d23 --- /dev/null +++ b/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/test/java/org/alfresco/transformer/AIOControllerPdfRendererTest.java @@ -0,0 +1,128 @@ +/* + * #%L + * Alfresco Transform Core + * %% + * Copyright (C) 2005 - 2020 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * - + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * - + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * - + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * - + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ +package org.alfresco.transformer; + +import static org.junit.Assert.assertTrue; + +import java.util.Map; + +import javax.annotation.PostConstruct; + +import org.alfresco.transformer.transformers.PdfRendererAdapter; +import org.alfresco.transformer.transformers.Transformer; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.context.annotation.Import; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.util.ReflectionTestUtils; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; + +@RunWith(SpringRunner.class) +@WebMvcTest(AIOController.class) +@Import(AIOCustomConfig.class) +/** + * Test the AIOController PDF Renderer transforms without a server. + * Super class includes tests for the AbstractTransformerController. + */ +public class AIOControllerPdfRendererTest extends AlfrescoPdfRendererControllerTest +{ + // All tests contained IN AlfrescoPdfRendererControllerTest + PdfRendererAdapter adapter; + + @Autowired + AIOTransformRegistry transformRegistry; + + @PostConstruct + private void init() throws Exception + { + adapter = new PdfRendererAdapter(execPath); + } + + @Override + protected void setFields() + { + ReflectionTestUtils.setField(commandExecutor, "transformCommand", mockTransformCommand); + ReflectionTestUtils.setField(commandExecutor, "checkCommand", mockCheckCommand); + ReflectionTestUtils.setField(adapter, "pdfExecutor", commandExecutor); + //Need to wire in the mocked adapter into the controller... + Map transformers = transformRegistry.getTransformerTransformMapping(); + transformers.replace("pdfrenderer", adapter); + } + + @Override + protected MockHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, + String... params) + { + final MockHttpServletRequestBuilder builder = super.mockMvcRequest(url, sourceFile, params) + .param("targetMimetype", targetMimetype) + .param("sourceMimetype", sourceMimetype); + + return builder; + } + + @Test + public void testTestValidity() + { + // just test that we are actually testing against the AIOController (instead of MiscController) + assertTrue("Wrong controller wired for test", controller instanceof AIOController); + } + + @Test + @Override + public void testGetTransformConfigInfo() + { + // Ignore the test in super class as the way the AIO transformer provides config is fundementally different. + + + } + @Test + @Override + public void testGetInfoFromConfigWithDuplicates() + { + // Ignore the test in super class as the way the AIO transformer provides config is fundementally different. + + } + + @Test + @Override + public void testGetInfoFromConfigWithEmptyTransformOptions() + { + // Ignore the test in super class as the way the AIO transformer provides config is fundementally different. + + } + + @Test + @Override + public void testGetInfoFromConfigWithNoTransformOptions() + { + // Ignore the test in super class as the way the AIO transformer provides config is fundementally different. + + } +} \ No newline at end of file diff --git a/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/test/java/org/alfresco/transformer/AIOPdfRendererIT.java b/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/test/java/org/alfresco/transformer/AIOPdfRendererIT.java new file mode 100644 index 00000000..91d715e0 --- /dev/null +++ b/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/test/java/org/alfresco/transformer/AIOPdfRendererIT.java @@ -0,0 +1,39 @@ +/* + * #%L + * Alfresco Transform Core + * %% + * Copyright (C) 2005 - 2020 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * - + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * - + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * - + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * - + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ +package org.alfresco.transformer; + +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +@RunWith(Parameterized.class) +public class AIOPdfRendererIT extends AlfrescoPdfRendererTransformationIT { + // Tests are in AlfrescoPdfRendererTransformationIT + public AIOPdfRendererIT(String sourceFile) + { + super(sourceFile); + } +} diff --git a/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/pom.xml b/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/pom.xml index 3876f7b9..905278ed 100644 --- a/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/pom.xml +++ b/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/pom.xml @@ -80,16 +80,23 @@ org.apache.maven.plugins maven-surefire-plugin - - - /usr/bin/alfresco-pdf-renderer - - org.apache.maven.plugins maven-failsafe-plugin + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + + test-jar + + + + diff --git a/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/src/test/java/org/alfresco/transformer/AlfrescoPdfRendererControllerTest.java b/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/src/test/java/org/alfresco/transformer/AlfrescoPdfRendererControllerTest.java index c209089f..6e01fc93 100644 --- a/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/src/test/java/org/alfresco/transformer/AlfrescoPdfRendererControllerTest.java +++ b/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/src/test/java/org/alfresco/transformer/AlfrescoPdfRendererControllerTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2019 Alfresco Software Limited + * Copyright (C) 2005 - 2020 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -67,9 +67,9 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.stubbing.Answer; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; @@ -96,15 +96,15 @@ public class AlfrescoPdfRendererControllerTest extends AbstractTransformerContro private ExecutionResult mockExecutionResult; @Mock - private RuntimeExec mockTransformCommand; + protected RuntimeExec mockTransformCommand; @Mock - private RuntimeExec mockCheckCommand; + protected RuntimeExec mockCheckCommand; @Value("${transform.core.pdfrenderer.exe}") - private String execPath; + protected String execPath; - PdfRendererCommandExecutor commandExecutor; + protected PdfRendererCommandExecutor commandExecutor; @PostConstruct private void init() @@ -112,17 +112,22 @@ public class AlfrescoPdfRendererControllerTest extends AbstractTransformerContro commandExecutor = new PdfRendererCommandExecutor(execPath); } - @SpyBean - private AlfrescoPdfRendererController controller; + @Autowired + protected AbstractTransformerController controller; @Before public void before() throws IOException + { + setFields(); + + mockTransformCommand("pdf", "png", APPLICATION_PDF_VALUE, true); + } + + protected void setFields() { ReflectionTestUtils.setField(commandExecutor, "transformCommand", mockTransformCommand); ReflectionTestUtils.setField(commandExecutor, "checkCommand", mockCheckCommand); ReflectionTestUtils.setField(controller, "commandExecutor", commandExecutor); - - mockTransformCommand("pdf", "png", "application/pdf", true); } @Override @@ -139,6 +144,7 @@ public class AlfrescoPdfRendererControllerTest extends AbstractTransformerContro this.sourceExtension = sourceExtension; this.targetExtension = targetExtension; this.sourceMimetype = sourceMimetype; + this.targetMimetype = IMAGE_PNG_VALUE; expectedOptions = null; expectedSourceSuffix = null; @@ -220,6 +226,8 @@ public class AlfrescoPdfRendererControllerTest extends AbstractTransformerContro .multipart("/transform") .file(sourceFile) .param("targetExtension", targetExtension) + .param("targetMimetype", targetMimetype) + .param("sourceMimetype", sourceMimetype) .param("page", "2") @@ -242,6 +250,8 @@ public class AlfrescoPdfRendererControllerTest extends AbstractTransformerContro .multipart("/transform") .file(sourceFile) .param("targetExtension", targetExtension) + .param("targetMimetype", targetMimetype) + .param("sourceMimetype", sourceMimetype) .param("page", "2") diff --git a/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/src/test/java/org/alfresco/transformer/AlfrescoPdfRendererTransformationIT.java b/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/src/test/java/org/alfresco/transformer/AlfrescoPdfRendererTransformationIT.java index 269a76a2..dd38d3dd 100644 --- a/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/src/test/java/org/alfresco/transformer/AlfrescoPdfRendererTransformationIT.java +++ b/alfresco-transform-pdf-renderer/alfresco-transform-pdf-renderer-boot/src/test/java/org/alfresco/transformer/AlfrescoPdfRendererTransformationIT.java @@ -27,12 +27,17 @@ package org.alfresco.transformer; import static java.text.MessageFormat.format; +import static java.util.function.Function.identity; +import static java.util.stream.Collectors.toMap; import static org.alfresco.transformer.EngineClient.sendTRequest; +import static org.alfresco.transformer.TestFileInfo.testFile; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import static org.springframework.http.HttpStatus.OK; +import java.util.Map; import java.util.Set; +import java.util.stream.Stream; import org.junit.Test; import org.junit.runner.RunWith; @@ -54,11 +59,19 @@ public class AlfrescoPdfRendererTransformationIT AlfrescoPdfRendererTransformationIT.class); private static final String ENGINE_URL = "http://localhost:8090"; + private static final Map TEST_FILES = Stream.of( + testFile("application/pdf","pdf","quick.pdf"), + testFile("application/illustrator","ai","quickCS3.ai") , + testFile("application/illustrator","ai","quickCS5.ai") + ).collect(toMap(TestFileInfo::getPath, identity())); + private final String sourceFile; + private final String sourceMimetype; public AlfrescoPdfRendererTransformationIT(String sourceFile) { this.sourceFile = sourceFile; + this.sourceMimetype = TEST_FILES.get(sourceFile).getMimeType(); } @Parameterized.Parameters @@ -74,12 +87,13 @@ public class AlfrescoPdfRendererTransformationIT @Test public void testTransformation() { - final String descriptor = format("Transform ({0} -> png)", sourceFile); + final String descriptor = format("Transform ({0}, {1} -> {2}, {3})", + sourceFile, sourceMimetype, "image/png", "png"); try { - final ResponseEntity response = sendTRequest(ENGINE_URL, sourceFile, null, - null, "png"); + final ResponseEntity response = sendTRequest(ENGINE_URL, sourceFile, sourceMimetype, + "image/png", "png"); assertEquals(descriptor, OK, response.getStatusCode()); } catch (Exception e) diff --git a/alfresco-transform-tika/alfresco-transform-tika/pom.xml b/alfresco-transform-tika/alfresco-transform-tika/pom.xml index eee57232..a80a58f5 100644 --- a/alfresco-transform-tika/alfresco-transform-tika/pom.xml +++ b/alfresco-transform-tika/alfresco-transform-tika/pom.xml @@ -47,6 +47,10 @@ org.quartz-scheduler quartz + + xml-apis + xml-apis + diff --git a/pom.xml b/pom.xml index c951949a..f0b06eaa 100644 --- a/pom.xml +++ b/pom.xml @@ -346,6 +346,7 @@ /usr/bin/convert /usr/lib64/ImageMagick-7.0.7/lib /usr/lib64/ImageMagick-7.0.7 + /usr/bin/alfresco-pdf-renderer ${project.build.directory}