diff --git a/deprecated/alfresco-transformer-base/pom.xml b/deprecated/alfresco-transformer-base/pom.xml index 85319b48..1a081978 100644 --- a/deprecated/alfresco-transformer-base/pom.xml +++ b/deprecated/alfresco-transformer-base/pom.xml @@ -78,6 +78,11 @@ com.google.guava guava + + org.springframework.boot + spring-boot-starter-webmvc-test + test + diff --git a/deprecated/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractHttpRequestTest.java b/deprecated/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractHttpRequestTest.java index 1448fb03..90c462c9 100644 --- a/deprecated/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractHttpRequestTest.java +++ b/deprecated/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractHttpRequestTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2023 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -36,7 +36,8 @@ import static org.alfresco.transform.common.RequestParamMap.ENDPOINT_TRANSFORM; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.resttestclient.TestRestTemplate; +import org.springframework.boot.resttestclient.autoconfigure.AutoConfigureTestRestTemplate; import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -49,6 +50,7 @@ import org.springframework.util.LinkedMultiValueMap; * Super class for testing controllers with a server. Includes tests for the AbstractTransformerController itself. Note: Currently uses json rather than HTML as json is returned by this spring boot test harness. */ @Deprecated +@AutoConfigureTestRestTemplate public abstract class AbstractHttpRequestTest { @LocalServerPort diff --git a/deprecated/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java b/deprecated/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java index a16d8fce..9e4d32f5 100644 --- a/deprecated/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java +++ b/deprecated/alfresco-transformer-base/src/test/java/org/alfresco/transformer/AbstractTransformerControllerTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2022 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -67,13 +67,13 @@ 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.mock.mockito.MockBean; -import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.core.io.ClassPathResource; import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.context.bean.override.mockito.MockitoBean; +import org.springframework.test.context.bean.override.mockito.MockitoSpyBean; import org.springframework.test.util.ReflectionTestUtils; import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.alfresco.transform.client.model.InternalContext; @@ -107,10 +107,10 @@ public abstract class AbstractTransformerControllerTest @Autowired protected ObjectMapper objectMapper; - @MockBean + @MockitoBean protected AlfrescoSharedFileStoreClient alfrescoSharedFileStoreClient; - @SpyBean + @MockitoSpyBean protected TransformServiceRegistry transformRegistry; @Value("${transform.core.version}") @@ -222,7 +222,7 @@ public abstract class AbstractTransformerControllerTest return testFileUrl == null ? null : testFile; } - protected MockHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) + protected MockMultipartHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) { if (sourceFile == null) { @@ -234,10 +234,10 @@ public abstract class AbstractTransformerControllerTest } } - private MockHttpServletRequestBuilder mockMvcRequestWithoutMockMultipartFile(String url, + private MockMultipartHttpServletRequestBuilder mockMvcRequestWithoutMockMultipartFile(String url, String... params) { - MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.multipart(ENDPOINT_TRANSFORM); + MockMultipartHttpServletRequestBuilder builder = MockMvcRequestBuilders.multipart(ENDPOINT_TRANSFORM); if (params.length % 2 != 0) { @@ -251,10 +251,10 @@ public abstract class AbstractTransformerControllerTest return builder; } - private MockHttpServletRequestBuilder mockMvcRequestWithMockMultipartFile(String url, MockMultipartFile sourceFile, + private MockMultipartHttpServletRequestBuilder mockMvcRequestWithMockMultipartFile(String url, MockMultipartFile sourceFile, String... params) { - MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.multipart(ENDPOINT_TRANSFORM).file( + MockMultipartHttpServletRequestBuilder builder = MockMvcRequestBuilders.multipart(ENDPOINT_TRANSFORM).file( sourceFile); if (params.length % 2 != 0) diff --git a/engines/aio/pom.xml b/engines/aio/pom.xml index 552cb3b5..71d5aa93 100644 --- a/engines/aio/pom.xml +++ b/engines/aio/pom.xml @@ -137,6 +137,11 @@ testcontainers test + + org.springframework.boot + spring-boot-starter-webmvc-test + test + diff --git a/engines/aio/src/test/java/org/alfresco/transform/aio/AIOTest.java b/engines/aio/src/test/java/org/alfresco/transform/aio/AIOTest.java index ca3d6d3f..434e83d4 100644 --- a/engines/aio/src/test/java/org/alfresco/transform/aio/AIOTest.java +++ b/engines/aio/src/test/java/org/alfresco/transform/aio/AIOTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2025 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -43,7 +43,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.mock.web.MockMultipartFile; -import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder; import org.alfresco.transform.base.AbstractBaseTest; import org.alfresco.transform.base.TransformController; @@ -73,7 +73,7 @@ public class AIOTest extends AbstractBaseTest @Override // Add extra required parameters to the request. - protected MockHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) + protected MockMultipartHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) { return super.mockMvcRequest(url, sourceFile, params) .param("targetMimetype", targetMimetype) diff --git a/engines/base/pom.xml b/engines/base/pom.xml index 4b1de53e..0e954a61 100644 --- a/engines/base/pom.xml +++ b/engines/base/pom.xml @@ -30,7 +30,7 @@ org.springframework.boot - spring-boot-starter-aop + spring-boot-starter-aspectj org.springframework.boot @@ -49,6 +49,7 @@ org.springframework.retry spring-retry + ${spring-retry.version} io.micrometer @@ -112,6 +113,22 @@ testcontainers test + + org.springframework.boot + spring-boot-jackson2 + + + + + + org.springframework.boot + spring-boot-starter-webmvc-test + test + + + org.springframework.boot + spring-boot-starter-restclient + diff --git a/engines/base/src/main/java/org/alfresco/transform/base/Application.java b/engines/base/src/main/java/org/alfresco/transform/base/Application.java index 2f33ad29..dfc72182 100644 --- a/engines/base/src/main/java/org/alfresco/transform/base/Application.java +++ b/engines/base/src/main/java/org/alfresco/transform/base/Application.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2022 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -29,8 +29,8 @@ package org.alfresco.transform.base; import io.micrometer.core.instrument.MeterRegistry; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; -import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.micrometer.metrics.autoconfigure.MeterRegistryCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.core.task.SimpleAsyncTaskExecutor; import org.springframework.core.task.TaskExecutor; diff --git a/engines/base/src/main/java/org/alfresco/transform/base/sfs/SharedFileStoreClient.java b/engines/base/src/main/java/org/alfresco/transform/base/sfs/SharedFileStoreClient.java index 6a2d2364..c6d55824 100644 --- a/engines/base/src/main/java/org/alfresco/transform/base/sfs/SharedFileStoreClient.java +++ b/engines/base/src/main/java/org/alfresco/transform/base/sfs/SharedFileStoreClient.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2023 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -142,8 +142,11 @@ public class SharedFileStoreClient { logger.debug(" Deleting intermediate file {}", fileReference); - client.delete().uri(fileReference) - .exchange().block(); + client.delete() + .uri(fileReference) + .retrieve() + .toBodilessEntity() + .block(); } catch (Exception e) { diff --git a/engines/base/src/test/java/org/alfresco/transform/base/AbstractBaseTest.java b/engines/base/src/test/java/org/alfresco/transform/base/AbstractBaseTest.java index acba6539..6b5b3783 100644 --- a/engines/base/src/test/java/org/alfresco/transform/base/AbstractBaseTest.java +++ b/engines/base/src/test/java/org/alfresco/transform/base/AbstractBaseTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2022 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -58,17 +58,17 @@ import java.util.concurrent.atomic.AtomicLong; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.io.TempDir; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; 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.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.util.ReflectionTestUtils; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; -import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.alfresco.transform.base.executors.CommandExecutor; @@ -86,6 +86,7 @@ import org.alfresco.transform.registry.TransformServiceRegistry; * Super class for unit testing. */ @SpringBootTest(classes = {org.alfresco.transform.base.Application.class}) +@ExtendWith(org.mockito.junit.jupiter.MockitoExtension.class) @AutoConfigureMockMvc public abstract class AbstractBaseTest { @@ -105,10 +106,10 @@ public abstract class AbstractBaseTest @Autowired protected ObjectMapper objectMapper; - @MockBean + @MockitoBean protected SharedFileStoreClient sharedFileStoreClient; - @SpyBean + @Autowired protected TransformServiceRegistry transformRegistry; protected String sourceExtension; @@ -227,7 +228,7 @@ public abstract class AbstractBaseTest return testFileUrl == null ? null : testFile; } - protected MockHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) + protected MockMultipartHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) { if (sourceFile == null) { @@ -239,9 +240,9 @@ public abstract class AbstractBaseTest } } - private MockHttpServletRequestBuilder mockMvcRequestWithoutMockMultipartFile(String url, String... params) + private MockMultipartHttpServletRequestBuilder mockMvcRequestWithoutMockMultipartFile(String url, String... params) { - MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.multipart(url); + MockMultipartHttpServletRequestBuilder builder = MockMvcRequestBuilders.multipart(url); if (params.length % 2 != 0) { @@ -255,10 +256,10 @@ public abstract class AbstractBaseTest return builder; } - private MockHttpServletRequestBuilder mockMvcRequestWithMockMultipartFile(String url, MockMultipartFile sourceFile, + private MockMultipartHttpServletRequestBuilder mockMvcRequestWithMockMultipartFile(String url, MockMultipartFile sourceFile, String... params) { - MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.multipart(ENDPOINT_TRANSFORM).file(sourceFile); + MockMultipartHttpServletRequestBuilder builder = MockMvcRequestBuilders.multipart(url).file(sourceFile); if (params.length % 2 != 0) { @@ -330,6 +331,7 @@ public abstract class AbstractBaseTest @Test public void noExtensionSourceFilenameTest() throws Exception { + options.clear(); sourceFile = new MockMultipartFile("file", "../quick", sourceMimetype, sourceFileBytes); mockMvc.perform( diff --git a/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerAllInOneTest.java b/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerAllInOneTest.java index 53c0e940..f8ce4b8f 100644 --- a/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerAllInOneTest.java +++ b/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerAllInOneTest.java @@ -59,8 +59,8 @@ import java.util.concurrent.TimeUnit; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.mock.web.MockMultipartFile; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.web.servlet.MockMvc; diff --git a/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerTest.java b/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerTest.java index 9798ccaa..e2ed665a 100644 --- a/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerTest.java +++ b/engines/base/src/test/java/org/alfresco/transform/base/TransformControllerTest.java @@ -85,14 +85,14 @@ import org.junit.jupiter.api.io.TempDir; import org.mockito.stubbing.Answer; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.core.io.Resource; import org.springframework.core.io.UrlResource; import org.springframework.http.ResponseEntity; import org.springframework.mock.web.MockMultipartFile; import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.util.ReflectionTestUtils; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -132,7 +132,7 @@ public class TransformControllerTest private String coreVersion; @TempDir public File tempDir; - @MockBean + @MockitoBean protected SharedFileStoreClient fakeSfsClient; static void resetProbeForTesting(TransformController transformController) diff --git a/engines/base/src/test/java/org/alfresco/transform/base/http/RestTest.java b/engines/base/src/test/java/org/alfresco/transform/base/http/RestTest.java index c6fe51b2..375ad724 100644 --- a/engines/base/src/test/java/org/alfresco/transform/base/http/RestTest.java +++ b/engines/base/src/test/java/org/alfresco/transform/base/http/RestTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2022 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -40,13 +40,15 @@ import static org.alfresco.transform.common.RequestParamMap.TARGET_MIMETYPE; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.resttestclient.TestRestTemplate; +import org.springframework.boot.resttestclient.autoconfigure.AutoConfigureTestRestTemplate; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.test.context.ContextConfiguration; import org.springframework.util.LinkedMultiValueMap; +import org.springframework.web.util.HtmlUtils; import org.alfresco.transform.base.fakes.FakeTransformEngineWithTwoCustomTransformers; import org.alfresco.transform.base.fakes.FakeTransformerPdf2Png; @@ -61,6 +63,7 @@ import org.alfresco.transform.base.fakes.FakeTransformerTxT2Pdf; FakeTransformEngineWithTwoCustomTransformers.class, FakeTransformerTxT2Pdf.class, FakeTransformerPdf2Png.class}) +@AutoConfigureTestRestTemplate public class RestTest { @Autowired @@ -82,7 +85,7 @@ public class RestTest ResponseEntity response = restTemplate.exchange(ENDPOINT_TRANSFORM, POST, new HttpEntity<>(parameters, HEADERS), String.class, ""); - assertTrue(response.getBody().contains("Required request part 'file' is not present")); + assertTrue(HtmlUtils.htmlUnescape(response.getBody()).contains("Required request part 'file' is not present")); } @Test diff --git a/engines/base/src/test/java/org/alfresco/transform/base/messaging/QueueTransformServiceTest.java b/engines/base/src/test/java/org/alfresco/transform/base/messaging/QueueTransformServiceTest.java index 33779b2e..fe7fefbb 100644 --- a/engines/base/src/test/java/org/alfresco/transform/base/messaging/QueueTransformServiceTest.java +++ b/engines/base/src/test/java/org/alfresco/transform/base/messaging/QueueTransformServiceTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2023 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -44,23 +44,27 @@ import jakarta.jms.Message; import org.apache.activemq.command.ActiveMQObjectMessage; import org.apache.activemq.command.ActiveMQQueue; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; -import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jms.support.converter.MessageConversionException; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.alfresco.transform.base.TransformController; import org.alfresco.transform.client.model.TransformReply; import org.alfresco.transform.client.model.TransformRequest; @SpringBootTest(classes = {org.alfresco.transform.base.Application.class}) +@ExtendWith(MockitoExtension.class) public class QueueTransformServiceTest { - @Mock + @MockitoBean private TransformController transformController; - @Mock + @MockitoBean private TransformMessageConverter transformMessageConverter; - @Mock + @MockitoBean private TransformReplySender transformReplySender; @InjectMocks @@ -143,6 +147,7 @@ public class QueueTransformServiceTest public void testConvertMessageThrowsJMSExceptionThenReplyWithInternalServerError() throws JMSException { + Mockito.reset(transformController); ActiveMQObjectMessage msg = new ActiveMQObjectMessage(); msg.setCorrelationId("1234"); ActiveMQQueue destination = new ActiveMQQueue(); diff --git a/engines/base/src/test/java/org/alfresco/transform/base/registry/TransformRegistryRefreshTest.java b/engines/base/src/test/java/org/alfresco/transform/base/registry/TransformRegistryRefreshTest.java index e528959a..ed10b412 100644 --- a/engines/base/src/test/java/org/alfresco/transform/base/registry/TransformRegistryRefreshTest.java +++ b/engines/base/src/test/java/org/alfresco/transform/base/registry/TransformRegistryRefreshTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2015-2022 Alfresco Software, Ltd. All rights reserved. + * Copyright 2015-2026 Alfresco Software, Ltd. All rights reserved. * * License rights for this program may be obtained from Alfresco Software, Ltd. * pursuant to a written agreement and any use of this program without such an @@ -16,9 +16,8 @@ import com.google.common.collect.ImmutableMap; import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.SpyBean; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.util.ReflectionTestUtils; @@ -36,7 +35,7 @@ import org.alfresco.transform.base.fakes.FakeTransformerTxT2Pdf; @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) public class TransformRegistryRefreshTest { - @SpyBean(proxyTargetAware = false) + @Autowired private TransformRegistry transformRegistry; @Autowired private TransformConfigFromFiles transformConfigFromFiles; diff --git a/engines/base/src/test/java/org/alfresco/transform/base/registry/TransformRegistryTest.java b/engines/base/src/test/java/org/alfresco/transform/base/registry/TransformRegistryTest.java index 787d1090..522febbe 100644 --- a/engines/base/src/test/java/org/alfresco/transform/base/registry/TransformRegistryTest.java +++ b/engines/base/src/test/java/org/alfresco/transform/base/registry/TransformRegistryTest.java @@ -44,8 +44,8 @@ import com.google.common.collect.ImmutableSet; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.test.util.ReflectionTestUtils; import org.alfresco.transform.base.fakes.AbstractFakeTransformEngine; diff --git a/engines/base/src/test/java/org/alfresco/transform/base/transform/FragmentHandlerTest.java b/engines/base/src/test/java/org/alfresco/transform/base/transform/FragmentHandlerTest.java index 16945494..d1e3e246 100644 --- a/engines/base/src/test/java/org/alfresco/transform/base/transform/FragmentHandlerTest.java +++ b/engines/base/src/test/java/org/alfresco/transform/base/transform/FragmentHandlerTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2022 - 2023 Alfresco Software Limited + * Copyright (C) 2022 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -51,15 +51,15 @@ import com.google.common.collect.ImmutableList; import org.apache.commons.lang3.tuple.Pair; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.core.io.ByteArrayResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.mock.web.MockMultipartFile; import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -85,11 +85,11 @@ public class FragmentHandlerTest @Autowired private MockMvc mockMvc; - @MockBean + @MockitoBean protected SharedFileStoreClient fakeSfsClient; - @MockBean + @MockitoBean private TransformReplySender transformReplySender; - @MockBean + @MockitoBean private ProbeTransform probeTransform; private void assertFragments(String sourceText, String expectedError, List expectedLines) diff --git a/engines/imagemagick/pom.xml b/engines/imagemagick/pom.xml index f004ecf7..eff2967d 100644 --- a/engines/imagemagick/pom.xml +++ b/engines/imagemagick/pom.xml @@ -58,6 +58,11 @@ testcontainers test + + org.springframework.boot + spring-boot-starter-webmvc-test + test + diff --git a/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickTest.java b/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickTest.java index dd0e3c4d..7f5e4749 100644 --- a/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickTest.java +++ b/engines/imagemagick/src/test/java/org/alfresco/transform/imagemagick/ImageMagickTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2025 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -60,16 +60,17 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.mockito.Mock; import org.mockito.stubbing.Answer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.mock.web.MockMultipartFile; -import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.context.bean.override.mockito.MockitoBean; +import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.alfresco.transform.base.AbstractBaseTest; @@ -84,6 +85,7 @@ import org.alfresco.transform.imagemagick.transformers.ImageMagickCommandExecuto /** * Test ImageMagick with mocked external command. */ +@AutoConfigureMockMvc public class ImageMagickTest extends AbstractBaseTest { private static String PREFIX_IMAGE = "image/"; @@ -91,11 +93,11 @@ public class ImageMagickTest extends AbstractBaseTest @Autowired private ImageMagickCommandExecutor imageMagickCommandExecutor; - @Mock + @MockitoBean protected ExecutionResult mockExecutionResult; - @Mock + @MockitoBean protected RuntimeExec mockTransformCommand; - @Mock + @MockitoBean protected RuntimeExec mockCheckCommand; @Value("${transform.core.imagemagick.exe}") protected String EXE; @@ -122,9 +124,9 @@ public class ImageMagickTest extends AbstractBaseTest } @Override - protected MockHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) + protected MockMultipartHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) { - final MockHttpServletRequestBuilder builder = super.mockMvcRequest(url, sourceFile, params) + final MockMultipartHttpServletRequestBuilder builder = super.mockMvcRequest(url, sourceFile, params) .param("targetMimetype", targetMimetype) .param("sourceMimetype", sourceMimetype); return builder; diff --git a/engines/libreoffice/pom.xml b/engines/libreoffice/pom.xml index 00f3001c..e1109db3 100644 --- a/engines/libreoffice/pom.xml +++ b/engines/libreoffice/pom.xml @@ -62,6 +62,11 @@ testcontainers test + + org.springframework.boot + spring-boot-starter-webmvc-test + test + diff --git a/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeTest.java b/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeTest.java index 0e753350..7984ad5e 100644 --- a/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeTest.java +++ b/engines/libreoffice/src/test/java/org/alfresco/transform/libreoffice/LibreOfficeTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2022 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -59,17 +59,18 @@ import org.artofsolving.jodconverter.office.OfficeException; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.mockito.Mock; -import org.mockito.Spy; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.context.bean.override.mockito.MockitoBean; +import org.springframework.test.context.bean.override.mockito.MockitoSpyBean; import org.springframework.test.util.ReflectionTestUtils; -import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.alfresco.transform.base.AbstractBaseTest; @@ -84,18 +85,19 @@ import org.alfresco.transform.libreoffice.transformers.LibreOfficeTransformer; /** * Test LibreOffice with mocked external command. */ +@AutoConfigureMockMvc public class LibreOfficeTest extends AbstractBaseTest { protected static String targetMimetype = MIMETYPE_PDF; - @Autowired + @MockitoSpyBean private LibreOfficeTransformer libreOfficeTransformer; @Autowired private CustomTransformers customTransformers; - @Spy + @Autowired private LibreOfficeTransformer spyLibreOfficeTransformer; - @Mock + @MockitoBean protected ExecutionResult mockExecutionResult; @Value("${transform.core.libreoffice.path}") @@ -162,9 +164,9 @@ public class LibreOfficeTest extends AbstractBaseTest } @Override - protected MockHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) + protected MockMultipartHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) { - final MockHttpServletRequestBuilder builder = super.mockMvcRequest(url, sourceFile, params) + final MockMultipartHttpServletRequestBuilder builder = super.mockMvcRequest(url, sourceFile, params) .param("targetMimetype", targetMimetype) .param("sourceMimetype", sourceMimetype); return builder; diff --git a/engines/misc/pom.xml b/engines/misc/pom.xml index b5856447..aba8e7ab 100644 --- a/engines/misc/pom.xml +++ b/engines/misc/pom.xml @@ -102,6 +102,11 @@ testcontainers test + + org.springframework.boot + spring-boot-starter-webmvc-test + test + diff --git a/engines/misc/src/test/java/org/alfresco/transform/misc/MiscTest.java b/engines/misc/src/test/java/org/alfresco/transform/misc/MiscTest.java index 52abe699..eecbd052 100644 --- a/engines/misc/src/test/java/org/alfresco/transform/misc/MiscTest.java +++ b/engines/misc/src/test/java/org/alfresco/transform/misc/MiscTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2025 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -57,7 +57,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.mock.web.MockMultipartFile; import org.springframework.test.web.servlet.MvcResult; -import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder; import org.alfresco.transform.base.AbstractBaseTest; @@ -84,9 +84,9 @@ public class MiscTest extends AbstractBaseTest } @Override - protected MockHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) + protected MockMultipartHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) { - final MockHttpServletRequestBuilder builder = super.mockMvcRequest(url, sourceFile, params) + final MockMultipartHttpServletRequestBuilder builder = super.mockMvcRequest(url, sourceFile, params) .param("sourceEncoding", sourceEncoding) .param("targetMimetype", targetMimetype) .param("sourceMimetype", sourceMimetype) @@ -451,7 +451,7 @@ public class MiscTest extends AbstractBaseTest final MockMultipartFile sourceFile = new MockMultipartFile("file", "test_file." + sourceExtension, sourceMimetype, content); - final MockHttpServletRequestBuilder requestBuilder = super.mockMvcRequest(ENDPOINT_TRANSFORM, sourceFile) + final MockMultipartHttpServletRequestBuilder requestBuilder = super.mockMvcRequest(ENDPOINT_TRANSFORM, sourceFile) .param(TARGET_MIMETYPE, targetMimetype) .param(SOURCE_MIMETYPE, sourceMimetype); diff --git a/engines/pdfrenderer/pom.xml b/engines/pdfrenderer/pom.xml index d1d4c1a3..88278086 100644 --- a/engines/pdfrenderer/pom.xml +++ b/engines/pdfrenderer/pom.xml @@ -54,6 +54,11 @@ testcontainers test + + org.springframework.boot + spring-boot-starter-webmvc-test + test + diff --git a/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererTest.java b/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererTest.java index 5bce24d3..1069b1e1 100644 --- a/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererTest.java +++ b/engines/pdfrenderer/src/test/java/org/alfresco/transform/pdfrenderer/PdfRendererTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2022 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -59,7 +59,6 @@ import java.util.UUID; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.mockito.Mock; import org.mockito.stubbing.Answer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -68,7 +67,8 @@ import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.mock.web.MockMultipartFile; -import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.context.bean.override.mockito.MockitoBean; +import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.alfresco.transform.base.AbstractBaseTest; @@ -87,11 +87,11 @@ public class PdfRendererTest extends AbstractBaseTest { @Autowired private PdfRendererTransformer pdfRendererTransformer; - @Mock + @MockitoBean private ExecutionResult mockExecutionResult; - @Mock + @MockitoBean protected RuntimeExec mockTransformCommand; - @Mock + @MockitoBean protected RuntimeExec mockCheckCommand; @Value("${transform.core.pdfrenderer.exe}") protected String execPath; @@ -110,9 +110,9 @@ public class PdfRendererTest extends AbstractBaseTest } @Override - protected MockHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) + protected MockMultipartHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) { - final MockHttpServletRequestBuilder builder = super.mockMvcRequest(url, sourceFile, params) + final MockMultipartHttpServletRequestBuilder builder = super.mockMvcRequest(url, sourceFile, params) .param("targetMimetype", targetMimetype) .param("sourceMimetype", sourceMimetype); return builder; diff --git a/engines/tika/pom.xml b/engines/tika/pom.xml index 13100c47..6b9e9037 100644 --- a/engines/tika/pom.xml +++ b/engines/tika/pom.xml @@ -119,6 +119,11 @@ testcontainers test + + org.springframework.boot + spring-boot-starter-webmvc-test + test + diff --git a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaTest.java b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaTest.java index 8a768aa2..a47f0e65 100644 --- a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaTest.java +++ b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2025 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -29,6 +29,7 @@ package org.alfresco.transform.tika; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.when; import static org.springframework.http.HttpHeaders.ACCEPT; import static org.springframework.http.HttpHeaders.CONTENT_DISPOSITION; @@ -97,7 +98,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.mock.web.MockMultipartFile; import org.springframework.test.web.servlet.MvcResult; -import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.alfresco.transform.base.AbstractBaseTest; @@ -156,9 +157,9 @@ public class TikaTest extends AbstractBaseTest expectedTargetFileBytes = readTargetFileBytes ? readTestFile(targetExtension) : null; sourceFile = new MockMultipartFile("file", "quick." + sourceExtension, sourceMimetype, sourceFileBytes); - when(mockExecutionResult.getExitValue()).thenReturn(0); - when(mockExecutionResult.getStdErr()).thenReturn("STDERROR"); - when(mockExecutionResult.getStdOut()).thenReturn("STDOUT"); + lenient().when(mockExecutionResult.getExitValue()).thenReturn(0); + lenient().when(mockExecutionResult.getStdErr()).thenReturn("STDERROR"); + lenient().when(mockExecutionResult.getStdOut()).thenReturn("STDOUT"); } private void transform(String transform, String sourceExtension, String targetExtension, @@ -170,7 +171,7 @@ public class TikaTest extends AbstractBaseTest this.targetMimetype = targetMimetype; System.out.println("Test " + transform + " " + sourceExtension + " to " + targetExtension); - MockHttpServletRequestBuilder requestBuilder = includeContents == null + MockMultipartHttpServletRequestBuilder requestBuilder = includeContents == null ? mockMvcRequest(ENDPOINT_TRANSFORM, sourceFile, "targetExtension", this.targetExtension) : mockMvcRequest(ENDPOINT_TRANSFORM, sourceFile, @@ -187,7 +188,7 @@ public class TikaTest extends AbstractBaseTest @Override // Add extra required parameters to the request. - protected MockHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) + protected MockMultipartHttpServletRequestBuilder mockMvcRequest(String url, MockMultipartFile sourceFile, String... params) { return super.mockMvcRequest(url, sourceFile, params) .param("targetEncoding", targetEncoding) @@ -384,7 +385,7 @@ public class TikaTest extends AbstractBaseTest "\"{http://www.alfresco.org/model/content/1.0}description\":[\"desc1\",\"desc2\"]," + "\"{http://www.alfresco.org/model/content/1.0}created\":\"created1\"}"; - MockHttpServletRequestBuilder requestBuilder = super.mockMvcRequest(ENDPOINT_TRANSFORM, sourceFile, + MockMultipartHttpServletRequestBuilder requestBuilder = super.mockMvcRequest(ENDPOINT_TRANSFORM, sourceFile, "targetExtension", XLSX, "metadata", metadata, "targetMimetype", MIMETYPE_METADATA_EMBED, @@ -450,7 +451,7 @@ public class TikaTest extends AbstractBaseTest when(sharedFileStoreClient.retrieveFile(sourceFileRef)).thenReturn(response); when(sharedFileStoreClient.saveFile(any())) .thenReturn(new FileRefResponse(new FileRefEntity(targetFileRef))); - when(mockExecutionResult.getExitValue()).thenReturn(0); + lenient().when(mockExecutionResult.getExitValue()).thenReturn(0); // Update the Transformation Request with any specific params before sending it updateTransformRequestWithSpecificOptions(transformRequest); diff --git a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaTransformationIT.java b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaTransformationIT.java index e55eb947..6c0b34b3 100644 --- a/engines/tika/src/test/java/org/alfresco/transform/tika/TikaTransformationIT.java +++ b/engines/tika/src/test/java/org/alfresco/transform/tika/TikaTransformationIT.java @@ -2,7 +2,7 @@ * #%L * Alfresco Transform Core * %% - * Copyright (C) 2005 - 2025 Alfresco Software Limited + * Copyright (C) 2005 - 2026 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - @@ -171,7 +171,7 @@ public class TikaTransformationIT /** * Tests that while transforming a corrupted file to txt format, exception is thrown. - * + * * @param entry * values to execute same test with different parameters. */ @@ -198,7 +198,7 @@ public class TikaTransformationIT assertThat(expectedException).as(description) .hasMessageContaining(TransformerMessages.CORRUPTED_FILE_ERROR) .extracting(HttpClientErrorException::getStatusCode) - .isEqualTo(HttpStatus.UNPROCESSABLE_ENTITY); + .isEqualTo(HttpStatus.UNPROCESSABLE_CONTENT); } private static Stream> engineTransformationsCorruptedToText() diff --git a/model/pom.xml b/model/pom.xml index 26d50f93..1c98e3a5 100644 --- a/model/pom.xml +++ b/model/pom.xml @@ -123,7 +123,7 @@ - + org.codehaus.mojo diff --git a/pom.xml b/pom.xml index a5f793db..5af5bd1a 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.springframework.boot spring-boot-starter-parent - 3.5.7 + 4.0.2 @@ -35,6 +35,7 @@ false 3.18.0 + 2.0.12