diff options
Diffstat (limited to 'src/test/kotlin/dev')
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 { |
