summaryrefslogtreecommitdiff
path: root/src/integrationTest
diff options
context:
space:
mode:
Diffstat (limited to 'src/integrationTest')
-rw-r--r--src/integrationTest/kotlin/dev/dnpm/etl/processor/EtlProcessorApplicationTests.kt4
-rw-r--r--src/integrationTest/kotlin/dev/dnpm/etl/processor/config/AppConfigurationTest.kt44
-rw-r--r--src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt21
-rw-r--r--src/integrationTest/kotlin/dev/dnpm/etl/processor/pseudonym/GpasPseudonymGeneratorTest.kt18
-rw-r--r--src/integrationTest/kotlin/dev/dnpm/etl/processor/web/ConfigControllerTest.kt34
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)