From 7be91444a867774362eb5b57bdd246fb50189e7d Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Tue, 6 Jan 2026 16:34:12 +0100 Subject: feat: block further initial submissions (#232) --- .../processor/monitoring/RequestRepositoryTest.kt | 1 + .../processor/output/RestDipMtbFileSenderTest.kt | 109 ++++++++++----------- .../services/RequestServiceIntegrationTest.kt | 4 + .../dnpm/etl/processor/web/HomeControllerTest.kt | 9 ++ .../processor/web/StatisticsRestControllerTest.kt | 6 ++ 5 files changed, 73 insertions(+), 56 deletions(-) (limited to 'src/integrationTest/kotlin/dev/dnpm') 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 428a99d..1f561da 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/monitoring/RequestRepositoryTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/monitoring/RequestRepositoryTest.kt @@ -61,6 +61,7 @@ class RequestRepositoryTest : AbstractTestcontainerTest() { PatientId("P1"), Fingerprint("0123456789abcdef1"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.WARNING, Instant.parse("2023-07-07T00:00:00Z"), ) diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/output/RestDipMtbFileSenderTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/output/RestDipMtbFileSenderTest.kt index f6f6a08..d27aa4c 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/output/RestDipMtbFileSenderTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/output/RestDipMtbFileSenderTest.kt @@ -31,6 +31,8 @@ import dev.dnpm.etl.processor.consent.ConsentEvaluator import dev.dnpm.etl.processor.monitoring.ReportService import dev.dnpm.etl.processor.monitoring.RequestStatus import dev.pcvolkmer.mv64e.mtb.* +import java.time.Instant +import java.util.* import org.assertj.core.api.Assertions.assertThat import org.hamcrest.CoreMatchers.not import org.hamcrest.Matchers.containsString @@ -51,8 +53,6 @@ import org.springframework.test.web.client.MockRestServiceServer import org.springframework.test.web.client.match.MockRestRequestMatchers.* import org.springframework.test.web.client.response.MockRestResponseCreators.withStatus import org.springframework.web.client.RestTemplate -import java.time.Instant -import java.util.* @SpringBootTest @MockitoBean(types = [ReportService::class]) @@ -70,43 +70,39 @@ import java.util.* ) class RestDipMtbFileSenderTest { - @Nested - inner class DnpmV2ContentRequest { + @Nested + inner class DnpmV2ContentRequest { - private lateinit var mockRestServiceServer: MockRestServiceServer + private lateinit var mockRestServiceServer: MockRestServiceServer - private lateinit var restMtbFileSender: RestMtbFileSender + private lateinit var restMtbFileSender: RestMtbFileSender - private var reportService = - ReportService(ObjectMapper().registerModule(KotlinModule.Builder().build())) + private var reportService = + ReportService(ObjectMapper().registerModule(KotlinModule.Builder().build())) - @BeforeEach - fun setup( - @Autowired restTemplate: RestTemplate - ) { - val restTemplate = restTemplate - val restTargetProperties = RestTargetProperties("http://localhost:9000/api", null, null) - val retryTemplate = RetryTemplateBuilder().customPolicy(SimpleRetryPolicy(1)).build() + @BeforeEach + fun setup(@Autowired restTemplate: RestTemplate) { + val restTemplate = restTemplate + val restTargetProperties = RestTargetProperties("http://localhost:9000/api", null, null) + val retryTemplate = RetryTemplateBuilder().customPolicy(SimpleRetryPolicy(1)).build() - this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate) + this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate) - this.restMtbFileSender = - RestDipMtbFileSender(restTemplate, restTargetProperties, retryTemplate, reportService) - } + this.restMtbFileSender = + RestDipMtbFileSender(restTemplate, restTargetProperties, retryTemplate, reportService) + } - @Test - fun shouldNotSendJsonNullValues() { - this.mockRestServiceServer - .expect(method(HttpMethod.POST)) - .andExpect(requestTo("http://localhost:9000/api/mtb/etl/patient-record")) - .andExpect( - content().string(not(containsString("null"))) - ) - .andRespond { - withStatus(HttpStatus.OK) - .contentType(MediaType.APPLICATION_JSON) - .body( - """ + @Test + fun shouldNotSendJsonNullValues() { + this.mockRestServiceServer + .expect(method(HttpMethod.POST)) + .andExpect(requestTo("http://localhost:9000/api/mtb/etl/patient-record")) + .andExpect(content().string(not(containsString("null")))) + .andRespond { + withStatus(HttpStatus.OK) + .contentType(MediaType.APPLICATION_JSON) + .body( + """ { "patient": "PID", "issues": [ @@ -114,33 +110,34 @@ class RestDipMtbFileSenderTest { ] } """ - ) - .createResponse(it) - } + ) + .createResponse(it) + } - val response = restMtbFileSender.send(DnpmV2MtbFileRequest(RequestId("TEST1234"), dnpmV2MtbFile())) - assertThat(response.status).isEqualTo(RequestStatus.SUCCESS) - } + val response = + restMtbFileSender.send(DnpmV2MtbFileRequest(RequestId("TEST1234"), dnpmV2MtbFile())) + assertThat(response.status).isEqualTo(RequestStatus.SUCCESS) } + } - companion object { - fun dnpmV2MtbFile(): Mtb { - return Mtb().apply { - this.patient = - Patient().apply { - this.id = "PID" - this.birthDate = Date.from(Instant.now()) - this.gender = GenderCoding().apply { this.code = GenderCodingCode.MALE } - } - this.episodesOfCare = - listOf( - MtbEpisodeOfCare().apply { - this.id = "1" - this.patient = Reference().apply { this.id = "PID" } - this.period = PeriodDate().apply { this.start = Date.from(Instant.now()) } - } - ) + companion object { + fun dnpmV2MtbFile(): Mtb { + return Mtb().apply { + this.patient = + Patient().apply { + this.id = "PID" + this.birthDate = Date.from(Instant.now()) + this.gender = GenderCoding().apply { this.code = GenderCodingCode.MALE } } - } + this.episodesOfCare = + listOf( + MtbEpisodeOfCare().apply { + this.id = "1" + this.patient = Reference().apply { this.id = "PID" } + this.period = PeriodDate().apply { this.start = Date.from(Instant.now()) } + } + ) + } } + } } diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt index d9489f2..0b30e94 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt @@ -24,6 +24,7 @@ import dev.dnpm.etl.processor.monitoring.Request import dev.dnpm.etl.processor.monitoring.RequestRepository import dev.dnpm.etl.processor.monitoring.RequestStatus import dev.dnpm.etl.processor.monitoring.RequestType +import dev.dnpm.etl.processor.monitoring.SubmissionType import dev.dnpm.etl.processor.output.MtbFileSender import java.time.Instant import org.assertj.core.api.Assertions.assertThat @@ -75,6 +76,7 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() { PatientId("P1"), Fingerprint("0123456789abcdef1"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.SUCCESS, Instant.parse("2023-07-07T02:00:00Z"), ), @@ -85,6 +87,7 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() { PatientId("P2"), Fingerprint("0123456789abcdef2"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.WARNING, Instant.parse("2023-08-08T00:00:00Z"), ), @@ -95,6 +98,7 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() { PatientId("P2"), Fingerprint("0123456789abcdee1"), RequestType.DELETE, + SubmissionType.TEST, RequestStatus.SUCCESS, Instant.parse("2023-08-08T02:00:00Z"), ), 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 33fc9d2..e329b30 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/HomeControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/HomeControllerTest.kt @@ -26,6 +26,7 @@ import dev.dnpm.etl.processor.monitoring.Report import dev.dnpm.etl.processor.monitoring.Request import dev.dnpm.etl.processor.monitoring.RequestStatus import dev.dnpm.etl.processor.monitoring.RequestType +import dev.dnpm.etl.processor.monitoring.SubmissionType import dev.dnpm.etl.processor.services.RequestService import java.io.IOException import java.time.Instant @@ -113,6 +114,7 @@ class HomeControllerTest { PatientId("PATIENT1"), Fingerprint("ashdkasdh"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.SUCCESS, ), Request( @@ -122,6 +124,7 @@ class HomeControllerTest { PatientId("PATIENT1"), Fingerprint("asdasdasd"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.ERROR, ), ) @@ -148,6 +151,7 @@ class HomeControllerTest { PatientId("PATIENT1"), Fingerprint("ashdkasdh"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.SUCCESS, Instant.now(), Report("Test"), @@ -174,6 +178,7 @@ class HomeControllerTest { PatientId("PATIENT1"), Fingerprint("ashdkasdh"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.SUCCESS, ), Request( @@ -183,6 +188,7 @@ class HomeControllerTest { PatientId("PATIENT1"), Fingerprint("asdasdasd"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.ERROR, ), ) @@ -208,6 +214,7 @@ class HomeControllerTest { PatientId("PATIENT1"), Fingerprint("ashdkasdh"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.SUCCESS, ), Request( @@ -217,6 +224,7 @@ class HomeControllerTest { PatientId("PATIENT1"), Fingerprint("asdasdasd"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.ERROR, ), ) @@ -286,6 +294,7 @@ class HomeControllerTest { PatientId("PATIENT1"), Fingerprint("ashdkasdh"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.NO_CONSENT, ) ) 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 16a9464..aabd634 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsRestControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsRestControllerTest.kt @@ -28,6 +28,7 @@ import dev.dnpm.etl.processor.monitoring.CountedState import dev.dnpm.etl.processor.monitoring.Request import dev.dnpm.etl.processor.monitoring.RequestStatus import dev.dnpm.etl.processor.monitoring.RequestType +import dev.dnpm.etl.processor.monitoring.SubmissionType import dev.dnpm.etl.processor.randomRequestId import dev.dnpm.etl.processor.services.RequestService import org.hamcrest.Matchers.equalTo @@ -185,6 +186,7 @@ class StatisticsRestControllerTest { PatientId("P1"), Fingerprint("0123456789abcdef1"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.SUCCESS, Instant .now() @@ -200,6 +202,7 @@ class StatisticsRestControllerTest { PatientId("P2"), Fingerprint("0123456789abcdef2"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.WARNING, Instant .now() @@ -215,6 +218,7 @@ class StatisticsRestControllerTest { PatientId("P2"), Fingerprint("0123456789abcdee1"), RequestType.DELETE, + SubmissionType.TEST, RequestStatus.ERROR, Instant .now() @@ -230,6 +234,7 @@ class StatisticsRestControllerTest { PatientId("P2"), Fingerprint("0123456789abcdef2"), RequestType.MTB_FILE, + SubmissionType.TEST, RequestStatus.DUPLICATION, Instant .now() @@ -245,6 +250,7 @@ class StatisticsRestControllerTest { PatientId("P2"), Fingerprint("0123456789abcdef2"), RequestType.DELETE, + SubmissionType.TEST, RequestStatus.UNKNOWN, Instant .now() -- cgit v1.2.3