diff --git a/engines/base/src/main/java/org/alfresco/transform/base/TransformController.java b/engines/base/src/main/java/org/alfresco/transform/base/TransformController.java
index 02262c86..399e42b6 100644
--- a/engines/base/src/main/java/org/alfresco/transform/base/TransformController.java
+++ b/engines/base/src/main/java/org/alfresco/transform/base/TransformController.java
@@ -57,6 +57,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -114,13 +115,21 @@ public class TransformController
logger.info("--------------------------------------------------------------------------------------------------------------------------------------------------------------");
if (transformEngines != null)
{
- Arrays.stream(transformEngine.getStartupMessage().split("\\n")).forEach(logger::info);
+ logSplitMessage(transformEngine.getStartupMessage());
+ transformEngines.stream()
+ .filter(te -> te != transformEngine)
+ .sorted(Comparator.comparing(TransformEngine::getTransformEngineName))
+ .forEach(te -> logSplitMessage(te.getStartupMessage()));
}
logger.info("--------------------------------------------------------------------------------------------------------------------------------------------------------------");
-
logger.info("Starting application components... Done");
}
+ private void logSplitMessage(String message)
+ {
+ Arrays.stream(message.split("\\n")).forEach(logger::info);
+ }
+
/**
* @return a string that may be used in client debug.
*/
diff --git a/engines/base/src/main/java/org/alfresco/transform/base/probes/ProbeTransform.java b/engines/base/src/main/java/org/alfresco/transform/base/probes/ProbeTransform.java
index 289d539b..23ce4532 100644
--- a/engines/base/src/main/java/org/alfresco/transform/base/probes/ProbeTransform.java
+++ b/engines/base/src/main/java/org/alfresco/transform/base/probes/ProbeTransform.java
@@ -46,7 +46,6 @@ import java.util.concurrent.atomic.AtomicLong;
import static org.alfresco.transform.base.fs.FileManager.TempFileProvider.createTempFile;
import static org.springframework.http.HttpStatus.INSUFFICIENT_STORAGE;
import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
-import static org.springframework.http.HttpStatus.OK;
import static org.springframework.http.HttpStatus.TOO_MANY_REQUESTS;
/**
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/AllInOneTransformControllerTest.java b/engines/base/src/test/java/org/alfresco/transform/base/AllInOneTransformControllerTest.java
new file mode 100644
index 00000000..00291493
--- /dev/null
+++ b/engines/base/src/test/java/org/alfresco/transform/base/AllInOneTransformControllerTest.java
@@ -0,0 +1,247 @@
+/*
+ * #%L
+ * Alfresco Transform Core
+ * %%
+ * Copyright (C) 2005 - 2022 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.transform.base;
+
+import org.alfresco.transform.base.fakes.FakeTransformEngineWithAllInOne;
+import org.alfresco.transform.base.fakes.FakeTransformEngineWithOneCustomTransformer;
+import org.alfresco.transform.base.fakes.FakeTransformEngineWithTwoCustomTransformers;
+import org.alfresco.transform.base.fakes.FakeTransformerPdf2Jpg;
+import org.alfresco.transform.base.fakes.FakeTransformerPdf2Png;
+import org.alfresco.transform.base.fakes.FakeTransformerTxT2Pdf;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ContextConfiguration;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+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.request.MockMvcRequestBuilders;
+
+import java.nio.charset.StandardCharsets;
+import java.util.StringJoiner;
+
+import static org.alfresco.transform.base.TransformControllerTest.assertConfig;
+import static org.alfresco.transform.base.TransformControllerTest.getLogMessagesFor;
+import static org.alfresco.transform.common.Mimetype.MIMETYPE_IMAGE_JPEG;
+import static org.alfresco.transform.common.Mimetype.MIMETYPE_PDF;
+import static org.alfresco.transform.common.Mimetype.MIMETYPE_TEXT_PLAIN;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_ERROR;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_LIVE;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_LOG;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_READY;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_ROOT;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM_CONFIG;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM_CONFIG_LATEST;
+import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_VERSION;
+import static org.alfresco.transform.common.RequestParamMap.PAGE_REQUEST_PARAM;
+import static org.alfresco.transform.common.RequestParamMap.SOURCE_MIMETYPE;
+import static org.alfresco.transform.common.RequestParamMap.TARGET_MIMETYPE;
+import static org.hamcrest.Matchers.containsString;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+/**
+ * Testing base t-engine TransformController functionality where there are multiple TransformEngines brought together
+ * in a single t-engine.
+ *
+ * Contains a subset of tests also in {@link TransformControllerTest}.
+ */
+@AutoConfigureMockMvc
+@SpringBootTest(classes={org.alfresco.transform.base.Application.class})
+@ContextConfiguration(classes = {
+ FakeTransformEngineWithAllInOne.class,
+ FakeTransformEngineWithTwoCustomTransformers.class,
+ FakeTransformerTxT2Pdf.class,
+ FakeTransformerPdf2Png.class,
+ FakeTransformEngineWithOneCustomTransformer.class,
+ FakeTransformerPdf2Jpg.class})
+public class AllInOneTransformControllerTest
+{
+ @Autowired
+ private MockMvc mockMvc;
+ @Autowired
+ private TransformController transformController;
+ @Autowired
+ protected ObjectMapper objectMapper;
+ @Autowired
+ private String coreVersion;
+
+ @Test
+ public void testInitEngine() throws Exception
+ {
+ assertEquals(FakeTransformEngineWithAllInOne.class.getSimpleName(),
+ transformController.transformEngine.getClass().getSimpleName());
+ assertNotNull(transformController.probeTransform);
+ }
+
+ @Test
+ public void testStartupLogsIncludeEngineMessages()
+ {
+ StringJoiner controllerLogMessages = getLogMessagesFor(TransformController.class);
+
+ transformController.startup();
+
+ assertEquals(
+ "--------------------------------------------------------------------------------------------------------------------------------------------------------------\n"
+ + "Startup AllInOne\n"
+ + "Line 2 AllInOne\n"
+ + "Line 3\n"
+ + "Startup OneCustomTransformer\n"
+ + "Line 2 OneCustomTransformer\n"
+ + "Line 3\n"
+ + "Startup TwoCustomTransformers\n"
+ + "Line 2 TwoCustomTransformers\n"
+ + "Line 3\n"
+ + "--------------------------------------------------------------------------------------------------------------------------------------------------------------\n"
+ + "Starting application components... Done",
+ controllerLogMessages.toString());
+ }
+
+ @Test
+ public void testVersionEndpointIncludesAvailable() throws Exception
+ {
+ mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_VERSION))
+ .andExpect(status().isOk())
+ .andExpect(content().string("AllInOne "+coreVersion+" available"));
+ }
+
+ @Test
+ public void testRootEndpointReturnsTestPage() throws Exception
+ {
+ mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_ROOT))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("AllInOne Test Page")));
+ }
+
+ @Test
+ public void testErrorEndpointReturnsErrorPage() throws Exception
+ {
+ mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_ERROR))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("AllInOne Error Page")));
+ }
+
+ @Test
+ public void testLogEndpointReturnsLogPage() throws Exception
+ {
+ mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_LOG))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("AllInOne Log Entries")));
+ }
+
+ @Test
+ public void testReadyEndpointReturnsSuccessful() throws Exception
+ {
+ mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_READY))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("Success - ")));
+ }
+
+ @Test
+ public void testLiveEndpointReturnsSuccessful() throws Exception
+ {
+ mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_LIVE))
+ .andExpect(status().isOk())
+ .andExpect(content().string(containsString("Success - ")));
+ }
+
+ @Test
+ public void testConfigEndpointReturnsOriginalConfigFormat() throws Exception
+ {
+ // The transformer's options should not include directAccessUrl as this is the default version of config
+ assertConfig(ENDPOINT_TRANSFORM_CONFIG,
+ "Pdf2Jpg,null,imageOptions\n"
+ + "Pdf2Png,null,imageOptions\n"
+ + "TxT2Pdf,null,docOptions\n"
+ + "Txt2JpgViaPdf,null,imageOptions\n"
+ + "Txt2PngViaPdf,null,imageOptions",
+ "docOptions,imageOptions", mockMvc, objectMapper);
+ }
+
+ @Test
+ public void testConfigLatestEndpointReturnsCoreVersionAndDirectAccessUrlOption() throws Exception
+ {
+ assertConfig(ENDPOINT_TRANSFORM_CONFIG_LATEST,
+ "Pdf2Jpg,2.6.1,directAccessUrl,imageOptions\n"
+ + "Pdf2Png,"+coreVersion+",directAccessUrl,imageOptions\n"
+ + "TxT2Pdf,"+coreVersion+",directAccessUrl,docOptions\n"
+ + "Txt2JpgViaPdf,"+coreVersion+",directAccessUrl,imageOptions\n"
+ + "Txt2PngViaPdf,"+coreVersion+",directAccessUrl,imageOptions",
+ "directAccessUrl,docOptions,imageOptions", mockMvc, objectMapper);
+ }
+
+ @Test
+ public void testTransformEndpointUsingTransformEngineWithTwoCustomTransformers() throws Exception
+ {
+ MvcResult mvcResult = mockMvc.perform(
+ MockMvcRequestBuilders.multipart(ENDPOINT_TRANSFORM)
+ .file(new MockMultipartFile("file", null, MIMETYPE_TEXT_PLAIN,
+ "Start".getBytes(StandardCharsets.UTF_8)))
+ .param(SOURCE_MIMETYPE, MIMETYPE_TEXT_PLAIN)
+ .param(TARGET_MIMETYPE, MIMETYPE_PDF)
+ .param(PAGE_REQUEST_PARAM, "1"))
+ .andExpect(request().asyncStarted())
+ .andReturn();
+
+ mockMvc.perform(asyncDispatch(mvcResult))
+ .andExpect(status().isOk())
+ .andExpect(header().string("Content-Disposition",
+ "attachment; filename*=UTF-8''transform.pdf"))
+ .andExpect(content().string("Start -> TxT2Pdf(page=1)"));
+ }
+
+ @Test
+ public void testTransformEndpointUsingTransformEngineWithOneCustomTransformer() throws Exception
+ {
+ MvcResult mvcResult = mockMvc.perform(
+ MockMvcRequestBuilders.multipart(ENDPOINT_TRANSFORM)
+ .file(new MockMultipartFile("file", null, MIMETYPE_PDF,
+ "Start".getBytes(StandardCharsets.UTF_8)))
+ .param(SOURCE_MIMETYPE, MIMETYPE_PDF)
+ .param(TARGET_MIMETYPE, MIMETYPE_IMAGE_JPEG))
+ .andExpect(request().asyncStarted())
+ .andReturn();
+
+ mockMvc.perform(asyncDispatch(mvcResult))
+ .andExpect(status().isOk())
+ .andExpect(header().string("Content-Disposition",
+ "attachment; filename*=UTF-8''transform.jpeg"))
+ .andExpect(content().string("Start -> Pdf2Jpg()"));
+ }
+}
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerWithSingleEngineTest.java b/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerTest.java
similarity index 89%
rename from engines/base/src/test/java/org/alfresco/transform/base/TransformControllerWithSingleEngineTest.java
rename to engines/base/src/test/java/org/alfresco/transform/base/TransformControllerTest.java
index eb00270d..81b60419 100644
--- a/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerWithSingleEngineTest.java
+++ b/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerTest.java
@@ -33,9 +33,9 @@ import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.ImmutableMap;
-import org.alfresco.transform.base.components.TestTransformEngineTwoTransformers;
-import org.alfresco.transform.base.components.TestTransformerPdf2Png;
-import org.alfresco.transform.base.components.TestTransformerTxT2Pdf;
+import org.alfresco.transform.base.fakes.FakeTransformEngineWithTwoCustomTransformers;
+import org.alfresco.transform.base.fakes.FakeTransformerPdf2Png;
+import org.alfresco.transform.base.fakes.FakeTransformerTxT2Pdf;
import org.alfresco.transform.config.TransformConfig;
import org.junit.jupiter.api.Test;
import org.slf4j.LoggerFactory;
@@ -84,14 +84,16 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
/**
* Testing base t-engine TransformController functionality.
+ *
+ * Also see {@link AllInOneTransformControllerTest}.
*/
@AutoConfigureMockMvc
@SpringBootTest(classes={org.alfresco.transform.base.Application.class})
@ContextConfiguration(classes = {
- TestTransformEngineTwoTransformers.class,
- TestTransformerTxT2Pdf.class,
- TestTransformerPdf2Png.class})
-public class TransformControllerWithSingleEngineTest
+ FakeTransformEngineWithTwoCustomTransformers.class,
+ FakeTransformerTxT2Pdf.class,
+ FakeTransformerPdf2Png.class})
+public class TransformControllerTest
{
@Autowired
private MockMvc mockMvc;
@@ -105,7 +107,7 @@ public class TransformControllerWithSingleEngineTest
@Test
public void testInitEngine() throws Exception
{
- assertEquals(TestTransformEngineTwoTransformers.class.getSimpleName(),
+ assertEquals(FakeTransformEngineWithTwoCustomTransformers.class.getSimpleName(),
transformController.transformEngine.getClass().getSimpleName());
assertNotNull(transformController.probeTransform);
}
@@ -119,15 +121,15 @@ public class TransformControllerWithSingleEngineTest
assertEquals(
"--------------------------------------------------------------------------------------------------------------------------------------------------------------\n"
- + "Startup TwoTransformers\n"
- + "Line 2 TwoTransformers\n"
+ + "Startup TwoCustomTransformers\n"
+ + "Line 2 TwoCustomTransformers\n"
+ "Line 3\n"
+ "--------------------------------------------------------------------------------------------------------------------------------------------------------------\n"
+ "Starting application components... Done",
controllerLogMessages.toString());
}
- private StringJoiner getLogMessagesFor(Class classBeingLogged)
+ static StringJoiner getLogMessagesFor(Class classBeingLogged)
{
StringJoiner logMessages = new StringJoiner("\n");
Logger logger = (Logger) LoggerFactory.getLogger(classBeingLogged);
@@ -152,7 +154,7 @@ public class TransformControllerWithSingleEngineTest
{
mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_VERSION))
.andExpect(status().isOk())
- .andExpect(content().string("TwoTransformers "+coreVersion+" available"));
+ .andExpect(content().string("TwoCustomTransformers "+coreVersion+" available"));
}
@Test
@@ -160,7 +162,7 @@ public class TransformControllerWithSingleEngineTest
{
mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_ROOT))
.andExpect(status().isOk())
- .andExpect(content().string(containsString("TwoTransformers Test Page")));
+ .andExpect(content().string(containsString("TwoCustomTransformers Test Page")));
}
@Test
@@ -168,7 +170,7 @@ public class TransformControllerWithSingleEngineTest
{
mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_ERROR))
.andExpect(status().isOk())
- .andExpect(content().string(containsString("TwoTransformers Error Page")));
+ .andExpect(content().string(containsString("TwoCustomTransformers Error Page")));
}
@Test
@@ -176,7 +178,7 @@ public class TransformControllerWithSingleEngineTest
{
mockMvc.perform(MockMvcRequestBuilders.get(ENDPOINT_LOG))
.andExpect(status().isOk())
- .andExpect(content().string(containsString("TwoTransformers Log Entries")));
+ .andExpect(content().string(containsString("TwoCustomTransformers Log Entries")));
}
@Test
@@ -206,7 +208,7 @@ public class TransformControllerWithSingleEngineTest
+ "TxT2Pdf,null,docOptions\n"
+ "Txt2JpgViaPdf,null,imageOptions\n"
+ "Txt2PngViaPdf,null,imageOptions",
- "docOptions,imageOptions");
+ "docOptions,imageOptions", mockMvc, objectMapper);
}
@Test
@@ -217,10 +219,11 @@ public class TransformControllerWithSingleEngineTest
+ "TxT2Pdf,"+coreVersion+",directAccessUrl,docOptions\n"
+ "Txt2JpgViaPdf,null,imageOptions\n"
+ "Txt2PngViaPdf,"+coreVersion+",directAccessUrl,imageOptions",
- "directAccessUrl,docOptions,imageOptions");
+ "directAccessUrl,docOptions,imageOptions", mockMvc, objectMapper);
}
- private void assertConfig(String url, String expectedTransformers, String expectedOptions) throws Exception
+ static void assertConfig(String url, String expectedTransformers, String expectedOptions,
+ MockMvc mockMvc, ObjectMapper objectMapper) throws Exception
{
TransformConfig config = objectMapper.readValue(
mockMvc.perform(MockMvcRequestBuilders.get(url))
@@ -260,7 +263,7 @@ public class TransformControllerWithSingleEngineTest
mockMvc.perform(asyncDispatch(mvcResult))
.andExpect(status().isOk())
.andExpect(header().string("Content-Disposition",
- "attachment; filename*=UTF-8''transform." + "pdf"))
+ "attachment; filename*=UTF-8''transform.pdf"))
.andExpect(content().string("Start -> TxT2Pdf(page=1)"));
}
@@ -330,7 +333,7 @@ public class TransformControllerWithSingleEngineTest
mockMvc.perform(asyncDispatch(mvcResult))
.andExpect(status().isBadRequest())
- .andExpect(content().string(containsString("TwoTransformers Error Page")))
+ .andExpect(content().string(containsString("TwoCustomTransformers Error Page")))
.andExpect(content().string(containsString("No transforms were able to handle the request")));
}
}
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/components/AbstractTestTransformEngine.java b/engines/base/src/test/java/org/alfresco/transform/base/fakes/AbstractFakeTransformEngine.java
similarity index 63%
rename from engines/base/src/test/java/org/alfresco/transform/base/components/AbstractTestTransformEngine.java
rename to engines/base/src/test/java/org/alfresco/transform/base/fakes/AbstractFakeTransformEngine.java
index dfc09001..a277804f 100644
--- a/engines/base/src/test/java/org/alfresco/transform/base/components/AbstractTestTransformEngine.java
+++ b/engines/base/src/test/java/org/alfresco/transform/base/fakes/AbstractFakeTransformEngine.java
@@ -24,27 +24,21 @@
* along with Alfresco. If not, see .
* #L%
*/
-package org.alfresco.transform.base.components;
+package org.alfresco.transform.base.fakes;
-import com.google.common.collect.ImmutableMap;
import org.alfresco.transform.base.TransformEngine;
-import org.alfresco.transform.base.probes.ProbeTransform;
import org.springframework.boot.test.context.TestComponent;
-import static org.alfresco.transform.common.Mimetype.MIMETYPE_PDF;
-import static org.alfresco.transform.common.Mimetype.MIMETYPE_TEXT_PLAIN;
-import static org.alfresco.transform.common.RequestParamMap.SOURCE_ENCODING;
-
/**
- * Subclass MUST be named TestTransformEngine\.
+ * Subclass MUST be named FakeTransformEngineWith\.
*/
@TestComponent
-public abstract class AbstractTestTransformEngine implements TransformEngine
+public abstract class AbstractFakeTransformEngine implements TransformEngine
{
@Override public String getTransformEngineName()
{
String simpleClassName = getClass().getSimpleName();
- return simpleClassName.substring("TestTransformEngine".length());
+ return simpleClassName.substring("FakeTransformEngineWith".length());
}
@Override public String getStartupMessage()
@@ -53,12 +47,4 @@ public abstract class AbstractTestTransformEngine implements TransformEngine
"\nLine 2 "+getTransformEngineName()+
"\nLine 3";
}
-
- @Override public ProbeTransform getProbeTransform()
- {
- return new ProbeTransform("quick.txt", "quick.pdf",
- MIMETYPE_TEXT_PLAIN, MIMETYPE_PDF, ImmutableMap.of(SOURCE_ENCODING, "UTF-8"),
- 46, 0, 150, 1024, 1,
- 60 * 2);
- }
}
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/components/AbstractTestTransformer.java b/engines/base/src/test/java/org/alfresco/transform/base/fakes/AbstractFakeTransformer.java
similarity index 94%
rename from engines/base/src/test/java/org/alfresco/transform/base/components/AbstractTestTransformer.java
rename to engines/base/src/test/java/org/alfresco/transform/base/fakes/AbstractFakeTransformer.java
index 93cfe9ab..42f1d3a2 100644
--- a/engines/base/src/test/java/org/alfresco/transform/base/components/AbstractTestTransformer.java
+++ b/engines/base/src/test/java/org/alfresco/transform/base/fakes/AbstractFakeTransformer.java
@@ -24,14 +24,13 @@
* along with Alfresco. If not, see .
* #L%
*/
-package org.alfresco.transform.base.components;
+package org.alfresco.transform.base.fakes;
import org.alfresco.transform.base.CustomTransformer;
import org.alfresco.transform.base.TransformManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.TestComponent;
-import org.springframework.stereotype.Component;
import java.io.InputStream;
import java.io.OutputStream;
@@ -44,7 +43,7 @@ import java.util.stream.Collectors;
* to the output. The output is always a String regardless of the stated mimetypes.
*/
@TestComponent
-public abstract class AbstractTestTransformer implements CustomTransformer
+public abstract class AbstractFakeTransformer implements CustomTransformer
{
private final Logger logger = LoggerFactory.getLogger(getClass());
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformEngineWithAllInOne.java b/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformEngineWithAllInOne.java
new file mode 100644
index 00000000..cea3577e
--- /dev/null
+++ b/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformEngineWithAllInOne.java
@@ -0,0 +1,48 @@
+/*
+ * #%L
+ * Alfresco Transform Core
+ * %%
+ * Copyright (C) 2005 - 2022 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.transform.base.fakes;
+
+import org.alfresco.transform.base.probes.ProbeTransform;
+import org.alfresco.transform.config.TransformConfig;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class FakeTransformEngineWithAllInOne extends AbstractFakeTransformEngine
+{
+ @Autowired
+ private FakeTransformEngineWithTwoCustomTransformers oneOfTheTransformEngines;
+
+ @Override public TransformConfig getTransformConfig()
+ {
+ // Has no config of its own. The combined config of the others is returned from the t-engine.
+ return null;
+ }
+
+ @Override public ProbeTransform getProbeTransform()
+ {
+ return oneOfTheTransformEngines.getProbeTransform();
+ }
+}
\ No newline at end of file
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformEngineWithOneCustomTransformer.java b/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformEngineWithOneCustomTransformer.java
new file mode 100644
index 00000000..84b55663
--- /dev/null
+++ b/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformEngineWithOneCustomTransformer.java
@@ -0,0 +1,68 @@
+/*
+ * #%L
+ * Alfresco Transform Core
+ * %%
+ * Copyright (C) 2005 - 2022 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.transform.base.fakes;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import org.alfresco.transform.base.probes.ProbeTransform;
+import org.alfresco.transform.config.SupportedSourceAndTarget;
+import org.alfresco.transform.config.TransformConfig;
+import org.alfresco.transform.config.TransformOptionValue;
+import org.alfresco.transform.config.Transformer;
+
+import static org.alfresco.transform.common.Mimetype.MIMETYPE_IMAGE_JPEG;
+import static org.alfresco.transform.common.Mimetype.MIMETYPE_PDF;
+
+public class FakeTransformEngineWithOneCustomTransformer extends AbstractFakeTransformEngine
+{
+ @Override public TransformConfig getTransformConfig()
+ {
+ String imageOptions = "imageOptions";
+ return TransformConfig.builder()
+ .withTransformOptions(ImmutableMap.of(
+ imageOptions, ImmutableSet.of(
+ new TransformOptionValue(false, "width"),
+ new TransformOptionValue(false, "height"))))
+ .withTransformers(ImmutableList.of(
+ Transformer.builder()
+ .withTransformerName("Pdf2Jpg")
+ .withSupportedSourceAndTargetList(ImmutableSet.of(
+ SupportedSourceAndTarget.builder()
+ .withSourceMediaType(MIMETYPE_PDF)
+ .withTargetMediaType(MIMETYPE_IMAGE_JPEG)
+ .build()))
+ .withTransformOptions(ImmutableSet.of(imageOptions))
+ .build()))
+ .build();
+ }
+
+ @Override public ProbeTransform getProbeTransform()
+ {
+ return null; // Not used in tests
+ }
+}
\ No newline at end of file
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/components/TestTransformEngineTwoTransformers.java b/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformEngineWithTwoCustomTransformers.java
similarity index 53%
rename from engines/base/src/test/java/org/alfresco/transform/base/components/TestTransformEngineTwoTransformers.java
rename to engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformEngineWithTwoCustomTransformers.java
index 1e3ee310..35c499e3 100644
--- a/engines/base/src/test/java/org/alfresco/transform/base/components/TestTransformEngineTwoTransformers.java
+++ b/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformEngineWithTwoCustomTransformers.java
@@ -24,11 +24,12 @@
* along with Alfresco. If not, see .
* #L%
*/
-package org.alfresco.transform.base.components;
+package org.alfresco.transform.base.fakes;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import org.alfresco.transform.base.probes.ProbeTransform;
import org.alfresco.transform.config.SupportedSourceAndTarget;
import org.alfresco.transform.config.TransformConfig;
import org.alfresco.transform.config.TransformOptionValue;
@@ -41,8 +42,9 @@ import static org.alfresco.transform.common.Mimetype.MIMETYPE_IMAGE_JPEG;
import static org.alfresco.transform.common.Mimetype.MIMETYPE_IMAGE_PNG;
import static org.alfresco.transform.common.Mimetype.MIMETYPE_PDF;
import static org.alfresco.transform.common.Mimetype.MIMETYPE_TEXT_PLAIN;
+import static org.alfresco.transform.common.RequestParamMap.SOURCE_ENCODING;
-public class TestTransformEngineTwoTransformers extends AbstractTestTransformEngine
+public class FakeTransformEngineWithTwoCustomTransformers extends AbstractFakeTransformEngine
{
@Override public TransformConfig getTransformConfig()
{
@@ -65,39 +67,47 @@ public class TestTransformEngineTwoTransformers extends AbstractTestTransformEng
.build()))
.withTransformOptions(ImmutableSet.of(docOptions))
.build(),
- Transformer.builder()
- .withTransformerName("Pdf2Png")
- .withSupportedSourceAndTargetList(ImmutableSet.of(
- SupportedSourceAndTarget.builder()
- .withSourceMediaType(MIMETYPE_PDF)
- .withTargetMediaType(MIMETYPE_IMAGE_PNG)
- .build()))
- .withTransformOptions(ImmutableSet.of(imageOptions))
- .build(),
- Transformer.builder()
- .withTransformerName("Txt2PngViaPdf")
- .withTransformerPipeline(List.of(
- new TransformStep("TxT2Pdf", MIMETYPE_PDF),
- new TransformStep("Pdf2Png", null)))
- .withSupportedSourceAndTargetList(ImmutableSet.of(
- SupportedSourceAndTarget.builder()
- .withSourceMediaType(MIMETYPE_TEXT_PLAIN)
- .withTargetMediaType(MIMETYPE_IMAGE_PNG)
- .build()))
- .withTransformOptions(ImmutableSet.of(imageOptions))
- .build(),
- Transformer.builder() // Unavailable until Pdf2Jpg is added
- .withTransformerName("Txt2JpgViaPdf")
- .withTransformerPipeline(List.of(
- new TransformStep("TxT2Pdf", MIMETYPE_PDF),
- new TransformStep("Pdf2Jpg", null)))
- .withSupportedSourceAndTargetList(ImmutableSet.of(
- SupportedSourceAndTarget.builder()
- .withSourceMediaType(MIMETYPE_TEXT_PLAIN)
- .withTargetMediaType(MIMETYPE_IMAGE_JPEG)
- .build()))
- .withTransformOptions(ImmutableSet.of(imageOptions))
- .build()))
+ Transformer.builder()
+ .withTransformerName("Pdf2Png")
+ .withSupportedSourceAndTargetList(ImmutableSet.of(
+ SupportedSourceAndTarget.builder()
+ .withSourceMediaType(MIMETYPE_PDF)
+ .withTargetMediaType(MIMETYPE_IMAGE_PNG)
+ .build()))
+ .withTransformOptions(ImmutableSet.of(imageOptions))
+ .build(),
+ Transformer.builder()
+ .withTransformerName("Txt2PngViaPdf")
+ .withTransformerPipeline(List.of(
+ new TransformStep("TxT2Pdf", MIMETYPE_PDF),
+ new TransformStep("Pdf2Png", null)))
+ .withSupportedSourceAndTargetList(ImmutableSet.of(
+ SupportedSourceAndTarget.builder()
+ .withSourceMediaType(MIMETYPE_TEXT_PLAIN)
+ .withTargetMediaType(MIMETYPE_IMAGE_PNG)
+ .build()))
+ .withTransformOptions(ImmutableSet.of(imageOptions))
+ .build(),
+ Transformer.builder() // Unavailable until Pdf2Jpg is added
+ .withTransformerName("Txt2JpgViaPdf")
+ .withTransformerPipeline(List.of(
+ new TransformStep("TxT2Pdf", MIMETYPE_PDF),
+ new TransformStep("Pdf2Jpg", null)))
+ .withSupportedSourceAndTargetList(ImmutableSet.of(
+ SupportedSourceAndTarget.builder()
+ .withSourceMediaType(MIMETYPE_TEXT_PLAIN)
+ .withTargetMediaType(MIMETYPE_IMAGE_JPEG)
+ .build()))
+ .withTransformOptions(ImmutableSet.of(imageOptions))
+ .build()))
.build();
}
+
+ @Override public ProbeTransform getProbeTransform()
+ {
+ return new ProbeTransform("quick.txt", "quick.pdf",
+ MIMETYPE_TEXT_PLAIN, MIMETYPE_PDF, ImmutableMap.of(SOURCE_ENCODING, "UTF-8"),
+ 46, 0, 150, 1024, 1,
+ 60 * 2);
+ }
}
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/components/TestTransformerPdf2Png.java b/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformerPdf2Jpg.java
similarity index 90%
rename from engines/base/src/test/java/org/alfresco/transform/base/components/TestTransformerPdf2Png.java
rename to engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformerPdf2Jpg.java
index bcfdd7b9..dc3e8dad 100644
--- a/engines/base/src/test/java/org/alfresco/transform/base/components/TestTransformerPdf2Png.java
+++ b/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformerPdf2Jpg.java
@@ -24,8 +24,8 @@
* along with Alfresco. If not, see .
* #L%
*/
-package org.alfresco.transform.base.components;
+package org.alfresco.transform.base.fakes;
-public class TestTransformerPdf2Png extends AbstractTestTransformer
+public class FakeTransformerPdf2Jpg extends AbstractFakeTransformer
{
}
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/components/TestTransformerTxT2Pdf.java b/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformerPdf2Png.java
similarity index 90%
rename from engines/base/src/test/java/org/alfresco/transform/base/components/TestTransformerTxT2Pdf.java
rename to engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformerPdf2Png.java
index fac705b5..cf228a82 100644
--- a/engines/base/src/test/java/org/alfresco/transform/base/components/TestTransformerTxT2Pdf.java
+++ b/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformerPdf2Png.java
@@ -24,8 +24,8 @@
* along with Alfresco. If not, see .
* #L%
*/
-package org.alfresco.transform.base.components;
+package org.alfresco.transform.base.fakes;
-public class TestTransformerTxT2Pdf extends AbstractTestTransformer
+public class FakeTransformerPdf2Png extends AbstractFakeTransformer
{
}
diff --git a/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformerTxT2Pdf.java b/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformerTxT2Pdf.java
new file mode 100644
index 00000000..d11e357c
--- /dev/null
+++ b/engines/base/src/test/java/org/alfresco/transform/base/fakes/FakeTransformerTxT2Pdf.java
@@ -0,0 +1,31 @@
+/*
+ * #%L
+ * Alfresco Transform Core
+ * %%
+ * Copyright (C) 2005 - 2022 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.transform.base.fakes;
+
+public class FakeTransformerTxT2Pdf extends AbstractFakeTransformer
+{
+}