mirror of
https://github.com/Alfresco/alfresco-transform-core.git
synced 2025-07-31 17:38:33 +00:00
Initial tests
* Add initial tests for config aggregation * Update AbstractTransformerControllerTest to use the new engine config names
This commit is contained in:
@@ -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;
|
||||
|
@@ -55,24 +55,6 @@ public class AllInOneTransformer implements Transformer
|
||||
*/
|
||||
private Map<String, Transformer> 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<String, Transformer> getTransformerTransformMapping()
|
||||
{
|
||||
return transformerTransformMapping;
|
||||
}
|
||||
|
||||
public void setTransformerTransformMapping(Map<String, Transformer> transformerTransformMapping)
|
||||
{
|
||||
this.transformerTransformMapping = transformerTransformMapping;
|
||||
}
|
||||
}
|
||||
|
@@ -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<String> expectedTransformNames = Arrays.asList("html", "string", "appleIWorks", "textToPdf", "rfc822",
|
||||
"Archive", "OutlookMsg", "PdfBox", "Office", "Poi", "OOXML", "TikaAuto", "TextMining");
|
||||
|
||||
List<String> 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<String> 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<String> 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<String, String> 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<String, String> 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);
|
||||
|
@@ -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,
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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,
|
||||
|
@@ -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 = "<p>The quick brown fox jumps over the lazy dog</p>";
|
||||
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,
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user