summaryrefslogtreecommitdiff
path: root/src/test/kotlin/dev
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/kotlin/dev')
-rw-r--r--src/test/kotlin/dev/dnpm/etl/processor/consent/ConsentProcessorTest.kt58
-rw-r--r--src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt162
-rw-r--r--src/test/kotlin/dev/dnpm/etl/processor/services/ConsentProcessorTest.kt2
3 files changed, 205 insertions, 17 deletions
diff --git a/src/test/kotlin/dev/dnpm/etl/processor/consent/ConsentProcessorTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/consent/ConsentProcessorTest.kt
new file mode 100644
index 0000000..5a86a29
--- /dev/null
+++ b/src/test/kotlin/dev/dnpm/etl/processor/consent/ConsentProcessorTest.kt
@@ -0,0 +1,58 @@
+package dev.dnpm.etl.processor.consent
+
+import ca.uhn.fhir.context.FhirContext
+import com.fasterxml.jackson.databind.ObjectMapper
+import dev.dnpm.etl.processor.config.AppConfigProperties
+import dev.dnpm.etl.processor.config.GIcsConfigProperties
+import dev.dnpm.etl.processor.services.ConsentProcessor
+import org.assertj.core.api.Assertions.assertThat
+import org.hl7.fhir.r4.model.Bundle
+import org.hl7.fhir.r4.model.Consent
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.extension.ExtendWith
+import org.junit.jupiter.params.ParameterizedTest
+import org.junit.jupiter.params.provider.CsvSource
+import org.mockito.Mock
+import org.mockito.junit.jupiter.MockitoExtension
+import java.util.*
+
+@ExtendWith(MockitoExtension::class)
+class ConsentProcessorTest {
+
+ lateinit var consentProcessor: ConsentProcessor
+
+ val objectMapper = ObjectMapper()
+ val fhirContext = FhirContext.forR4()
+
+ @BeforeEach
+ fun setup(
+ @Mock consentService: IConsentService
+ ) {
+ val appConfigProperties = AppConfigProperties()
+ val gIcsConfigProperties = GIcsConfigProperties("http://localhost")
+
+ this.consentProcessor = ConsentProcessor(
+ appConfigProperties,
+ gIcsConfigProperties,
+ objectMapper,
+ fhirContext,
+ consentService
+ )
+ }
+
+ @ParameterizedTest
+ @CsvSource(value = [
+ "permittedConsentBundle.json,permit",
+ "deniedConsentBundle.json,deny"
+ ])
+ fun checkGetProvisionTypeByPolicyCode(filename: String, expected: String) {
+ val bundle = fhirContext.newJsonParser().parseResource(
+ this.javaClass.classLoader.getResourceAsStream(filename)
+ )
+ assertThat(bundle).isInstanceOf(Bundle::class.java)
+
+ val actual = consentProcessor.getProvisionTypeByPolicyCode(bundle as Bundle, Date(), ConsentDomain.BROAD_CONSENT)
+
+ assertThat(actual).isEqualTo(Consent.ConsentProvisionType.valueOf(expected.uppercase()))
+ }
+} \ No newline at end of file
diff --git a/src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt
index 7205714..a6d855c 100644
--- a/src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt
+++ b/src/test/kotlin/dev/dnpm/etl/processor/monitoring/ConnectionCheckServiceTest.kt
@@ -3,20 +3,22 @@ package dev.dnpm.etl.processor.monitoring
import dev.dnpm.etl.processor.config.GIcsConfigProperties
import dev.dnpm.etl.processor.config.GPasConfigProperties
import dev.dnpm.etl.processor.config.RestTargetProperties
+import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
-import org.mockito.Mock
import org.mockito.junit.jupiter.MockitoExtension
import org.springframework.http.HttpMethod
import org.springframework.http.MediaType
import org.springframework.test.web.client.MockRestServiceServer
import org.springframework.test.web.client.match.MockRestRequestMatchers.method
import org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo
+import org.springframework.test.web.client.response.MockRestResponseCreators.withServerError
import org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess
import org.springframework.web.client.RestTemplate
import reactor.core.publisher.Sinks
+import reactor.test.StepVerifier
@ExtendWith(MockitoExtension::class)
class ConnectionCheckServiceTest {
@@ -26,19 +28,18 @@ class ConnectionCheckServiceTest {
lateinit var mockRestServiceServer: MockRestServiceServer
lateinit var service: RestConnectionCheckService
+ lateinit var sink: Sinks.Many<ConnectionCheckResult>
@BeforeEach
- fun setUp(
- @Mock sink: Sinks.Many<ConnectionCheckResult>
- ) {
+ fun setUp() {
val restTemplate = RestTemplate()
- this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
-
val restTargetProperties = RestTargetProperties(
"http://localhost/api",
"user",
"password",
)
+ this.sink = Sinks.many().multicast().onBackpressureBuffer()
+ this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
this.service = RestConnectionCheckService(restTemplate, restTargetProperties, sink)
}
@@ -53,9 +54,51 @@ class ConnectionCheckServiceTest {
)
this.service.check()
-
this.mockRestServiceServer.verify()
+ }
+
+ @Test
+ fun shouldEmitAvailable() {
+ this.mockRestServiceServer
+ .expect(method(HttpMethod.GET))
+ .andRespond(
+ withSuccess("OK", MediaType.APPLICATION_JSON),
+ )
+
+ val verifier = StepVerifier.create(sink.asFlux())
+ .assertNext {
+ assertThat(it.available).isTrue()
+ }
+ .expectComplete()
+ .verifyLater()
+
+ this.service.check()
+
+ this.sink.emitComplete(Sinks.EmitFailureHandler.FAIL_FAST)
+
+ verifier.verify()
+ }
+
+ @Test
+ fun shouldEmitUnavailable() {
+ this.mockRestServiceServer
+ .expect(method(HttpMethod.GET))
+ .andRespond(
+ withServerError()
+ )
+
+ val verifier = StepVerifier.create(sink.asFlux())
+ .assertNext {
+ assertThat(it.available).isFalse()
+ }
+ .expectComplete()
+ .verifyLater()
+
+ this.service.check()
+ this.sink.emitComplete(Sinks.EmitFailureHandler.FAIL_FAST)
+
+ verifier.verify()
}
}
@@ -64,22 +107,22 @@ class ConnectionCheckServiceTest {
lateinit var mockRestServiceServer: MockRestServiceServer
lateinit var service: GPasConnectionCheckService
+ lateinit var sink: Sinks.Many<ConnectionCheckResult>
@BeforeEach
- fun setUp(
- @Mock sink: Sinks.Many<ConnectionCheckResult>
- ) {
+ fun setUp() {
val restTemplate = RestTemplate()
- this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
-
val gpasTargetProperties = GPasConfigProperties(
"http://localhost/gpas",
null,
+ null,
"patientDomain",
"genomDeTanDomain",
"username",
"password",
)
+ this.sink = Sinks.many().multicast().onBackpressureBuffer()
+ this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
this.service = GPasConnectionCheckService(restTemplate, gpasTargetProperties, sink)
}
@@ -96,7 +139,50 @@ class ConnectionCheckServiceTest {
this.service.check()
this.mockRestServiceServer.verify()
+ }
+
+ @Test
+ fun shouldEmitAvailable() {
+ this.mockRestServiceServer
+ .expect(method(HttpMethod.GET))
+ .andRespond(
+ withSuccess("OK", MediaType.APPLICATION_JSON),
+ )
+ val verifier = StepVerifier.create(sink.asFlux())
+ .assertNext {
+ assertThat(it.available).isTrue()
+ }
+ .expectComplete()
+ .verifyLater()
+
+ this.service.check()
+
+ this.sink.emitComplete(Sinks.EmitFailureHandler.FAIL_FAST)
+
+ verifier.verify()
+ }
+
+ @Test
+ fun shouldEmitUnavailable() {
+ this.mockRestServiceServer
+ .expect(method(HttpMethod.GET))
+ .andRespond(
+ withServerError()
+ )
+
+ val verifier = StepVerifier.create(sink.asFlux())
+ .assertNext {
+ assertThat(it.available).isFalse()
+ }
+ .expectComplete()
+ .verifyLater()
+
+ this.service.check()
+
+ this.sink.emitComplete(Sinks.EmitFailureHandler.FAIL_FAST)
+
+ verifier.verify()
}
}
@@ -105,19 +191,19 @@ class ConnectionCheckServiceTest {
lateinit var mockRestServiceServer: MockRestServiceServer
lateinit var service: GIcsConnectionCheckService
+ lateinit var sink: Sinks.Many<ConnectionCheckResult>
@BeforeEach
- fun setUp(
- @Mock sink: Sinks.Many<ConnectionCheckResult>
- ) {
+ fun setUp() {
val restTemplate = RestTemplate()
- this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
val gicsTargetProperties = GIcsConfigProperties(
"http://localhost/gics",
"username",
"password",
)
+ this.sink = Sinks.many().multicast().onBackpressureBuffer()
+ this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate)
this.service = GIcsConnectionCheckService(restTemplate, gicsTargetProperties, sink)
}
@@ -136,6 +222,50 @@ class ConnectionCheckServiceTest {
this.mockRestServiceServer.verify()
}
+
+ @Test
+ fun shouldEmitAvailable() {
+ this.mockRestServiceServer
+ .expect(method(HttpMethod.GET))
+ .andRespond(
+ withSuccess("OK", MediaType.APPLICATION_JSON),
+ )
+
+ val verifier = StepVerifier.create(sink.asFlux())
+ .assertNext {
+ assertThat(it.available).isTrue()
+ }
+ .expectComplete()
+ .verifyLater()
+
+ this.service.check()
+
+ this.sink.emitComplete(Sinks.EmitFailureHandler.FAIL_FAST)
+
+ verifier.verify()
+ }
+
+ @Test
+ fun shouldEmitUnavailable() {
+ this.mockRestServiceServer
+ .expect(method(HttpMethod.GET))
+ .andRespond(
+ withServerError()
+ )
+
+ val verifier = StepVerifier.create(sink.asFlux())
+ .assertNext {
+ assertThat(it.available).isFalse()
+ }
+ .expectComplete()
+ .verifyLater()
+
+ this.service.check()
+
+ this.sink.emitComplete(Sinks.EmitFailureHandler.FAIL_FAST)
+
+ verifier.verify()
+ }
}
} \ No newline at end of file
diff --git a/src/test/kotlin/dev/dnpm/etl/processor/services/ConsentProcessorTest.kt b/src/test/kotlin/dev/dnpm/etl/processor/services/ConsentProcessorTest.kt
index 4d414c5..bbc8b1a 100644
--- a/src/test/kotlin/dev/dnpm/etl/processor/services/ConsentProcessorTest.kt
+++ b/src/test/kotlin/dev/dnpm/etl/processor/services/ConsentProcessorTest.kt
@@ -80,7 +80,7 @@ class ConsentProcessorTest {
val checkResult = consentProcessor.consentGatedCheckAndTryEmbedding(inputMtb)
assertThat(checkResult).isTrue
- assertThat(inputMtb.metadata.researchConsents).hasSize(26)
+ assertThat(inputMtb.metadata.researchConsents).isNotEmpty
}
companion object {