Save point: [skip ci]

* Use generic test page
This commit is contained in:
alandavis
2022-07-12 18:32:55 +01:00
parent cb3aacc103
commit 2875b305bc
21 changed files with 307 additions and 336 deletions

View File

@@ -1,131 +0,0 @@
<html xmlns:th="http://www.thymeleaf.org">
<style>
.transfomer {
display: inline-block;
padding-right: 20px;
}
</style>
<body>
<div>
<h1>All in One Transformer Test Transformation</h1>
</div>
<div>
<a href="/log">Log entries</a>
</div>
<div class="transfomer">
<h2>Tika Test Transformations</h2>
<form method="POST" enctype="multipart/form-data" action="/transform">
<table>
<tr><td><div style="text-align:right">file *</div></td><td><input type="file" name="file" /></td></tr>
<tr><td><div style="text-align:right">sourceMimetype *</div></td><td><input type="text" name="sourceMimetype" required="required" value="application/msword" /></td></tr>
<tr><td><div style="text-align:right">targetMimetype *</div></td><td><input type="text" name="targetMimetype" required="required" value="text/plain" /></td></tr>
<tr><td><div style="text-align:right">sourceExtension </div></td><td><input type="text" name="sourceExtension" value="" /></td></tr>
<tr><td><div style="text-align:right">targetExtension *</div></td><td><input type="text" name="targetExtension" required="required" value="txt" /></td></tr>
<tr><td><div style="text-align:right">timeout</div></td><td><input type="text" name="timeout" value="" /></td></tr>
<tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr>
<tr><td><div style="text-align:right">targetEncoding</div></td><td><input type="text" name="targetEncoding" value="UTF-8" /></td></tr>
<tr><td><div style="text-align:right">includeContents (archive) *</div></td><td><input type="checkbox" name="includeContents" value="true" /></td></tr>
<tr><td><div style="text-align:right">notExtractBookmarksText</div></td><td><input type="checkbox" name="notExtractBookmarksText" value="true" /></td></tr>
<tr><td></td><td><input type="submit" value="Transform" /></td></tr>
</table>
</form>
</div>
<div class="transfomer">
<h2>LibreOffice Test Transformation</h2>
<form method="POST" enctype="multipart/form-data" action="/transform">
<table>
<tr><td><div style="text-align:right">file *</div></td><td><input type="file" required="required" name="file" /></td></tr>
<tr><td><div style="text-align:right">sourceMimetype *</div></td><td><input type="text" name="sourceMimetype" required="required" value="text/html" /></td></tr>
<tr><td><div style="text-align:right">targetMimetype *</div></td><td><input type="text" name="targetMimetype" required="required" value="text/plain" /></td></tr>
<tr><td><div style="text-align:right">sourceExtension </div></td><td><input type="text" name="sourceExtension" value="" /></td></tr>
<tr><td><div style="text-align:right">targetExtension *</div></td><td><input type="text" name="targetExtension" required="required" value="png" /></td></tr>
<tr><td><div style="text-align:right">timeout</div></td><td><input type="text" name="timeout" value="" /></td></tr>
<tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr>
<tr><td></td><td><input type="submit" value="Transform" /></td></tr>
</table>
</form>
</div>
<div class="transfomer">
<h2>Alfresco PDF Renderer Test Transformation</h2>
<form method="POST" enctype="multipart/form-data" action="/transform">
<table>
<tr><td><div style="text-align:right">file *</div></td><td><input type="file" required="required" name="file" /></td></tr>
<tr><td><div style="text-align:right">sourceMimetype *</div></td><td><input type="text" name="sourceMimetype" required="required" value="" /></td></tr>
<tr><td><div style="text-align:right">targetMimetype *</div></td><td><input type="text" name="targetMimetype" required="required" value="" /></td></tr>
<tr><td><div style="text-align:right">sourceExtension </div></td><td><input type="text" name="sourceExtension" value="" /></td></tr>
<tr><td><div style="text-align:right">targetExtension *</div></td><td><input type="text" name="targetExtension" required="required" value="" /></td></tr>
<tr><td><div style="text-align:right">timeout</div></td><td><input type="text" name="timeout" value="" /></td></tr>
<tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr>
<tr><td><div style="text-align:right">page</div></td><td><input type="text" name="page" value="" /></td></tr>
<tr><td><div style="text-align:right">width</div></td><td><input type="text" name="width" value="" /></td></tr>
<tr><td><div style="text-align:right">height</div></td><td><input type="text" name="height" value="" /></td></tr>
<tr><td><div style="text-align:right">allowPdfEnlargement</div></td><td><input type="checkbox" name="allowPdfEnlargement" value="true" /></td></tr>
<tr><td><div style="text-align:right">maintainPdfAspectRatio</div></td><td><input type="checkbox" name="maintainPdfAspectRatio" value="true" /></td></tr>
<tr><td></td><td><input type="submit" value="Transform" /></td></tr>
</table>
</form>
</div>
<div class="transfomer">
<h2>Miscellaneous Transformers Test Transformation</h2>
<form method="POST" enctype="multipart/form-data" action="/transform">
<table>
<tr><td><div style="text-align:right">file *</div></td><td><input type="file" name="file" /></td></tr>
<tr><td><div style="text-align:right">sourceMimetype *</div></td><td><input type="text" name="sourceMimetype" required="required" value="text/html" /></td></tr>
<tr><td><div style="text-align:right">targetMimetype *</div></td><td><input type="text" name="targetMimetype" required="required" value="text/plain" /></td></tr>
<tr><td><div style="text-align:right">sourceExtension </div></td><td><input type="text" name="sourceExtension" value="" /></td></tr>
<tr><td><div style="text-align:right">targetExtension *</div></td><td><input type="text" name="targetExtension" required="required" value="" /></td></tr>
<tr><td><div style="text-align:right">timeout</div></td><td><input type="text" name="timeout" value="" /></td></tr>
<tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr>
<tr><td><div style="text-align:right">sourceEncoding</div></td><td><input type="text" name="sourceEncoding" value="" /></td></tr>
<tr><td><div style="text-align:right">targetEncoding</div></td><td><input type="text" name="targetEncoding" value="" /></td></tr>
<tr><td></td><td><input type="submit" value="Transform" /></td></tr>
</table>
</form>
</div>
<div style="display: inline-block;">
<h2>ImageMagick Test Transformation</h2>
<form method="POST" enctype="multipart/form-data" action="/transform">
<table>
<tr><td><div style="text-align:right">file *</div></td><td><input type="file" name="file" /></td></tr>
<tr><td><div style="text-align:right">sourceMimetype *</div></td><td><input type="text" name="sourceMimetype" required="required" value="text/html" /></td></tr>
<tr><td><div style="text-align:right">targetMimetype *</div></td><td><input type="text" name="targetMimetype" required="required" value="text/plain" /></td></tr>
<tr><td><div style="text-align:right">sourceExtension </div></td><td><input type="text" name="sourceExtension" value="" /></td></tr>
<tr><td><div style="text-align:right">targetExtension *</div></td><td><input type="text" name="targetExtension" required="required" value="" /></td></tr>
<tr><td><div style="text-align:right">timeout</div></td><td><input type="text" name="timeout" value="" /></td></tr>
<tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr>
<tr><td><div style="text-align:right">startPage</div></td><td><input type="text" name="startPage" /></td></tr>
<tr><td><div style="text-align:right">endPage</div></td><td><input type="text" name="endPage" /></td></tr>
<tr><td><div style="text-align:right">alphaRemove</div></td><td><input type="text" name="alphaRemove" /></td></tr>
<tr><td><div style="text-align:right">autoOrient</div></td><td><input type="text" name="autoOrient" /></td></tr>
<tr><td><div style="text-align:right">cropGravity</div></td><td><input type="text" name="cropGravity" value="North, NorthEast...Center"/></td></tr>
<tr><td><div style="text-align:right">cropWidth</div></td><td><input type="text" name="cropWidth" /></td></tr>
<tr><td><div style="text-align:right">cropHeight</div></td><td><input type="text" name="cropHeight" /></td></tr>
<tr><td><div style="text-align:right">cropPercentage</div></td><td><input type="checkbox" name="cropPercentage" value="true" /></td></tr>
<tr><td><div style="text-align:right">cropXOffset</div></td><td><input type="text" name="cropXOffset" /></td></tr>
<tr><td><div style="text-align:right">cropYOffset</div></td><td><input type="text" name="cropYOffset" /></td></tr>
<tr><td><div style="text-align:right">thumbnail</div></td><td><input type="checkbox" name="thumbnail" value="true" /></td></tr>
<tr><td><div style="text-align:right">resizeWidth</div></td><td><input type="text" name="resizeWidth" value="" /></td></tr>
<tr><td><div style="text-align:right">resizeHeight</div></td><td><input type="text" name="resizeHeight" value="" /></td></tr>
<tr><td><div style="text-align:right">resizePercentage</div></td><td><input type="checkbox" name="resizePercentage" value="true" /></td></tr>
<tr><td><div style="text-align:right">allowEnlargement</div></td><td><input type="checkbox" name="allowEnlargement" value="true" /></td></tr>
<tr><td><div style="text-align:right">maintainAspectRatio</div></td><td><input type="checkbox" name="maintainAspectRatio" value="true" /></td></tr>
<tr><td></td><td><input type="submit" value="Transform" /></td></tr>
</table>
</form>
</div>
</body>
</html>

