MNT-24883 base engine changes to maintain source file name

This commit is contained in:
bsayan2
2025-05-23 19:11:06 +05:30
parent 4088f51b67
commit 8aa4c65855

View File

@@ -26,9 +26,9 @@
*/ */
package org.alfresco.transform.base.transform; package org.alfresco.transform.base.transform;
import static org.junit.jupiter.api.Assertions.assertEquals; import org.alfresco.transform.base.CustomTransformer;
import static org.junit.jupiter.api.Assertions.assertFalse; import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.io.TempDir;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
@@ -42,19 +42,14 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Collection;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.Part;
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.io.TempDir; import static org.junit.jupiter.api.Assertions.assertFalse;
import org.mockito.Mockito; import static org.junit.jupiter.api.Assertions.assertTrue;
import org.alfresco.transform.base.CustomTransformer;
/** /**
* Tests {@link StreamHandler}, {@link TransformManagerImpl#createSourceFile()} and {@link TransformManagerImpl#createTargetFile()} methods. * Tests {@link StreamHandler}, {@link TransformManagerImpl#createSourceFile()} and
* {@link TransformManagerImpl#createTargetFile()} methods.
*/ */
public class StreamHandlerTest public class StreamHandlerTest
{ {
@@ -453,7 +448,8 @@ public class StreamHandlerTest
try (ByteArrayOutputStream os = new ByteArrayOutputStream()) try (ByteArrayOutputStream os = new ByteArrayOutputStream())
{ {
new FakeStreamHandler() { new FakeStreamHandler()
{
@Override @Override
protected void init() throws IOException protected void init() throws IOException
{ {
@@ -484,7 +480,8 @@ public class StreamHandlerTest
File sourceFile = tempFile(); File sourceFile = tempFile();
write(sourceFile, ORIGINAL); write(sourceFile, ORIGINAL);
new FakeStreamHandler() { new FakeStreamHandler()
{
@Override @Override
protected void init() throws IOException protected void init() throws IOException
{ {
@@ -515,7 +512,8 @@ public class StreamHandlerTest
File sourceFile = tempFile(); File sourceFile = tempFile();
write(sourceFile, ORIGINAL); write(sourceFile, ORIGINAL);
new FakeStreamHandler() { new FakeStreamHandler()
{
@Override @Override
protected InputStream getInputStream() throws IOException protected InputStream getInputStream() throws IOException
{ {
@@ -535,7 +533,8 @@ public class StreamHandlerTest
{ {
File targetFile = tempFile(); File targetFile = tempFile();
new FakeStreamHandler() { new FakeStreamHandler()
{
@Override @Override
protected InputStream getInputStream() protected InputStream getInputStream()
{ {
@@ -561,7 +560,8 @@ public class StreamHandlerTest
{ {
try (ByteArrayOutputStream os = new ByteArrayOutputStream()) try (ByteArrayOutputStream os = new ByteArrayOutputStream())
{ {
new FakeStreamHandler() { new FakeStreamHandler()
{
@Override @Override
protected InputStream getInputStream() protected InputStream getInputStream()
{ {
@@ -576,65 +576,4 @@ public class StreamHandlerTest
}.handleTransformRequest(); }.handleTransformRequest();
} }
} }
@Test
public void testStartWithInputStreamAndCallCreateSourceFileForDocxFiles() throws Exception
{
try (InputStream inputStream = getSourceInputStreamFromBytes();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream())
{
transformManager.setSourceFileName("test.docx");
transformManager.setInputStream(inputStream);
OutputStream outputStreamLengthRecorder = transformManager.setOutputStream(outputStream);
File sourceFileCreatedByTransform = transformManager.createSourceFile();
assertTrue(sourceFileCreatedByTransform.exists());
write(outputStreamLengthRecorder, read(sourceFileCreatedByTransform) + CHANGE);
transformManager.copyTargetFileToOutputStream();
transformManager.getOutputStream().close();
closeInputStreamWithoutException(inputStream);
Long outputLength = transformManager.getOutputLength();
transformManager.deleteSourceFile();
transformManager.deleteTargetFile();
assertEquals(EXPECTED, read(outputStream));
assertEquals(EXPECTED.length(), outputLength);
assertFalse(sourceFileCreatedByTransform.exists());
}
}
@Test
public void testStartWithInputStreamAndCallCreateSourceFileForDocxFilesWithHttpRequest() throws Exception
{
try (InputStream inputStream = getSourceInputStreamFromBytes();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream())
{
HttpServletRequest mockRequest = Mockito.mock(HttpServletRequest.class);
Part mockPart = Mockito.mock(Part.class);
Mockito.when(mockPart.getSubmittedFileName()).thenReturn("dummy.docx");
Collection<Part> parts = Arrays.asList(mockPart);
Mockito.when(mockRequest.getParts()).thenReturn(parts);
transformManager.setSourceMimetype("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
transformManager.setInputStream(inputStream);
transformManager.setRequest(mockRequest);
OutputStream outputStreamLengthRecorder = transformManager.setOutputStream(outputStream);
File sourceFileCreatedByTransform = transformManager.createSourceFile();
assertTrue(sourceFileCreatedByTransform.exists());
write(outputStreamLengthRecorder, read(sourceFileCreatedByTransform) + CHANGE);
transformManager.copyTargetFileToOutputStream();
transformManager.getOutputStream().close();
closeInputStreamWithoutException(inputStream);
Long outputLength = transformManager.getOutputLength();
transformManager.deleteSourceFile();
transformManager.deleteTargetFile();
assertEquals(EXPECTED, read(outputStream));
assertEquals(EXPECTED.length(), outputLength);
assertFalse(sourceFileCreatedByTransform.exists());
}
}
} }