diff options
| author | jlidke | 2025-07-22 20:02:15 +0200 |
|---|---|---|
| committer | GitHub | 2025-07-22 20:02:15 +0200 |
| commit | 199511e567884bb703277c276b782e54e528f744 (patch) | |
| tree | 42c19612ae161f98a252a13f4bd8234d7bae0527 /src/integrationTest/kotlin/dev | |
| parent | 1319be8b3f5fbb3c4800dc9b942fc1982ac928d3 (diff) | |
63 check consent status (#120)
Co-authored-by: Paul-Christian Volkmer <code@pcvolkmer.de>
Diffstat (limited to 'src/integrationTest/kotlin/dev')
5 files changed, 97 insertions, 24 deletions
diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt index 8984e60..7e48e62 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt @@ -50,7 +50,8 @@ import org.testcontainers.junit.jupiter.Testcontainers @TestPropertySource( properties = [ "app.rest.uri=http://example.com", - "app.pseudonymize.generator=buildin" + "app.pseudonymize.generator=buildin", + "app.consent.service=none" ] ) class EtlProcessorApplicationTests : AbstractTestcontainerTest() { @@ -67,6 +68,7 @@ class EtlProcessorApplicationTests : AbstractTestcontainerTest() { @TestPropertySource( properties = [ "app.pseudonymize.generator=buildin", + "app.consent.service=none", "app.transformations[0].path=diagnoses[*].icd10.version", "app.transformations[0].from=2013", "app.transformations[0].to=2014", 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 39a0997..9db509c 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/config/AppConfigurationTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/config/AppConfigurationTest.kt @@ -20,6 +20,8 @@ package dev.dnpm.etl.processor.config import com.fasterxml.jackson.databind.ObjectMapper +import dev.dnpm.etl.processor.consent.ConsentByMtbFile +import dev.dnpm.etl.processor.consent.GicsConsentService import dev.dnpm.etl.processor.input.KafkaInputListener import dev.dnpm.etl.processor.monitoring.RequestRepository import dev.dnpm.etl.processor.output.KafkaMtbFileSender @@ -276,4 +278,44 @@ class AppConfigurationTest { } -}
\ No newline at end of file + @Nested + @TestPropertySource( + properties = [ + "app.consent.service=GICS" + ] + ) + inner class AppConfigurationConsentGicsTest(private val context: ApplicationContext) { + + @Test + fun shouldUseConfiguredGenerator() { + assertThat(context.getBean(GicsConsentService::class.java)).isNotNull + } + + } + + @Nested + @TestPropertySource( + properties = [ + "app.consent.gics.enabled=true" + ] + ) + inner class AppConfigurationConsentGicsEnabledTest(private val context: ApplicationContext) { + + @Test + fun shouldUseConfiguredGenerator() { + assertThat(context.getBean(GicsConsentService::class.java)).isNotNull + } + + } + + @Nested + inner class AppConfigurationConsentBuildinTest(private val context: ApplicationContext) { + + @Test + fun shouldUseConfiguredGenerator() { + assertThat(context.getBean(ConsentByMtbFile::class.java)).isNotNull + } + + } + +} 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 f1b1476..8aa8ba0 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt @@ -23,6 +23,9 @@ import com.fasterxml.jackson.databind.ObjectMapper import de.ukw.ccc.bwhc.dto.* import dev.dnpm.etl.processor.anyValueClass import dev.dnpm.etl.processor.config.AppSecurityConfiguration +import dev.dnpm.etl.processor.consent.ConsentByMtbFile +import dev.dnpm.etl.processor.consent.TtpConsentStatus +import dev.dnpm.etl.processor.consent.IGetConsent import dev.dnpm.etl.processor.security.TokenRepository import dev.dnpm.etl.processor.security.UserRoleRepository import dev.dnpm.etl.processor.services.RequestProcessor @@ -31,10 +34,7 @@ import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith import org.mockito.junit.jupiter.MockitoExtension -import org.mockito.kotlin.any -import org.mockito.kotlin.never -import org.mockito.kotlin.times -import org.mockito.kotlin.verify +import org.mockito.kotlin.* import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest import org.springframework.http.MediaType @@ -54,7 +54,8 @@ import org.springframework.test.web.servlet.post @ContextConfiguration( classes = [ MtbFileRestController::class, - AppSecurityConfiguration::class + AppSecurityConfiguration::class, + ConsentByMtbFile::class, IGetConsent::class ] ) @MockitoBean(types = [TokenRepository::class, RequestProcessor::class]) @@ -63,7 +64,8 @@ import org.springframework.test.web.servlet.post "app.pseudonymize.generator=BUILDIN", "app.security.admin-user=admin", "app.security.admin-password={noop}very-secret", - "app.security.enable-tokens=true" + "app.security.enable-tokens=true", + "app.consent.gics.enabled=false" ] ) class MtbFileRestControllerTest { @@ -141,7 +143,7 @@ class MtbFileRestControllerTest { status { isAccepted() } } - verify(requestProcessor, times(1)).processDeletion(anyValueClass()) + verify(requestProcessor, times(1)).processDeletion(anyValueClass(), eq(TtpConsentStatus.UNKNOWN_CHECK_FILE)) } @Test @@ -152,7 +154,7 @@ class MtbFileRestControllerTest { status { isUnauthorized() } } - verify(requestProcessor, never()).processDeletion(anyValueClass()) + verify(requestProcessor, never()).processDeletion(anyValueClass(), any()) } @Nested @@ -163,7 +165,8 @@ class MtbFileRestControllerTest { "app.security.admin-user=admin", "app.security.admin-password={noop}very-secret", "app.security.enable-tokens=true", - "app.security.enable-oidc=true" + "app.security.enable-oidc=true", + "app.consent.gics.enabled=false" ] ) inner class WithOidcEnabled { diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/pseudonym/GpasPseudonymGeneratorTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/pseudonym/GpasPseudonymGeneratorTest.kt index 2e539e9..1275239 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/pseudonym/GpasPseudonymGeneratorTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/pseudonym/GpasPseudonymGeneratorTest.kt @@ -19,6 +19,7 @@ package dev.dnpm.etl.processor.pseudonym +import dev.dnpm.etl.processor.config.AppFhirConfig import dev.dnpm.etl.processor.config.GPasConfigProperties import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.BeforeEach @@ -42,6 +43,7 @@ class GpasPseudonymGeneratorTest { private lateinit var mockRestServiceServer: MockRestServiceServer private lateinit var generator: GpasPseudonymGenerator private lateinit var restTemplate: RestTemplate + private var appFhirConfig: AppFhirConfig = AppFhirConfig() @BeforeEach fun setup() { @@ -55,7 +57,8 @@ class GpasPseudonymGeneratorTest { this.restTemplate = RestTemplate() this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate) - this.generator = GpasPseudonymGenerator(gPasConfigProperties, retryTemplate, restTemplate) + this.generator = + GpasPseudonymGenerator(gPasConfigProperties, retryTemplate, restTemplate, appFhirConfig) } @Test @@ -64,7 +67,13 @@ class GpasPseudonymGeneratorTest { method(HttpMethod.POST) requestTo("https://localhost/ttp-fhir/fhir/gpas/\$pseudonymizeAllowCreate") }.andRespond { - withStatus(HttpStatus.OK).body(getDummyResponseBody("1234", "test", "test1234ABCDEF567890")) + withStatus(HttpStatus.OK).body( + getDummyResponseBody( + "1234", + "test", + "test1234ABCDEF567890" + ) + ) .createResponse(it) } @@ -90,7 +99,10 @@ class GpasPseudonymGeneratorTest { requestTo("https://localhost/ttp-fhir/fhir/gpas/\$pseudonymizeAllowCreate") }.andRespond { withStatus(HttpStatus.FOUND) - .header(HttpHeaders.LOCATION, "https://localhost/ttp-fhir/fhir/gpas/\$pseudonymizeAllowCreate") + .header( + HttpHeaders.LOCATION, + "https://localhost/ttp-fhir/fhir/gpas/\$pseudonymizeAllowCreate" + ) .createResponse(it) } 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 9f3ae62..8e5d38e 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/ConfigControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/ConfigControllerTest.kt @@ -22,6 +22,7 @@ package dev.dnpm.etl.processor.web import dev.dnpm.etl.processor.config.AppConfiguration import dev.dnpm.etl.processor.config.AppSecurityConfiguration import dev.dnpm.etl.processor.monitoring.ConnectionCheckResult +import dev.dnpm.etl.processor.monitoring.GIcsConnectionCheckService import dev.dnpm.etl.processor.monitoring.GPasConnectionCheckService import dev.dnpm.etl.processor.monitoring.RestConnectionCheckService import dev.dnpm.etl.processor.output.MtbFileSender @@ -89,7 +90,8 @@ abstract class MockSink : Sinks.Many<Boolean> RequestProcessor::class, TransformationService::class, GPasConnectionCheckService::class, - RestConnectionCheckService::class + RestConnectionCheckService::class, + GIcsConnectionCheckService::class ] ) class ConfigControllerTest { @@ -182,7 +184,13 @@ class ConfigControllerTest { @Test fun testShouldNotSaveTokenWithExstingName() { - whenever(tokenService.addToken(anyString())).thenReturn(Result.failure(RuntimeException("Testfailure"))) + whenever(tokenService.addToken(anyString())).thenReturn( + Result.failure( + RuntimeException( + "Testfailure" + ) + ) + ) mockMvc.post("/configs/tokens") { with(user("admin").roles("ADMIN")) @@ -303,7 +311,10 @@ class ConfigControllerTest { val idCaptor = argumentCaptor<Long>() val roleCaptor = argumentCaptor<Role>() - verify(userRoleService, times(1)).updateUserRole(idCaptor.capture(), roleCaptor.capture()) + verify(userRoleService, times(1)).updateUserRole( + idCaptor.capture(), + roleCaptor.capture() + ) assertThat(idCaptor.firstValue).isEqualTo(42) assertThat(roleCaptor.firstValue).isEqualTo(Role.ADMIN) @@ -341,23 +352,26 @@ class ConfigControllerTest { @BeforeEach fun setup( - applicationContext: WebApplicationContext, + applicationContext: WebApplicationContext ) { this.webClient = MockMvcWebTestClient .bindToApplicationContext(applicationContext).build() } @Test - fun testShouldRequestSSE() { - val expectedEvent = ConnectionCheckResult.GPasConnectionCheckResult(true, Instant.now(), Instant.now()) + fun testShouldRequestGPasSSE() { + val expectedEvent = + ConnectionCheckResult.GPasConnectionCheckResult(true, Instant.now(), Instant.now()) connectionCheckUpdateProducer.tryEmitNext(expectedEvent) connectionCheckUpdateProducer.emitComplete { _, _ -> true } - val result = webClient.get().uri("http://localhost/configs/events").accept(TEXT_EVENT_STREAM).exchange() - .expectStatus().isOk() - .expectHeader().contentType(TEXT_EVENT_STREAM) - .returnResult(ConnectionCheckResult.GPasConnectionCheckResult::class.java) + val result = + webClient.get().uri("http://localhost/configs/events").accept(TEXT_EVENT_STREAM) + .exchange() + .expectStatus().isOk() + .expectHeader().contentType(TEXT_EVENT_STREAM) + .returnResult(ConnectionCheckResult.GPasConnectionCheckResult::class.java) StepVerifier.create(result.responseBody) .expectNext(expectedEvent) |
