From 159ad72d0c16259e36878baa8ca64b4c4b0d6bf9 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Thu, 5 Mar 2026 04:15:40 +0100 Subject: deps!: migrate to Spring Boot 4 (#250) --- .../etl/processor/EtlProcessorApplicationTests.kt | 19 ++++++++++++++----- .../dnpm/etl/processor/config/AppConfigurationTest.kt | 2 +- .../etl/processor/input/MtbFileRestControllerTest.kt | 2 +- .../etl/processor/monitoring/RequestRepositoryTest.kt | 6 +++--- .../dnpm/etl/processor/web/ConfigControllerTest.kt | 16 +++++++++++----- .../dev/dnpm/etl/processor/web/HomeControllerTest.kt | 11 ++++++++--- .../dev/dnpm/etl/processor/web/LoginControllerTest.kt | 2 +- .../etl/processor/web/StatisticsControllerTest.kt | 2 +- .../etl/processor/web/StatisticsRestControllerTest.kt | 2 +- 9 files changed, 41 insertions(+), 21 deletions(-) (limited to 'src/integrationTest/kotlin/dev/dnpm') diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt index 7826702..cc1ff2b 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt @@ -32,10 +32,11 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith import org.mockito.kotlin.* import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc import org.springframework.boot.test.context.SpringBootTest import org.springframework.context.ApplicationContext import org.springframework.http.MediaType +import org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user import org.springframework.test.context.TestPropertySource import org.springframework.test.context.bean.override.mockito.MockitoBean import org.springframework.test.context.junit.jupiter.SpringExtension @@ -69,6 +70,8 @@ class EtlProcessorApplicationTests : AbstractTestcontainerTest() { @TestPropertySource( properties = [ + "app.security.admin-user=admin", + "app.security.admin-password={noop}very-secret", "app.pseudonymize.generator=buildin", "app.consent.service=none", "app.transformations[0].path=diagnoses[*].code.version", @@ -80,12 +83,17 @@ class EtlProcessorApplicationTests : AbstractTestcontainerTest() { @MockitoBean private lateinit var mtbFileSender: MtbFileSender - @Autowired private lateinit var mockMvc: MockMvc - - @Autowired private lateinit var objectMapper: ObjectMapper + private lateinit var mockMvc: MockMvc + private lateinit var objectMapper: ObjectMapper @BeforeEach - fun setup(@Autowired requestRepository: RequestRepository) { + fun setup( + @Autowired mockMvc: MockMvc, + @Autowired objectMapper: ObjectMapper, + @Autowired requestRepository: RequestRepository + ) { + this.mockMvc = mockMvc + this.objectMapper = objectMapper requestRepository.deleteAll() } @@ -129,6 +137,7 @@ class EtlProcessorApplicationTests : AbstractTestcontainerTest() { .post("/mtbfile") { content = objectMapper.writeValueAsString(mtbFile) contentType = MediaType.APPLICATION_JSON + with(user("admin").roles("ADMIN")) } .andExpect { status { isAccepted() } } diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/config/AppConfigurationTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/config/AppConfigurationTest.kt index 2d1808a..a932ab7 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/config/AppConfigurationTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/config/AppConfigurationTest.kt @@ -39,7 +39,7 @@ import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows import org.springframework.beans.factory.NoSuchBeanDefinitionException -import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration +import org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration import org.springframework.boot.test.context.SpringBootTest import org.springframework.context.ApplicationContext import org.springframework.retry.support.RetryTemplate diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt index 35551a9..afaca73 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt @@ -39,7 +39,7 @@ import org.junit.jupiter.params.provider.ValueSource import org.mockito.junit.jupiter.MockitoExtension import org.mockito.kotlin.* import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest +import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest import org.springframework.http.MediaType import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository import org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.anonymous diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/monitoring/RequestRepositoryTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/monitoring/RequestRepositoryTest.kt index 1f561da..98fee3f 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/monitoring/RequestRepositoryTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/monitoring/RequestRepositoryTest.kt @@ -21,18 +21,18 @@ package dev.dnpm.etl.processor.monitoring import dev.dnpm.etl.processor.* import dev.dnpm.etl.processor.output.MtbFileSender -import java.time.Instant import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.autoconfigure.data.jdbc.DataJdbcTest -import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase +import org.springframework.boot.data.jdbc.test.autoconfigure.DataJdbcTest +import org.springframework.boot.jdbc.test.autoconfigure.AutoConfigureTestDatabase import org.springframework.test.context.TestPropertySource import org.springframework.test.context.bean.override.mockito.MockitoBean import org.springframework.test.context.junit.jupiter.SpringExtension import org.springframework.transaction.annotation.Transactional import org.testcontainers.junit.jupiter.Testcontainers +import java.time.Instant @Testcontainers @ExtendWith(SpringExtension::class) diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/ConfigControllerTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/ConfigControllerTest.kt index 89e1d6c..0e24870 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/ConfigControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/ConfigControllerTest.kt @@ -32,7 +32,6 @@ import dev.dnpm.etl.processor.security.TokenService import dev.dnpm.etl.processor.security.UserRoleService import dev.dnpm.etl.processor.services.RequestProcessor import dev.dnpm.etl.processor.services.TransformationService -import java.time.Instant import org.assertj.core.api.Assertions.assertThat import org.htmlunit.WebClient import org.htmlunit.html.HtmlPage @@ -47,7 +46,7 @@ import org.mockito.kotlin.times import org.mockito.kotlin.verify import org.mockito.kotlin.whenever import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest +import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest import org.springframework.http.HttpHeaders import org.springframework.http.MediaType import org.springframework.http.MediaType.TEXT_EVENT_STREAM @@ -65,6 +64,7 @@ import org.springframework.test.web.servlet.htmlunit.MockMvcWebClientBuilder import org.springframework.web.context.WebApplicationContext import reactor.core.publisher.Sinks import reactor.test.StepVerifier +import java.time.Instant abstract class MockSink : Sinks.Many @@ -73,7 +73,11 @@ abstract class MockSink : Sinks.Many @ContextConfiguration( classes = [ConfigController::class, AppConfiguration::class, AppSecurityConfiguration::class] ) -@TestPropertySource(properties = ["app.pseudonymize.generator=BUILDIN"]) +@TestPropertySource(properties = [ + "app.security.admin-user=admin", + "app.security.admin-password={noop}very-secret", + "app.pseudonymize.generator=BUILDIN" +]) @MockitoBean(name = "configsUpdateProducer", types = [MockSink::class]) @MockitoBean( types = @@ -100,13 +104,15 @@ class ConfigControllerTest { @Autowired mockMvc: MockMvc, @Autowired requestProcessor: RequestProcessor, @Autowired connectionCheckUpdateProducer: Sinks.Many, + @Autowired webApplicationContext: WebApplicationContext, ) { this.mockMvc = mockMvc - this.webClient = MockMvcWebClientBuilder.mockMvcSetup(mockMvc).build() + this.webClient = MockMvcWebClientBuilder.webAppContextSetup(webApplicationContext).build() this.requestProcessor = requestProcessor this.connectionCheckUpdateProducer = connectionCheckUpdateProducer this.webClient.options.isJavaScriptEnabled = false + this.webClient.options.isCssEnabled = false this.webClient.options.isThrowExceptionOnScriptError = false } @@ -132,7 +138,7 @@ class ConfigControllerTest { } .andExpect { status { isFound() } - header { stringValues(HttpHeaders.LOCATION, "http://localhost/login") } + header { stringValues(HttpHeaders.LOCATION, "/login") } } } diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/HomeControllerTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/HomeControllerTest.kt index b4be1ff..9e85d08 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/HomeControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/HomeControllerTest.kt @@ -43,7 +43,7 @@ import org.mockito.junit.jupiter.MockitoExtension import org.mockito.kotlin.any import org.mockito.kotlin.whenever import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest +import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest import org.springframework.data.domain.Page import org.springframework.data.domain.PageImpl import org.springframework.data.domain.Pageable @@ -55,6 +55,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension import org.springframework.test.web.servlet.MockMvc import org.springframework.test.web.servlet.get import org.springframework.test.web.servlet.htmlunit.MockMvcWebClientBuilder +import org.springframework.web.context.WebApplicationContext @WebMvcTest(controllers = [HomeController::class]) @ExtendWith(value = [MockitoExtension::class, SpringExtension::class]) @@ -76,9 +77,13 @@ class HomeControllerTest { private lateinit var webClient: WebClient @BeforeEach - fun setup(@Autowired mockMvc: MockMvc, @Autowired requestService: RequestService) { + fun setup( + @Autowired mockMvc: MockMvc, + @Autowired requestService: RequestService, + @Autowired webApplicationContext: WebApplicationContext, + ) { this.mockMvc = mockMvc - this.webClient = MockMvcWebClientBuilder.mockMvcSetup(mockMvc).build() + this.webClient = MockMvcWebClientBuilder.webAppContextSetup(webApplicationContext).build() this.webClient.options.isJavaScriptEnabled = false whenever(requestService.findAll(any())).thenReturn(Page.empty()) diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/LoginControllerTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/LoginControllerTest.kt index bd8014a..efe36ae 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/LoginControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/LoginControllerTest.kt @@ -30,7 +30,7 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith import org.mockito.junit.jupiter.MockitoExtension import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest +import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.TestPropertySource import org.springframework.test.context.bean.override.mockito.MockitoBean diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsControllerTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsControllerTest.kt index f91e3cf..cb19e1a 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsControllerTest.kt @@ -27,7 +27,7 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith import org.mockito.junit.jupiter.MockitoExtension import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest +import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.TestPropertySource import org.springframework.test.context.junit.jupiter.SpringExtension diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsRestControllerTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsRestControllerTest.kt index aabd634..926f315 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsRestControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsRestControllerTest.kt @@ -41,7 +41,7 @@ import org.mockito.junit.jupiter.MockitoExtension import org.mockito.kotlin.doAnswer import org.mockito.kotlin.whenever import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest +import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest import org.springframework.http.MediaType.TEXT_EVENT_STREAM import org.springframework.test.context.ContextConfiguration import org.springframework.test.context.TestPropertySource -- cgit v1.2.3