From 952cfef306d24b8d107e8f46975976d94c6a7d96 Mon Sep 17 00:00:00 2001 From: Erik Knizat Date: Mon, 6 Apr 2020 16:02:01 +0100 Subject: [PATCH] Initial tests * Add initial tests for config aggregation * Update AbstractTransformerControllerTest to use the new engine config names --- .../alfresco/transformer/AIOCustomConfig.java | 16 ++++- .../transformers/AllInOneTransformer.java | 28 +++----- .../transformers/AllInOneTransformerTest.java | 67 ++++++++++++++++--- .../ImageMagickControllerTest.java | 8 +++ .../LibreOfficeControllerTest.java | 9 +++ .../transformer/MiscControllerTest.java | 8 +++ .../AlfrescoPdfRendererControllerTest.java | 9 +++ .../transformer/TikaControllerTest.java | 7 ++ .../AbstractTransformerControllerTest.java | 14 +++- 9 files changed, 131 insertions(+), 35 deletions(-) diff --git a/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/main/java/org/alfresco/transformer/AIOCustomConfig.java b/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/main/java/org/alfresco/transformer/AIOCustomConfig.java index 86db8fd1..15bada5b 100644 --- a/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/main/java/org/alfresco/transformer/AIOCustomConfig.java +++ b/alfresco-transform-core-aio/alfresco-transform-core-aio-boot/src/main/java/org/alfresco/transformer/AIOCustomConfig.java @@ -29,6 +29,11 @@ package org.alfresco.transformer; import org.alfresco.transform.client.model.config.TransformConfig; import org.alfresco.transform.client.registry.TransformServiceRegistry; import org.alfresco.transformer.transformers.AllInOneTransformer; +import org.alfresco.transformer.transformers.ImageMagickAdapter; +import org.alfresco.transformer.transformers.LibreOfficeAdapter; +import org.alfresco.transformer.transformers.MiscAdapter; +import org.alfresco.transformer.transformers.PdfRendererAdapter; +import org.alfresco.transformer.transformers.TikaAdapter; import org.alfresco.transformer.transformers.Transformer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -41,9 +46,15 @@ public class AIOCustomConfig { @Bean("AllInOneTransformer") - public Transformer aioTransformer() + public Transformer aioTransformer() throws Exception { - return new AllInOneTransformer(); + AllInOneTransformer aioTransformer = new AllInOneTransformer(); + aioTransformer.registerTransformer(new MiscAdapter()); + aioTransformer.registerTransformer(new TikaAdapter()); + aioTransformer.registerTransformer(new ImageMagickAdapter()); + aioTransformer.registerTransformer(new LibreOfficeAdapter()); + aioTransformer.registerTransformer(new PdfRendererAdapter()); + return aioTransformer; } /** @@ -56,7 +67,6 @@ public class AIOCustomConfig { return new TransformRegistryImpl() { - @Autowired @Qualifier("AllInOneTransformer") Transformer transformer; diff --git a/alfresco-transform-core-aio/alfresco-transform-core-aio/src/main/java/org/alfresco/transformer/transformers/AllInOneTransformer.java b/alfresco-transform-core-aio/alfresco-transform-core-aio/src/main/java/org/alfresco/transformer/transformers/AllInOneTransformer.java index c890798c..59b7d1c8 100644 --- a/alfresco-transform-core-aio/alfresco-transform-core-aio/src/main/java/org/alfresco/transformer/transformers/AllInOneTransformer.java +++ b/alfresco-transform-core-aio/alfresco-transform-core-aio/src/main/java/org/alfresco/transformer/transformers/AllInOneTransformer.java @@ -55,24 +55,6 @@ public class AllInOneTransformer implements Transformer */ private Map transformerTransformMapping = new HashMap(); - public AllInOneTransformer() - { - // TODO - use observer style registration? - try - { - this.registerTransformer(new MiscAdapter()); - this.registerTransformer(new TikaAdapter()); - this.registerTransformer(new ImageMagickAdapter()); - this.registerTransformer(new LibreOfficeAdapter()); - this.registerTransformer(new PdfRendererAdapter()); - } - catch (Exception e) - { - // Rethrow as runtime exception, nothing else can be done - throw new RuntimeException("Failed to register all transformers.", e); - } - } - /** * The registration will go through all supported sub transformers and map them to the transformer implementation. * @@ -139,4 +121,14 @@ public class AllInOneTransformer implements Transformer return allInOneConfig; } + + public Map getTransformerTransformMapping() + { + return transformerTransformMapping; + } + + public void setTransformerTransformMapping(Map transformerTransformMapping) + { + this.transformerTransformMapping = transformerTransformMapping; + } } diff --git a/alfresco-transform-core-aio/alfresco-transform-core-aio/src/test/java/org/alfresco/transformer/transformers/AllInOneTransformerTest.java b/alfresco-transform-core-aio/alfresco-transform-core-aio/src/test/java/org/alfresco/transformer/transformers/AllInOneTransformerTest.java index db5ed1b6..d08391c7 100644 --- a/alfresco-transform-core-aio/alfresco-transform-core-aio/src/test/java/org/alfresco/transformer/transformers/AllInOneTransformerTest.java +++ b/alfresco-transform-core-aio/alfresco-transform-core-aio/src/test/java/org/alfresco/transformer/transformers/AllInOneTransformerTest.java @@ -26,8 +26,10 @@ */ package org.alfresco.transformer.transformers; +import org.alfresco.transform.client.model.config.TransformConfig; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; +import org.junit.Before; import org.junit.Test; import java.io.File; @@ -35,8 +37,13 @@ import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.StringWriter; import java.nio.file.Files; +import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; import static org.alfresco.transformer.transformers.TextToPdfContentTransformer.PAGE_LIMIT; import static org.alfresco.transformer.transformers.Transformer.TRANSFORM_NAME_PARAMETER; @@ -49,7 +56,16 @@ public class AllInOneTransformerTest String SOURCE_ENCODING = "sourceEncoding"; String TARGET_ENCODING = "targetEncoding"; - AllInOneTransformer transformer = new AllInOneTransformer(); + AllInOneTransformer aioTransformer = new AllInOneTransformer(); + + + @Before + public void before() throws Exception + { + aioTransformer.registerTransformer(new MiscAdapter()); + aioTransformer.registerTransformer(new TikaAdapter()); + + } private void writeToFile(File file, String content, String encoding) throws Exception { @@ -64,18 +80,47 @@ public class AllInOneTransformerTest return new String(Files.readAllBytes(file.toPath()), encoding); } + // TODO - add more thorough test @Test - public void TestConfigAggregation() + public void testConfigAggregation() throws Exception { - transformer.getTransformConfig().getTransformers().forEach(t -> {System.out.println(t); System.out.println(" **");}); + List expectedTransformNames = Arrays.asList("html", "string", "appleIWorks", "textToPdf", "rfc822", + "Archive", "OutlookMsg", "PdfBox", "Office", "Poi", "OOXML", "TikaAuto", "TextMining"); + List expectedTransformOptionNames = Arrays.asList("tikaOptions", "archiveOptions", "pdfboxOptions", + "textToPdfOptions", "stringOptions", "htmlOptions"); + TransformConfig miscConfig = (new MiscAdapter()).getTransformConfig(); + TransformConfig tikaConfig = (new TikaAdapter()).getTransformConfig(); + + // check correct number of transformers + assertEquals("Number of expected transformers", + miscConfig.getTransformers().size() + tikaConfig.getTransformers().size(), + aioTransformer.getTransformConfig().getTransformers().size()); + + List actualTransformerNames = aioTransformer.getTransformConfig().getTransformers() + .stream().map(t -> t.getTransformerName()).collect(Collectors.toList()); // check all transformers are there - // check all options are there + for(String transformNames : expectedTransformNames) + { + assertTrue("Expected transformer missing.", actualTransformerNames.contains(transformNames)); + } + // check correct number of options + assertEquals("Number of expected transformers", + miscConfig.getTransformOptions().size() + tikaConfig.getTransformOptions().size(), + aioTransformer.getTransformConfig().getTransformOptions().size()); + + Set actualOptionNames = aioTransformer.getTransformConfig().getTransformOptions().keySet(); + + // check all options are there + for (String optionName : expectedTransformOptionNames) + { + assertTrue("Expected transform option missing.", actualOptionNames.contains(optionName)); + } } - /// Test copied from Misc transformer - html + /// Test copied from Misc aioTransformer - html @Test public void testMiscHtml() throws Exception { @@ -105,7 +150,7 @@ public class AllInOneTransformerTest Map parameters = new HashMap<>(); parameters.put(SOURCE_ENCODING, "ISO-8859-1"); parameters.put(TRANSFORM_NAME_PARAMETER, "html"); - transformer.transform(tmpS, tmpD, SOURCE_MIMETYPE, TARGET_MIMETYPE, parameters); + aioTransformer.transform(tmpS, tmpD, SOURCE_MIMETYPE, TARGET_MIMETYPE, parameters); assertEquals(expected, readFromFile(tmpD, "UTF-8")); tmpS.delete(); @@ -119,7 +164,7 @@ public class AllInOneTransformerTest parameters = new HashMap<>(); parameters.put(TRANSFORM_NAME_PARAMETER, "html"); parameters.put(SOURCE_ENCODING, "UTF-8"); - transformer.transform(tmpS, tmpD, SOURCE_MIMETYPE, TARGET_MIMETYPE, parameters); + aioTransformer.transform(tmpS, tmpD, SOURCE_MIMETYPE, TARGET_MIMETYPE, parameters); assertEquals(expected, readFromFile(tmpD, "UTF-8")); tmpS.delete(); tmpD.delete(); @@ -132,7 +177,7 @@ public class AllInOneTransformerTest parameters = new HashMap<>(); parameters.put(TRANSFORM_NAME_PARAMETER, "html"); parameters.put(SOURCE_ENCODING, "UTF-16"); - transformer.transform(tmpS, tmpD, SOURCE_MIMETYPE, TARGET_MIMETYPE, parameters); + aioTransformer.transform(tmpS, tmpD, SOURCE_MIMETYPE, TARGET_MIMETYPE, parameters); assertEquals(expected, readFromFile(tmpD, "UTF-8")); tmpS.delete(); tmpD.delete(); @@ -158,7 +203,7 @@ public class AllInOneTransformerTest parameters = new HashMap<>(); parameters.put(TRANSFORM_NAME_PARAMETER, "html"); parameters.put(SOURCE_ENCODING, "ISO-8859-1"); - transformer.transform(tmpS, tmpD, SOURCE_MIMETYPE, TARGET_MIMETYPE, parameters); + aioTransformer.transform(tmpS, tmpD, SOURCE_MIMETYPE, TARGET_MIMETYPE, parameters); assertEquals(expected, readFromFile(tmpD, "UTF-8")); tmpS.delete(); tmpD.delete(); @@ -174,7 +219,7 @@ public class AllInOneTransformerTest } } - /// Test copied from Misc transformer - pdf + /// Test copied from Misc aioTransformer - pdf @Test public void testMiscPdf() throws Exception { @@ -215,7 +260,7 @@ public class AllInOneTransformerTest Map parameters = new HashMap<>(); parameters.put(TRANSFORM_NAME_PARAMETER, "textToPdf"); parameters.put(PAGE_LIMIT, pageLimit); - transformer.transform(sourceFile, targetFile, "text/plain", "application/pdf", parameters); + aioTransformer.transform(sourceFile, targetFile, "text/plain", "application/pdf", parameters); // Read back in the PDF and check it PDDocument doc = PDDocument.load(targetFile); diff --git a/alfresco-transform-imagemagick/alfresco-transform-imagemagick-boot/src/test/java/org/alfresco/transformer/ImageMagickControllerTest.java b/alfresco-transform-imagemagick/alfresco-transform-imagemagick-boot/src/test/java/org/alfresco/transformer/ImageMagickControllerTest.java index 5979467e..978980e2 100644 --- a/alfresco-transform-imagemagick/alfresco-transform-imagemagick-boot/src/test/java/org/alfresco/transformer/ImageMagickControllerTest.java +++ b/alfresco-transform-imagemagick/alfresco-transform-imagemagick-boot/src/test/java/org/alfresco/transformer/ImageMagickControllerTest.java @@ -85,6 +85,8 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @WebMvcTest(ImageMagickController.class) public class ImageMagickControllerTest extends AbstractTransformerControllerTest { + private static final String ENGINE_CONFIG_NAME = "imagemagick_engine_config.json"; + @Mock private ExecutionResult mockExecutionResult; @@ -109,6 +111,12 @@ public class ImageMagickControllerTest extends AbstractTransformerControllerTest mockTransformCommand("jpg", "png", "image/jpg", true); } + @Override + public String getEngineConfigName() + { + return ENGINE_CONFIG_NAME; + } + @Override protected void mockTransformCommand(String sourceExtension, String targetExtension, String sourceMimetype, diff --git a/alfresco-transform-libreoffice/alfresco-transform-libreoffice-boot/src/test/java/org/alfresco/transformer/LibreOfficeControllerTest.java b/alfresco-transform-libreoffice/alfresco-transform-libreoffice-boot/src/test/java/org/alfresco/transformer/LibreOfficeControllerTest.java index 39c76afa..005b8373 100644 --- a/alfresco-transform-libreoffice/alfresco-transform-libreoffice-boot/src/test/java/org/alfresco/transformer/LibreOfficeControllerTest.java +++ b/alfresco-transform-libreoffice/alfresco-transform-libreoffice-boot/src/test/java/org/alfresco/transformer/LibreOfficeControllerTest.java @@ -81,6 +81,9 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @WebMvcTest(LibreOfficeControllerTest.class) public class LibreOfficeControllerTest extends AbstractTransformerControllerTest { + + private static final String ENGINE_CONFIG_NAME = "libreoffice_engine_config.json"; + @Mock private ExecutionResult mockExecutionResult; @@ -137,6 +140,12 @@ public class LibreOfficeControllerTest extends AbstractTransformerControllerTest }).when(javaExecutor).convert(any(), any()); } + @Override + public String getEngineConfigName() + { + return ENGINE_CONFIG_NAME; + } + @Override protected void mockTransformCommand(String sourceExtension, String targetExtension, String sourceMimetype, boolean readTargetFileBytes) diff --git a/alfresco-transform-misc/alfresco-transform-misc-boot/src/test/java/org/alfresco/transformer/MiscControllerTest.java b/alfresco-transform-misc/alfresco-transform-misc-boot/src/test/java/org/alfresco/transformer/MiscControllerTest.java index cd597f7f..23ca6988 100644 --- a/alfresco-transform-misc/alfresco-transform-misc-boot/src/test/java/org/alfresco/transformer/MiscControllerTest.java +++ b/alfresco-transform-misc/alfresco-transform-misc-boot/src/test/java/org/alfresco/transformer/MiscControllerTest.java @@ -71,6 +71,8 @@ public class MiscControllerTest extends AbstractTransformerControllerTest private final String targetEncoding = "UTF-8"; private final String targetMimetype = MIMETYPE_TEXT_PLAIN; + private static final String ENGINE_CONFIG_NAME = "misc_engine_config.json"; + @Before public void before() throws Exception { @@ -86,6 +88,12 @@ public class MiscControllerTest extends AbstractTransformerControllerTest expectedSourceFileBytes); } + @Override + public String getEngineConfigName() + { + return ENGINE_CONFIG_NAME; + } + @Override protected void mockTransformCommand(String sourceExtension, String targetExtension, String sourceMimetype, boolean readTargetFileBytes) 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 de77009e..a14770d3 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 @@ -86,6 +86,9 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @WebMvcTest(AlfrescoPdfRendererController.class) public class AlfrescoPdfRendererControllerTest extends AbstractTransformerControllerTest { + + private static final String ENGINE_CONFIG_NAME = "pdfrenderer_engine_config.json"; + @Mock private ExecutionResult mockExecutionResult; @@ -110,6 +113,12 @@ public class AlfrescoPdfRendererControllerTest extends AbstractTransformerContro mockTransformCommand("pdf", "png", "application/pdf", true); } + @Override + public String getEngineConfigName() + { + return ENGINE_CONFIG_NAME; + } + @Override public void mockTransformCommand(String sourceExtension, String targetExtension, String sourceMimetype, diff --git a/alfresco-transform-tika/alfresco-transform-tika-boot/src/test/java/org/alfresco/transformer/TikaControllerTest.java b/alfresco-transform-tika/alfresco-transform-tika-boot/src/test/java/org/alfresco/transformer/TikaControllerTest.java index 36cb92ff..9126cb2d 100644 --- a/alfresco-transform-tika/alfresco-transform-tika-boot/src/test/java/org/alfresco/transformer/TikaControllerTest.java +++ b/alfresco-transform-tika/alfresco-transform-tika-boot/src/test/java/org/alfresco/transformer/TikaControllerTest.java @@ -116,6 +116,7 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @WebMvcTest(TikaController.class) public class TikaControllerTest extends AbstractTransformerControllerTest { + private static final String ENGINE_CONFIG_NAME = "tika_engine_config.json"; private static final String EXPECTED_XHTML_CONTENT_CONTAINS = "

The quick brown fox jumps over the lazy dog

"; private static final String EXPECTED_TEXT_CONTENT_CONTAINS = "The quick brown fox jumps over the lazy dog"; private static final String EXPECTED_MSG_CONTENT_CONTAINS = "Recipients\n" + @@ -146,6 +147,12 @@ public class TikaControllerTest extends AbstractTransformerControllerTest targetExtension = "txt"; } + @Override + public String getEngineConfigName() + { + return ENGINE_CONFIG_NAME; + } + @Override protected void mockTransformCommand(String sourceExtension, String targetExtension, String sourceMimetype, diff --git a/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java b/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java index f561b8ef..551b569f 100644 --- a/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java +++ b/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java @@ -338,15 +338,24 @@ public abstract class AbstractTransformerControllerTest assertEquals(BAD_REQUEST.value(), transformReply.getStatus()); } + /** + * + * @return transformer specific engine config name + */ + public String getEngineConfigName() + { + return "engine_config.json"; + } + @Test public void testGetTransformConfigInfo() throws Exception { TransformConfig expectedTransformConfig = objectMapper - .readValue(new ClassPathResource("engine_config.json").getFile(), + .readValue(new ClassPathResource(getEngineConfigName()).getFile(), TransformConfig.class); ReflectionTestUtils.setField(transformRegistry, "engineConfig", - new ClassPathResource("engine_config.json")); + new ClassPathResource(getEngineConfigName())); String response = mockMvc .perform(MockMvcRequestBuilders.get("/transform/config")) @@ -355,7 +364,6 @@ public abstract class AbstractTransformerControllerTest .andReturn().getResponse().getContentAsString(); TransformConfig transformConfig = objectMapper.readValue(response, TransformConfig.class); - assertEquals(expectedTransformConfig, transformConfig); }