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 ++++++++++++----- .../etl/processor/config/AppConfigurationTest.kt | 2 +- .../processor/input/MtbFileRestControllerTest.kt | 2 +- .../processor/monitoring/RequestRepositoryTest.kt | 6 +++--- .../dnpm/etl/processor/web/ConfigControllerTest.kt | 16 ++++++++++----- .../dnpm/etl/processor/web/HomeControllerTest.kt | 11 +++++++--- .../dnpm/etl/processor/web/LoginControllerTest.kt | 2 +- .../etl/processor/web/StatisticsControllerTest.kt | 2 +- .../processor/web/StatisticsRestControllerTest.kt | 2 +- .../dnpm/etl/processor/EtlProcessorApplication.kt | 2 +- .../dnpm/etl/processor/config/AppConfiguration.kt | 2 +- .../etl/processor/config/AppKafkaConfiguration.kt | 7 +++++-- .../processor/config/AppSecurityConfiguration.kt | 12 +++++------ .../dev/dnpm/etl/processor/web/LoginController.kt | 2 +- .../processor/consent/GicsConsentServiceTest.java | 2 +- .../consent/GicsGetBroadConsentServiceTest.java | 2 +- src/test/kotlin/dev/dnpm/etl/processor/helpers.kt | 2 +- .../etl/processor/output/KafkaMtbFileSenderTest.kt | 24 ++++++++++++++++------ 18 files changed, 76 insertions(+), 41 deletions(-) (limited to 'src') 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 diff --git a/src/main/kotlin/dev/dnpm/etl/processor/EtlProcessorApplication.kt b/src/main/kotlin/dev/dnpm/etl/processor/EtlProcessorApplication.kt index 4b9b307..75147ea 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/EtlProcessorApplication.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/EtlProcessorApplication.kt @@ -20,8 +20,8 @@ package dev.dnpm.etl.processor import org.springframework.boot.autoconfigure.SpringBootApplication -import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration import org.springframework.boot.runApplication +import org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration @SpringBootApplication(exclude = [SecurityAutoConfiguration::class]) class EtlProcessorApplication diff --git a/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfiguration.kt b/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfiguration.kt index 40c290a..cb04db3 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfiguration.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/config/AppConfiguration.kt @@ -40,7 +40,7 @@ import org.springframework.boot.autoconfigure.condition.AnyNestedCondition import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty import org.springframework.boot.context.properties.EnableConfigurationProperties -import org.springframework.boot.web.client.RestTemplateBuilder +import org.springframework.boot.restclient.RestTemplateBuilder import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Conditional import org.springframework.context.annotation.Configuration diff --git a/src/main/kotlin/dev/dnpm/etl/processor/config/AppKafkaConfiguration.kt b/src/main/kotlin/dev/dnpm/etl/processor/config/AppKafkaConfiguration.kt index 2f89dea..24fc58c 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/config/AppKafkaConfiguration.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/config/AppKafkaConfiguration.kt @@ -70,7 +70,7 @@ class AppKafkaConfiguration { kafkaResponseProcessor: KafkaResponseProcessor, ): KafkaMessageListenerContainer { val containerProperties = ContainerProperties(kafkaProperties.outputResponseTopic) - containerProperties.messageListener = kafkaResponseProcessor + containerProperties.setMessageListener(kafkaResponseProcessor) return KafkaMessageListenerContainer(consumerFactory, containerProperties) } @@ -87,8 +87,11 @@ class AppKafkaConfiguration { kafkaProperties: KafkaProperties, kafkaInputListener: KafkaInputListener, ): KafkaMessageListenerContainer { + if (null == kafkaProperties.inputTopic) { + throw IllegalArgumentException("Kafka input topic cannot be null") + } val containerProperties = ContainerProperties(kafkaProperties.inputTopic) - containerProperties.messageListener = kafkaInputListener + containerProperties.setMessageListener(kafkaInputListener) return KafkaMessageListenerContainer(consumerFactory, containerProperties) } diff --git a/src/main/kotlin/dev/dnpm/etl/processor/config/AppSecurityConfiguration.kt b/src/main/kotlin/dev/dnpm/etl/processor/config/AppSecurityConfiguration.kt index e0f24cf..9b48d22 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/config/AppSecurityConfiguration.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/config/AppSecurityConfiguration.kt @@ -95,12 +95,12 @@ class AppSecurityConfiguration(private val securityConfigProperties: SecurityCon authorize("/mtb/**", hasAnyRole("MTBFILE", "ADMIN", "USER")) authorize("/report/**", hasAnyRole("ADMIN", "USER")) authorize("/submission/**", hasAnyRole("ADMIN", "USER")) - authorize("*.css", permitAll) - authorize("*.ico", permitAll) - authorize("*.jpeg", permitAll) - authorize("*.js", permitAll) - authorize("*.svg", permitAll) - authorize("*.css", permitAll) + authorize("/**/*.css", permitAll) + authorize("/**/*.ico", permitAll) + authorize("/**/*.jpeg", permitAll) + authorize("/**/*.js", permitAll) + authorize("/**/*.svg", permitAll) + authorize("/**/*.css", permitAll) authorize("/login/**", permitAll) authorize(anyRequest, permitAll) } diff --git a/src/main/kotlin/dev/dnpm/etl/processor/web/LoginController.kt b/src/main/kotlin/dev/dnpm/etl/processor/web/LoginController.kt index 7821bf9..9b49f5a 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/web/LoginController.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/web/LoginController.kt @@ -20,7 +20,7 @@ package dev.dnpm.etl.processor.web import dev.dnpm.etl.processor.config.SecurityConfigProperties -import org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientProperties +import org.springframework.boot.security.oauth2.client.autoconfigure.OAuth2ClientProperties import org.springframework.stereotype.Controller import org.springframework.ui.Model import org.springframework.web.bind.annotation.GetMapping diff --git a/src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java b/src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java index e450e4d..22f676b 100644 --- a/src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java +++ b/src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java @@ -26,7 +26,7 @@ import org.hl7.fhir.r4.model.Parameters.ParametersParameterComponent; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.client.RestClientTest; +import org.springframework.boot.restclient.test.autoconfigure.RestClientTest; import org.springframework.http.MediaType; import org.springframework.retry.support.RetryTemplate; import org.springframework.test.context.ContextConfiguration; diff --git a/src/test/java/dev/dnpm/etl/processor/consent/GicsGetBroadConsentServiceTest.java b/src/test/java/dev/dnpm/etl/processor/consent/GicsGetBroadConsentServiceTest.java index cced1cf..46da158 100644 --- a/src/test/java/dev/dnpm/etl/processor/consent/GicsGetBroadConsentServiceTest.java +++ b/src/test/java/dev/dnpm/etl/processor/consent/GicsGetBroadConsentServiceTest.java @@ -21,7 +21,7 @@ import org.hl7.fhir.r4.model.OperationOutcome.OperationOutcomeIssueComponent; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.client.RestClientTest; +import org.springframework.boot.restclient.test.autoconfigure.RestClientTest; import org.springframework.http.MediaType; import org.springframework.retry.support.RetryTemplate; import org.springframework.test.context.ContextConfiguration; diff --git a/src/test/kotlin/dev/dnpm/etl/processor/helpers.kt b/src/test/kotlin/dev/dnpm/etl/processor/helpers.kt index 495bf38..b7bf436 100644 --- a/src/test/kotlin/dev/dnpm/etl/processor/helpers.kt +++ b/src/test/kotlin/dev/dnpm/etl/processor/helpers.kt @@ -25,6 +25,6 @@ import org.junit.jupiter.params.provider.Arguments import org.junit.jupiter.params.provider.ArgumentsProvider open class ArgProvider(vararg val data: Arguments) : ArgumentsProvider { - override fun provideArguments(context: ExtensionContext?): Stream = + override fun provideArguments(context: ExtensionContext): Stream = Stream.of(*data) } diff --git a/src/test/kotlin/dev/dnpm/etl/processor/output/KafkaMtbFileSenderTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/output/KafkaMtbFileSenderTest.kt index 8adc21c..ac14366 100644 --- a/src/test/kotlin/dev/dnpm/etl/processor/output/KafkaMtbFileSenderTest.kt +++ b/src/test/kotlin/dev/dnpm/etl/processor/output/KafkaMtbFileSenderTest.kt @@ -31,6 +31,8 @@ import java.util.* import java.util.concurrent.CompletableFuture.completedFuture import java.util.concurrent.ExecutionException import org.apache.kafka.clients.producer.ProducerRecord +import org.apache.kafka.clients.producer.RecordMetadata +import org.apache.kafka.common.TopicPartition import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Nested @@ -77,7 +79,7 @@ class KafkaMtbFileSenderTest { if (null != testData.exception) { throw testData.exception } - completedFuture(SendResult(null, null)) + completedFuture(SendResult(testProducerRecord(), testProducerRecordWithMetadata())) } .whenever(kafkaTemplate) .send(any>()) @@ -98,7 +100,7 @@ class KafkaMtbFileSenderTest { if (null != testData.exception) { throw testData.exception } - completedFuture(SendResult(null, null)) + completedFuture(SendResult(testProducerRecord(), testProducerRecordWithMetadata())) } .whenever(kafkaTemplate) .send(any>()) @@ -145,7 +147,7 @@ class KafkaMtbFileSenderTest { if (null != testData.exception) { throw testData.exception } - completedFuture(SendResult(null, null)) + completedFuture(SendResult(testProducerRecord(), testProducerRecordWithMetadata())) } .whenever(kafkaTemplate) .send(any>()) @@ -156,7 +158,7 @@ class KafkaMtbFileSenderTest { @Test fun shouldSendMtbFileRequestWithCorrectKeyAndHeaderAndBody() { - doAnswer { completedFuture(SendResult(null, null)) } + doAnswer { completedFuture(SendResult(testProducerRecord(), testProducerRecordWithMetadata())) } .whenever(kafkaTemplate) .send(any>()) @@ -182,7 +184,7 @@ class KafkaMtbFileSenderTest { @Test fun shouldSendDeleteRequestWithCorrectKeyAndHeaderAndBody() { - doAnswer { completedFuture(SendResult(null, null)) } + doAnswer { completedFuture(SendResult(testProducerRecord(), testProducerRecordWithMetadata())) } .whenever(kafkaTemplate) .send(any>()) @@ -216,7 +218,7 @@ class KafkaMtbFileSenderTest { if (null != testData.exception) { throw testData.exception } - completedFuture(SendResult(null, null)) + completedFuture(SendResult(testProducerRecord(), testProducerRecordWithMetadata())) } .whenever(kafkaTemplate) .send(any>()) @@ -235,6 +237,16 @@ class KafkaMtbFileSenderTest { } } + fun testProducerRecord(): ProducerRecord { + return ProducerRecord("testtopic", "testkey", "testvalue") + } + + fun testProducerRecordWithMetadata(): RecordMetadata { + return RecordMetadata( + TopicPartition("testtopic", 0), 0, 0, Instant.now().epochSecond, 0, 0 + ) + } + companion object { val TEST_REQUEST_ID = RequestId("TestId") val TEST_PATIENT_PSEUDONYM = PatientPseudonym("PID") -- cgit v1.2.3