View File

@@ -36,7 +36,7 @@ public class AIOControllerHttpRequestTest extends AbstractHttpRequestTest
@Override
protected String getTransformerName()
{
return "All in One Transformer";
return "0060-AllInOne";
}
@Override

View File

@@ -13,13 +13,13 @@ For more details on build a custom T-Engine, please refer to the current docs in
A transformer project is expected to provide the following files:
~~~
src/main/resources/templates/transformForm.html
src/main/resources/templates/test.html
src/main/java/org/alfresco/transformer/<TransformerName>Controller.java
src/main/java/org/alfresco/transformer/Application.java
~~~
* transformForm.html - A simple test page using [thymeleaf](http://www.thymeleaf.org) that gathers request
parameters so they may be used to test the transformer.
* test.html - A simple test page using [thymeleaf](http://www.thymeleaf.org) that gathers request
parameters, so they may be used to test the transformer.
~~~
<html xmlns:th="http://www.thymeleaf.org">
@@ -42,7 +42,7 @@ src/main/java/org/alfresco/transformer/Application.java
</form>
</div>
<div>
<a href="/log">Log entries</a>
<a href="/log">Log</a>
</div>
</body>
</html>

View File

@@ -26,20 +26,20 @@
*/
package org.alfresco.transform.base;
import org.alfresco.transform.base.clients.AlfrescoSharedFileStoreClient;
import org.alfresco.transform.base.fs.FileManager;
import org.alfresco.transform.base.logging.LogEntry;
import org.alfresco.transform.base.model.FileRefResponse;
import org.alfresco.transform.base.probes.ProbeTestTransform;
import org.alfresco.transform.base.util.OutputStreamLengthRecorder;
import org.alfresco.transform.common.TransformerDebug;
import org.alfresco.transform.client.model.InternalContext;
import org.alfresco.transform.client.model.TransformReply;
import org.alfresco.transform.client.model.TransformRequest;
import org.alfresco.transform.messages.TransformRequestValidator;
import org.alfresco.transform.config.TransformConfig;
import org.alfresco.transform.registry.TransformServiceRegistry;
import org.alfresco.transform.common.TransformException;
import org.alfresco.transform.base.clients.AlfrescoSharedFileStoreClient;
import org.alfresco.transform.base.logging.LogEntry;
import org.alfresco.transform.base.model.FileRefResponse;
import org.alfresco.transform.common.TransformerDebug;
import org.alfresco.transform.config.TransformConfig;
import org.alfresco.transform.messages.TransformRequestValidator;
import org.alfresco.transform.registry.TransformServiceRegistry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.TypeMismatchException;
@@ -86,24 +86,28 @@ import java.util.concurrent.atomic.AtomicInteger;
import static java.text.MessageFormat.format;
import static java.util.stream.Collectors.joining;
import static org.alfresco.transform.base.fs.FileManager.createTargetFile;
import static org.alfresco.transform.common.RequestParamMap.TARGET_ENCODING;
import static org.alfresco.transform.config.CoreVersionDecorator.setOrClearCoreVersion;
import static org.alfresco.transform.common.RequestParamMap.DIRECT_ACCESS_URL;
import static org.alfresco.transform.common.RequestParamMap.CONFIG_VERSION;
import static org.alfresco.transform.common.RequestParamMap.CONFIG_VERSION_DEFAULT;
import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM;
import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM_CONFIG;
import static org.alfresco.transform.base.fs.FileManager.TempFileProvider.createTempFile;
import static org.alfresco.transform.base.fs.FileManager.getDirectAccessUrlInputStream;
import static org.alfresco.transform.base.fs.FileManager.createTargetFile;
import static org.alfresco.transform.base.fs.FileManager.deleteFile;
import static org.alfresco.transform.base.fs.FileManager.getDirectAccessUrlInputStream;
import static org.alfresco.transform.base.fs.FileManager.getFilenameFromContentDisposition;
import static org.alfresco.transform.base.fs.FileManager.save;
import static org.alfresco.transform.common.RequestParamMap.CONFIG_VERSION;
import static org.alfresco.transform.common.RequestParamMap.CONFIG_VERSION_DEFAULT;
import static org.alfresco.transform.common.RequestParamMap.DIRECT_ACCESS_URL;
import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_ERROR;
import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_LOG;
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_TEST;
import static org.alfresco.transform.common.RequestParamMap.FILE;
import static org.alfresco.transform.common.RequestParamMap.SOURCE_ENCODING;
import static org.alfresco.transform.common.RequestParamMap.SOURCE_EXTENSION;
import static org.alfresco.transform.common.RequestParamMap.SOURCE_MIMETYPE;
import static org.alfresco.transform.common.RequestParamMap.TARGET_ENCODING;
import static org.alfresco.transform.common.RequestParamMap.TARGET_MIMETYPE;
import static org.alfresco.transform.config.CoreVersionDecorator.setOrClearCoreVersion;
import static org.springframework.http.HttpStatus.BAD_REQUEST;
import static org.springframework.http.HttpStatus.CREATED;
import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
@@ -221,16 +225,16 @@ public class TransformController
/**
* Test UI page to perform a transform.
*/
@GetMapping("/")
public String transformForm(Model model)
@GetMapping(ENDPOINT_ROOT)
public String test(Model model)
{
return "transformForm";
return "test";
}
/**
* Test UI error page.
*/
@GetMapping("/error")
@GetMapping(ENDPOINT_ERROR)
public String error()
{
return "error"; // the name of the template
@@ -239,7 +243,7 @@ public class TransformController
/**
* Test UI log page.
*/
@GetMapping("/log")
@GetMapping(ENDPOINT_LOG)
String log(Model model)
{
model.addAttribute("title", transformEngine.getTransformEngineName() + " Log Entries");
@@ -281,6 +285,46 @@ public class TransformController
return new ResponseEntity<>(transformConfig, OK);
}
@PostMapping(value = ENDPOINT_TEST, consumes = MULTIPART_FORM_DATA_VALUE)
public StreamingResponseBody test(HttpServletRequest request,
@RequestParam(value = FILE, required = false) MultipartFile sourceMultipartFile,
@RequestParam(value = SOURCE_MIMETYPE, required = false) String sourceMimetype,
@RequestParam(value = TARGET_MIMETYPE, required = false) String targetMimetype,
@RequestParam Map<String, String> origRequestParameters)
{
Map<String, String> requestParameters = new HashMap<>();
sourceMimetype = overrideMimetypeFromExtension(origRequestParameters, SOURCE_MIMETYPE, sourceMimetype);
targetMimetype = overrideMimetypeFromExtension(origRequestParameters, TARGET_MIMETYPE, targetMimetype);
origRequestParameters.forEach((name, value) ->
{
if (name.startsWith("value") == false)
{
if (name.startsWith("name"))
{
String suffix = name.substring("name".length());
name = value;
value = origRequestParameters.get("value" + suffix);
}
if (name != null && !name.isBlank() && value != null && !value.isBlank())
{
requestParameters.put(name, value);
}
}
});
return transform(request, sourceMultipartFile, sourceMimetype, targetMimetype, requestParameters);
}
private String overrideMimetypeFromExtension(Map<String, String> origRequestParameters, String name, String value)
{
String override = origRequestParameters.remove("_"+ name);
if (override != null && !override.isBlank())
{
value = override;
origRequestParameters.put(name, value);
}
return value;
}
@PostMapping(value = ENDPOINT_TRANSFORM, consumes = MULTIPART_FORM_DATA_VALUE)
public StreamingResponseBody transform(HttpServletRequest request,
@RequestParam(value = FILE, required = false) MultipartFile sourceMultipartFile,

View File

@@ -235,10 +235,14 @@ public class FileManager
{
return new URL(directUrl).openStream();
}
catch (IOException e)
catch (IllegalArgumentException e)
{
throw new TransformException(BAD_REQUEST.value(), "Direct Access Url is invalid.", e);
}
catch (IOException e)
{
throw new TransformException(BAD_REQUEST.value(), "Direct Access Url not found.", e);
}
}
public static void copyFileToOutputStream(File targetFile, OutputStream outputStream)

View File

@@ -6,16 +6,20 @@
<h2>Error Page</h2>
</div>
<div th:if="${message}">
<h2 th:text="${#strings.substring(message,0,#strings.indexOf(message,' - '))} + ' Error Page'"></h2>
<h3 th:text="${#strings.substring(message,#strings.indexOf(message,' - ')+3)}"></h3>
<h2 th:text="${message}"></h2>
<!-- <h2 th:text="${#strings.substring(message,0,#strings.indexOf(message,' - '))} + ' Error Page'"></h2>-->
<!-- <h3 th:text="${#strings.substring(message,#strings.indexOf(message,' - ')+3)}"></h3>-->
</div>
<p th:text="${status} + ' - ' + ${error}"></p>
</div>
<div>
<br/>
<a href="/">Test Transformation</a>
<a href="/log">Log entries</a>
<a href="/">Test</a>
<a href="/log">Log</a>
<a href="/ready">Ready</a>
<a href="/live">Live</a>
<a href="/transform/config?configVersion=9999">Config</a>
</div>
</body>

View File

@@ -35,8 +35,11 @@
<div>
<br/>
<a href="/">Test Transformation</a>
<a href="/transform/config?configVersion=9999">Transformer Config</a>
<a href="/">Test</a>
Log
<a href="/ready">Ready</a>
<a href="/live">Live</a>
<a href="/transform/config?configVersion=9999">Config</a>
</div>
</body>

View File

@@ -0,0 +1,204 @@
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div>
<h2>Test Transformations</h2>
<form method="POST" enctype="multipart/form-data" action="/test">
<table>
<tr><td><div style="text-align:right">file</div></td><td><input type="file" name="file" /></td></tr>
<tr><td><div style="text-align:right">Direct Url</div></td><td><input type="text" name="directAccessUrl"/></td></tr>
<tr><td><div style="text-align:right">sourceMimetype</div></td><td><input type="text" name="sourceMimetype" value="image/jpeg" /></td>
<td><select name="_sourceMimetype">
<option value="" >-- file extension --</option>
<option value="image/jpeg" >jpeg</option>
<option value="image/png">png</option>
<option value="application/pdf">pdf</option>
<option value="application/vnd.openxmlformats-officedocument.wordprocessingml.document">docx</option>
<option value="application/vnd.openxmlformats-officedocument.presentationml.slideshow">ppsx</option>
<option value="text/html">html</option>
<option value="text/plain">text</option>
</select></td></tr>
<tr><td><div style="text-align:right">targetMimetype</div></td><td><input type="text" name="targetMimetype" value="image/png" /></td>
<td><select name="_targetMimetype">
<option value="" >-- file extension --</option>
<option value="image/jpeg" >jpeg</option>
<option value="image/png">png</option>
<option value="application/pdf">pdf</option>
<option value="application/vnd.openxmlformats-officedocument.wordprocessingml.document">docx</option>
<option value="application/vnd.openxmlformats-officedocument.presentationml.slideshow">ppsx</option>
<option value="text/html">html</option>
<option value="text/plain">text</option>
</select></td></tr>
<tr><td><select name="name0">
<option value="sourceEncoding" >sourceEncoding</option>
<option value="targetEncoding">targetEncoding</option>
<option value="page">page</option>
<option value="width">width</option>
<option value="height">height</option>
<option value="allowPdfEnlargement">allowPdfEnlargement</option>
<option value="maintainPdfAspectRatio">maintainPdfAspectRatio</option>
<option value="startPage">startPage</option>
<option value="endPage">endPage</option>
<option value="alphaRemove">alphaRemove</option>
<option value="autoOrient">autoOrient</option>
<option value="cropGravity">cropGravity</option>
<option value="cropWidth">cropWidth</option>
<option value="cropHeight">cropHeight</option>
<option value="cropPercentage">cropPercentage</option>
<option value="cropXOffset">cropXOffset</option>
<option value="cropYOffset">cropYOffset</option>
<option value="thumbnail">thumbnail</option>
<option value="resizeWidth">resizeWidth</option>
<option value="resizeHeight">resizeHeight</option>
<option value="resizePercentage">resizePercentage</option>
<option value="allowEnlargement">allowEnlargement</option>
<option value="maintainAspectRatio">maintainAspectRatio</option>
<option value="commandOptions">commandOptions</option>
<option value="timeout">timeout</option>
<option value="includeContents">includeContents</option>
<option value="notExtractBookmarksText">notExtractBookmarksText</option>
<option value="pageLimit">pageLimit</option>
</select></td><td><input type="text" name="value0" /></td></tr>
<tr><td><select name="name1">
<option value="sourceEncoding">sourceEncoding</option>
<option value="targetEncoding">targetEncoding</option>
<option value="page">page</option>
<option value="width" >width</option>
<option value="height">height</option>
<option value="allowPdfEnlargement">allowPdfEnlargement</option>
<option value="maintainPdfAspectRatio">maintainPdfAspectRatio</option>
<option value="startPage">startPage</option>
<option value="endPage">endPage</option>
<option value="alphaRemove">alphaRemove</option>
<option value="autoOrient">autoOrient</option>
<option value="cropGravity">cropGravity</option>
<option value="cropWidth">cropWidth</option>
<option value="cropHeight">cropHeight</option>
<option value="cropPercentage">cropPercentage</option>
<option value="cropXOffset">cropXOffset</option>
<option value="cropYOffset">cropYOffset</option>
<option value="thumbnail">thumbnail</option>
<option value="resizeWidth" selected="selected">resizeWidth</option>
<option value="resizeHeight">resizeHeight</option>
<option value="resizePercentage">resizePercentage</option>
<option value="allowEnlargement">allowEnlargement</option>
<option value="maintainAspectRatio">maintainAspectRatio</option>
<option value="commandOptions">commandOptions</option>
<option value="timeout">timeout</option>
<option value="includeContents">includeContents</option>
<option value="notExtractBookmarksText">notExtractBookmarksText</option>
<option value="pageLimit">pageLimit</option>
</select></td><td><input type="text" name="value1" value="200" /></td></tr>
<tr><td><select id="name2">
<option value="sourceEncoding">sourceEncoding</option>
<option value="targetEncoding">targetEncoding</option>
<option value="page">page</option>
<option value="width">width</option>
<option value="height">height</option>
<option value="allowPdfEnlargement">allowPdfEnlargement</option>
<option value="maintainPdfAspectRatio">maintainPdfAspectRatio</option>
<option value="startPage">startPage</option>
<option value="endPage">endPage</option>
<option value="alphaRemove">alphaRemove</option>
<option value="autoOrient">autoOrient</option>
<option value="cropGravity">cropGravity</option>
<option value="cropWidth">cropWidth</option>
<option value="cropHeight">cropHeight</option>
<option value="cropPercentage">cropPercentage</option>
<option value="cropXOffset">cropXOffset</option>
<option value="cropYOffset">cropYOffset</option>
<option value="thumbnail">thumbnail</option>
<option value="resizeWidth">resizeWidth</option>
<option value="resizeHeight" selected="selected">resizeHeight</option>
<option value="resizePercentage">resizePercentage</option>
<option value="allowEnlargement">allowEnlargement</option>
<option value="maintainAspectRatio">maintainAspectRatio</option>
<option value="commandOptions">commandOptions</option>
<option value="timeout">timeout</option>
<option value="includeContents">includeContents</option>
<option value="notExtractBookmarksText">notExtractBookmarksText</option>
<option value="pageLimit">pageLimit</option>
</select></td><td><input type="text" name="value2" value="150" /></td></tr>
<tr><td><select name="name3">
<option value="sourceEncoding">sourceEncoding</option>
<option value="targetEncoding">targetEncoding</option>
<option value="page">page</option>
<option value="width">width</option>
<option value="height">height</option>
<option value="allowPdfEnlargement">allowPdfEnlargement</option>
<option value="maintainPdfAspectRatio">maintainPdfAspectRatio</option>
<option value="startPage">startPage</option>
<option value="endPage">endPage</option>
<option value="alphaRemove">alphaRemove</option>
<option value="autoOrient">autoOrient</option>
<option value="cropGravity">cropGravity</option>
<option value="cropWidth">cropWidth</option>
<option value="cropHeight">cropHeight</option>
<option value="cropPercentage">cropPercentage</option>
<option value="cropXOffset">cropXOffset</option>
<option value="cropYOffset">cropYOffset</option>
<option value="thumbnail" selected="selected">thumbnail</option>
<option value="resizeWidth">resizeWidth</option>
<option value="resizeHeight">resizeHeight</option>
<option value="resizePercentage">resizePercentage</option>
<option value="allowEnlargement">allowEnlargement</option>
<option value="maintainAspectRatio">maintainAspectRatio</option>
<option value="commandOptions">commandOptions</option>
<option value="timeout">timeout</option>
<option value="includeContents">includeContents</option>
<option value="notExtractBookmarksText">notExtractBookmarksText</option>
<option value="pageLimit">pageLimit</option>
</select></td><td><input type="text" name="value3" value="true" /></td></tr>
<tr><td><select name="name4">
<option value="sourceEncoding">sourceEncoding</option>
<option value="targetEncoding">targetEncoding</option>
<option value="page">page</option>
<option value="width">width</option>
<option value="height">height</option>
<option value="allowPdfEnlargement">allowPdfEnlargement</option>
<option value="maintainPdfAspectRatio">maintainPdfAspectRatio</option>
<option value="startPage">startPage</option>
<option value="endPage">endPage</option>
<option value="alphaRemove">alphaRemove</option>
<option value="autoOrient">autoOrient</option>
<option value="cropGravity">cropGravity</option>
<option value="cropWidth">cropWidth</option>
<option value="cropHeight">cropHeight</option>
<option value="cropPercentage">cropPercentage</option>
<option value="cropXOffset">cropXOffset</option>
<option value="cropYOffset">cropYOffset</option>
<option value="thumbnail">thumbnail</option>
<option value="resizeWidth">resizeWidth</option>
<option value="resizeHeight">resizeHeight</option>
<option value="resizePercentage">resizePercentage</option>
<option value="allowEnlargement">allowEnlargement</option>
<option value="maintainAspectRatio">maintainAspectRatio</option>
<option value="commandOptions">commandOptions</option>
<option value="timeout">timeout</option>
<option value="includeContents">includeContents</option>
<option value="notExtractBookmarksText">notExtractBookmarksText</option>
<option value="pageLimit">pageLimit</option>
</select></td><td><input type="text" name="value4" value="" /></td></tr>
<tr><td><input type="text" name="name5" value="" /></td><td><input type="text" name="value5" value="" /></td></tr>
<tr><td><input type="text" name="name6" value="" /></td><td><input type="text" name="value6" value="" /></td></tr>
<tr><td><input type="text" name="name7" value="" /></td><td><input type="text" name="value7" value="" /></td></tr>
<tr><td><input type="text" name="name8" value="" /></td><td><input type="text" name="value8" value="" /></td></tr>
<tr><td><input type="text" name="name9" value="" /></td><td><input type="text" name="value9" value="" /></td></tr>
<tr><td><input type="text" name="name10" value="" /></td><td><input type="text" name="value10" value="" /></td></tr>
<tr><td><input type="text" name="name11" value="" /></td><td><input type="text" name="value11" value="" /></td></tr>
<tr><td><input type="text" name="name12" value="" /></td><td><input type="text" name="value12" value="" /></td></tr>
<tr><td><input type="text" name="name13" value="" /></td><td><input type="text" name="value13" value="" /></td></tr>
<tr><td><input type="text" name="name14" value="" /></td><td><input type="text" name="value14" value="" /></td></tr>
<tr><td><div style="text-align:right">timeout</div></td><td><input type="text" name="timeout" value="" /></td></tr>
<tr><td></td><td><input type="submit" value="Transform" /></td></tr>
</table>
</form>
</div>
<div>
Test
<a href="/log">Log</a>
<a href="/ready">Ready</a>
<a href="/live">Live</a>
<a href="/transform/config?configVersion=9999">Config</a>
</div>
</body>
</html>

View File

@@ -35,6 +35,7 @@ import static org.springframework.test.util.AssertionErrors.assertTrue;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.http.HttpEntity;
@@ -46,6 +47,7 @@ import org.springframework.util.LinkedMultiValueMap;
* Super class for testing controllers with a server. Includes tests for the Controller itself.
* Note: Currently uses json rather than HTML as json is returned by this spring boot test harness.
*/
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes={org.alfresco.transform.base.Application.class})
public abstract class AbstractHttpRequestTest
{
@LocalServerPort
@@ -63,7 +65,7 @@ public abstract class AbstractHttpRequestTest
{
String result = restTemplate.getForObject("http://localhost:" + port + "/", String.class);
String title = getTransformerName() + ' ' + "Test Transformation";
String title = "Test Transformation";
assertTrue("\"" + title + "\" should be part of the page title", result.contains(title));
}
@@ -84,8 +86,7 @@ public abstract class AbstractHttpRequestTest
String.class);
String title = getTransformerName() + ' ' + "Error Page";
assertTrue("\"" + title + "\" should be part of the page title",
result.contains("Error Page"));
assertTrue("\"" + title + "\" should be part of the page title", result.contains("Error Page"));
}
@Test
@@ -99,12 +100,6 @@ public abstract class AbstractHttpRequestTest
parameters);
}
@Test
public void noTargetExtensionError()
{
assertMissingParameter("targetExtension");
}
private void assertMissingParameter(String name)
{
assertTransformError(true,

View File

@@ -80,6 +80,7 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.core.io.ClassPathResource;
@@ -98,6 +99,7 @@ import com.google.common.collect.ImmutableSet;
/**
* Super class for testing controllers without a server. Includes tests for the Controller itself.
*/
//@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes={org.alfresco.transform.base.config.WebApplicationConfig.class})
public abstract class AbstractTransformControllerTest
{
@TempDir // added as part of ATS-702 to allow test resources to be read from the imported jar files to prevent test resource duplication

View File

@@ -1,43 +0,0 @@
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div>
<h2>ImageMagick Test Transformation</h2>
<form method="POST" enctype="multipart/form-data" action="/transform">
<table>
<tr><td><div style="text-align:right">file *</div></td><td><input type="file" name="file" /></td></tr>
<tr><td><div style="text-align:right">targetExtension *</div></td><td><input type="text" name="targetExtension" value="" /></td></tr>
<tr><td><div style="text-align:right">timeout</div></td><td><input type="text" name="timeout" value="" /></td></tr>
<tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr>
<tr><td><div style="text-align:right">startPage</div></td><td><input type="text" name="startPage" /></td></tr>
<tr><td><div style="text-align:right">endPage</div></td><td><input type="text" name="endPage" /></td></tr>
<tr><td><div style="text-align:right">alphaRemove</div></td><td><input type="text" name="alphaRemove" /></td></tr>
<tr><td><div style="text-align:right">autoOrient</div></td><td><input type="text" name="autoOrient" /></td></tr>
<tr><td><div style="text-align:right">cropGravity</div></td><td><input type="text" name="cropGravity" />North, NorthEast...Center</td></tr>
<tr><td><div style="text-align:right">cropWidth</div></td><td><input type="text" name="cropWidth" /></td></tr>
<tr><td><div style="text-align:right">cropHeight</div></td><td><input type="text" name="cropHeight" /></td></tr>
<tr><td><div style="text-align:right">cropPercentage</div></td><td><input type="checkbox" name="cropPercentage" value="true" /></td></tr>
<tr><td><div style="text-align:right">cropXOffset</div></td><td><input type="text" name="cropXOffset" /></td></tr>
<tr><td><div style="text-align:right">cropYOffset</div></td><td><input type="text" name="cropYOffset" /></td></tr>
<tr><td><div style="text-align:right">thumbnail</div></td><td><input type="checkbox" name="thumbnail" value="true" /></td></tr>
<tr><td><div style="text-align:right">resizeWidth</div></td><td><input type="text" name="resizeWidth" value="" /></td></tr>
<tr><td><div style="text-align:right">resizeHeight</div></td><td><input type="text" name="resizeHeight" value="" /></td></tr>
<tr><td><div style="text-align:right">resizePercentage</div></td><td><input type="checkbox" name="resizePercentage" value="true" /></td></tr>
<tr><td><div style="text-align:right">allowEnlargement</div></td><td><input type="checkbox" name="allowEnlargement" value="true" /></td></tr>
<tr><td><div style="text-align:right">maintainAspectRatio</div></td><td><input type="checkbox" name="maintainAspectRatio" value="true" /></td></tr>
<tr><td></td><td><input type="submit" value="Transform" /></td></tr>
</table>
</form>
</div>
<div>
<a href="/log">Log entries</a>
</div>
</body>
</html>

View File

@@ -38,7 +38,7 @@ public class ImageMagickHttpRequestTest extends AbstractHttpRequestTest
@Override
protected String getTransformerName()
{
return "ImageMagick";
return "0030-ImageMagick";
}
@Override

View File

@@ -1,25 +0,0 @@
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div>
<h2>LibreOffice Test Transformation</h2>
<form method="POST" enctype="multipart/form-data" action="/transform">
<table>
<tr><td><div style="text-align:right">file *</div></td><td><input type="file" name="file" /></td></tr>
<tr><td><div style="text-align:right">sourceMimetype *</div></td><td><input type="text" name="sourceMimetype" value="" /></td></tr>
<tr><td><div style="text-align:right">targetMimetype</div></td><td><input type="text" name="targetMimetype" value="" /></td></tr>
<tr><td><div style="text-align:right">targetExtension *</div></td><td><input type="text" name="targetExtension" value="" /></td></tr>
<tr><td><div style="text-align:right">timeout</div></td><td><input type="text" name="timeout" value="" /></td></tr>
<tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr>
<tr><td></td><td><input type="submit" value="Transform" /></td></tr>
</table>
</form>
</div>
<div>
<a href="/log">Log entries</a>
</div>
</body>
</html>

View File

@@ -38,7 +38,7 @@ public class LibreOfficeHttpRequestTest extends AbstractHttpRequestTest
@Override
protected String getTransformerName()
{
return "LibreOffice";
return "0020-LibreOffice";
}
@Override

View File

@@ -1,29 +0,0 @@
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div>
<h2>Miscellaneous Transformers Test Transformation</h2>
<form method="POST" enctype="multipart/form-data" action="/transform">
<table>
<tr><td><div style="text-align:right">file *</div></td><td><input type="file" name="file" /></td></tr>
<tr><td><div style="text-align:right">sourceExtension *</div></td><td><input type="text" name="sourceExtension" value="" /></td></tr>
<tr><td><div style="text-align:right">targetExtension *</div></td><td><input type="text" name="targetExtension" value="" /></td></tr>
<tr><td><div style="text-align:right">sourceMimetype *</div></td><td><input type="text" name="sourceMimetype" value="" /></td></tr>
<tr><td><div style="text-align:right">targetMimetype *</div></td><td><input type="text" name="targetMimetype" value="" /></td></tr>
<tr><td><div style="text-align:right">sourceEncoding *</div></td><td><input type="text" name="sourceEncoding" value="" /></td></tr>
<tr><td><div style="text-align:right">targetEncoding *</div></td><td><input type="text" name="targetEncoding" value="" /></td></tr>
<tr><td><div style="text-align:right">timeout</div></td><td><input type="text" name="timeout" value="" /></td></tr>
<tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr>
<tr><td></td><td><input type="submit" value="Transform" /></td></tr>
</table>
</form>
</div>
<div>
<a href="/log">Log entries</a>
</div>
</body>
</html>

View File

@@ -38,7 +38,7 @@ public class MiscTransformerHttpRequestTest extends AbstractHttpRequestTest
@Override
protected String getTransformerName()
{
return "Miscellaneous Transformers";
return "0050-Misc";
}
@Override

View File

@@ -1,30 +0,0 @@
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div>
<h2>Alfresco PDF Renderer Test Transformation</h2>
<form method="POST" enctype="multipart/form-data" action="/transform">
<table>
<tr><td><div style="text-align:right">file *</div></td><td><input type="file" name="file" /></td></tr>
<tr><td><div style="text-align:right">targetExtension *</div></td><td><input type="text" name="targetExtension" value="" /></td></tr>
<tr><td><div style="text-align:right">timeout</div></td><td><input type="text" name="timeout" value="" /></td></tr>
<tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr>
<tr><td><div style="text-align:right">page</div></td><td><input type="text" name="page" value="" /></td></tr>
<tr><td><div style="text-align:right">width</div></td><td><input type="text" name="width" value="" /></td></tr>
<tr><td><div style="text-align:right">height</div></td><td><input type="text" name="height" value="" /></td></tr>
<tr><td><div style="text-align:right">allowPdfEnlargement</div></td><td><input type="checkbox" name="allowPdfEnlargement" value="true" /></td></tr>
<tr><td><div style="text-align:right">maintainPdfAspectRatio</div></td><td><input type="checkbox" name="maintainPdfAspectRatio" value="true" /></td></tr>
<tr><td></td><td><input type="submit" value="Transform" /></td></tr>
</table>
</form>
</div>
<div>
<a href="/log">Log entries</a>
</div>
</body>
</html>

View File

@@ -39,7 +39,7 @@ public class AlfrescoPdfRendererHttpRequestTest extends AbstractHttpRequestTest
@Override
protected String getTransformerName()
{
return "Alfresco PDF Renderer";
return "0040-PdfRenderer";
}
@Override

View File

@@ -1,28 +0,0 @@
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div>
<h2>Tika Test Transformations</h2>
<form method="POST" enctype="multipart/form-data" action="/transform">
<table>
<tr><td><div style="text-align:right">file *</div></td><td><input type="file" name="file" /></td></tr>
<tr><td><div style="text-align:right">Direct Url</div></td><td><input type="text" name="directAccessUrl"/></td></tr>
<tr><td><div style="text-align:right">sourceMimetype *</div></td><td><input type="text" name="sourceMimetype" value="application/msword" /></td></tr>
<tr><td><div style="text-align:right">targetExtension *</div></td><td><input type="text" name="targetExtension" value="txt" /></td></tr>
<tr><td><div style="text-align:right">targetMimetype *</div></td><td><input type="text" name="targetMimetype" value="text/plain" /></td></tr>
<tr><td><div style="text-align:right">targetEncoding *</div></td><td><input type="text" name="targetEncoding" value="UTF-8" /></td></tr>
<tr><td><div style="text-align:right">includeContents (archive) *</div></td><td><input type="checkbox" name="includeContents" value="true" /></td></tr>
<tr><td><div style="text-align:right">timeout</div></td><td><input type="text" name="timeout" value="" /></td></tr>
<tr><td><div style="text-align:right">testDelay</div></td><td><input type="text" name="testDelay" value="" /></td></tr>
<tr><td><div style="text-align:right">notExtractBookmarksText</div></td><td><input type="checkbox" name="notExtractBookmarksText" value="true" /></td></tr>
<tr><td></td><td><input type="submit" value="Transform" /></td></tr>
</table>
</form>
</div>
<div>
<a href="/log">Log entries</a>
</div>
</body>
</html>

View File

@@ -34,13 +34,12 @@ import org.springframework.util.LinkedMultiValueMap;
/**
* Tests TikaController with a server test harness.
*/
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class TikaHttpRequestTest extends AbstractHttpRequestTest
{
@Override
protected String getTransformerName()
{
return "Tika";
return "0010-Tika";
}
@Override

View File

@@ -77,8 +77,10 @@ public interface RequestParamMap
// Endpoints
String ENDPOINT_TRANSFORM = "/transform";
String ENDPOINT_TEST = "/test";
String ENDPOINT_TRANSFORM_CONFIG = "/transform/config";
String ENDPOINT_TRANSFORM_CONFIG_LATEST = ENDPOINT_TRANSFORM_CONFIG + "?" + CONFIG_VERSION + "=" + CONFIG_VERSION_LATEST;
String ENDPOINT_TRANSFORM_LOG = "/log";
String ENDPOINT_TRANSFORM_TEST = "/";
String ENDPOINT_ERROR = "/error";
String ENDPOINT_LOG = "/log";
String ENDPOINT_ROOT = "/";
}