diff options
Diffstat (limited to 'src/integrationTest/kotlin/dev/dnpm/etl/processor')
6 files changed, 76 insertions, 55 deletions
diff --git a/src/integrationTest/kotlin/dev/dnpm/etl/processor/helpers.kt b/src/integrationTest/kotlin/dev/dnpm/etl/processor/helpers.kt new file mode 100644 index 0000000..6ca420f --- /dev/null +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/helpers.kt @@ -0,0 +1,30 @@ +/* + * This file is part of ETL-Processor + * + * Copyright (c) 2024 Comprehensive Cancer Center Mainfranken, Datenintegrationszentrum Philipps-Universität Marburg and Contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +package dev.dnpm.etl.processor + +import org.mockito.ArgumentMatchers + +@Suppress("UNCHECKED_CAST") +inline fun <reified T> anyValueClass(): T { + val unboxedClass = T::class.java.declaredFields.first().type + return ArgumentMatchers.any(unboxedClass as Class<T>) + ?: T::class.java.getDeclaredMethod("box-impl", unboxedClass) + .invoke(null, null) as T +}
\ No newline at end of file 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 521ec52..670020f 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/input/MtbFileRestControllerTest.kt @@ -21,6 +21,7 @@ package dev.dnpm.etl.processor.input 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.security.TokenRepository import dev.dnpm.etl.processor.security.UserRoleRepository @@ -29,7 +30,6 @@ 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.ArgumentMatchers.anyString import org.mockito.junit.jupiter.MockitoExtension import org.mockito.kotlin.any import org.mockito.kotlin.never @@ -141,7 +141,7 @@ class MtbFileRestControllerTest { status { isAccepted() } } - verify(requestProcessor, times(1)).processDeletion(anyString()) + verify(requestProcessor, times(1)).processDeletion(anyValueClass()) } @Test @@ -152,7 +152,7 @@ class MtbFileRestControllerTest { status { isUnauthorized() } } - verify(requestProcessor, never()).processDeletion(anyString()) + verify(requestProcessor, never()).processDeletion(anyValueClass()) } @Nested 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 231fffe..bef124c 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/monitoring/RequestRepositoryTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/monitoring/RequestRepositoryTest.kt @@ -19,10 +19,8 @@ package dev.dnpm.etl.processor.monitoring -import dev.dnpm.etl.processor.AbstractTestcontainerTest -import dev.dnpm.etl.processor.Fingerprint +import dev.dnpm.etl.processor.* import dev.dnpm.etl.processor.output.MtbFileSender -import dev.dnpm.etl.processor.randomRequestId import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -63,8 +61,8 @@ class RequestRepositoryTest : AbstractTestcontainerTest() { fun shouldSaveRequest() { val request = Request( randomRequestId(), - "TEST_12345678901", - "P1", + PatientPseudonym("TEST_12345678901"), + PatientId("P1"), Fingerprint("0123456789abcdef1"), RequestType.MTB_FILE, RequestStatus.WARNING, 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 1aac5fd..47ac301 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/services/RequestServiceIntegrationTest.kt @@ -19,14 +19,12 @@ package dev.dnpm.etl.processor.services -import dev.dnpm.etl.processor.AbstractTestcontainerTest -import dev.dnpm.etl.processor.Fingerprint +import dev.dnpm.etl.processor.* 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.output.MtbFileSender -import dev.dnpm.etl.processor.randomRequestId import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -67,7 +65,7 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() { @Test fun shouldResultInEmptyRequestList() { - val actual = requestService.allRequestsByPatientPseudonym("TEST_12345678901") + val actual = requestService.allRequestsByPatientPseudonym(TEST_PATIENT_PSEUDONYM) assertThat(actual).isEmpty() } @@ -78,8 +76,8 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() { listOf( Request( randomRequestId(), - "TEST_12345678901", - "P1", + PatientPseudonym("TEST_12345678901"), + PatientId("P1"), Fingerprint("0123456789abcdef1"), RequestType.MTB_FILE, RequestStatus.SUCCESS, @@ -88,8 +86,8 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() { // Should be ignored - wrong patient ID --> Request( randomRequestId(), - "TEST_12345678902", - "P2", + PatientPseudonym("TEST_12345678902"), + PatientId("P2"), Fingerprint("0123456789abcdef2"), RequestType.MTB_FILE, RequestStatus.WARNING, @@ -98,8 +96,8 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() { // <-- Request( randomRequestId(), - "TEST_12345678901", - "P2", + PatientPseudonym("TEST_12345678901"), + PatientId("P2"), Fingerprint("0123456789abcdee1"), RequestType.DELETE, RequestStatus.SUCCESS, @@ -113,7 +111,7 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() { fun shouldResultInSortedRequestList() { setupTestData() - val actual = requestService.allRequestsByPatientPseudonym("TEST_12345678901") + val actual = requestService.allRequestsByPatientPseudonym(TEST_PATIENT_PSEUDONYM) assertThat(actual).hasSize(2) assertThat(actual[0].fingerprint).isEqualTo(Fingerprint("0123456789abcdee1")) @@ -124,7 +122,7 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() { fun shouldReturnDeleteRequestAsLastRequest() { setupTestData() - val actual = requestService.isLastRequestWithKnownStatusDeletion("TEST_12345678901") + val actual = requestService.isLastRequestWithKnownStatusDeletion(TEST_PATIENT_PSEUDONYM) assertThat(actual).isTrue() } @@ -133,10 +131,14 @@ class RequestServiceIntegrationTest : AbstractTestcontainerTest() { fun shouldReturnLastMtbFileRequest() { setupTestData() - val actual = requestService.lastMtbFileRequestForPatientPseudonym("TEST_12345678901") + val actual = requestService.lastMtbFileRequestForPatientPseudonym(TEST_PATIENT_PSEUDONYM) assertThat(actual).isNotNull assertThat(actual?.fingerprint).isEqualTo(Fingerprint("0123456789abcdef1")) } + companion object { + val TEST_PATIENT_PSEUDONYM = PatientPseudonym("TEST_12345678901") + } + }
\ No newline at end of file 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 a5d8771..80c17d2 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/HomeControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/HomeControllerTest.kt @@ -21,15 +21,13 @@ package dev.dnpm.etl.processor.web import com.gargoylesoftware.htmlunit.WebClient import com.gargoylesoftware.htmlunit.html.HtmlPage -import dev.dnpm.etl.processor.Fingerprint -import dev.dnpm.etl.processor.NotFoundException +import dev.dnpm.etl.processor.* import dev.dnpm.etl.processor.config.AppConfiguration import dev.dnpm.etl.processor.config.AppSecurityConfiguration 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.randomRequestId import dev.dnpm.etl.processor.services.RequestService import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.BeforeEach @@ -37,8 +35,6 @@ import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows import org.junit.jupiter.api.extension.ExtendWith -import org.mockito.ArgumentMatchers -import org.mockito.ArgumentMatchers.anyString import org.mockito.junit.jupiter.MockitoExtension import org.mockito.kotlin.any import org.mockito.kotlin.whenever @@ -83,13 +79,6 @@ class HomeControllerTest { private lateinit var mockMvc: MockMvc private lateinit var webClient: WebClient - inline fun <reified T> anyValueClass(): T { - val unboxedClass = T::class.java.declaredFields.first().type - return ArgumentMatchers.any(unboxedClass as Class<T>) - ?: T::class.java.getDeclaredMethod("box-impl", unboxedClass) - .invoke(null, null) as T - } - @BeforeEach fun setup( @Autowired mockMvc: MockMvc, @@ -129,8 +118,8 @@ class HomeControllerTest { Request( 2L, randomRequestId(), - "PSEUDO1", - "PATIENT1", + PatientPseudonym("PSEUDO1"), + PatientId("PATIENT1"), Fingerprint("ashdkasdh"), RequestType.MTB_FILE, RequestStatus.SUCCESS @@ -138,8 +127,8 @@ class HomeControllerTest { Request( 1L, randomRequestId(), - "PSEUDO1", - "PATIENT1", + PatientPseudonym("PSEUDO1"), + PatientId("PATIENT1"), Fingerprint("asdasdasd"), RequestType.MTB_FILE, RequestStatus.ERROR @@ -163,8 +152,8 @@ class HomeControllerTest { Request( 2L, requestId, - "PSEUDO1", - "PATIENT1", + PatientPseudonym("PSEUDO1"), + PatientId("PATIENT1"), Fingerprint("ashdkasdh"), RequestType.MTB_FILE, RequestStatus.SUCCESS, @@ -182,14 +171,14 @@ class HomeControllerTest { @Test @WithMockUser(username = "admin", roles = ["ADMIN"]) fun testShouldShowPatientDetails() { - whenever(requestService.findRequestByPatientId(anyString(), any<Pageable>())).thenReturn( + whenever(requestService.findRequestByPatientId(anyValueClass(), any<Pageable>())).thenReturn( PageImpl( listOf( Request( 2L, randomRequestId(), - "PSEUDO1", - "PATIENT1", + PatientPseudonym("PSEUDO1"), + PatientId("PATIENT1"), Fingerprint("ashdkasdh"), RequestType.MTB_FILE, RequestStatus.SUCCESS @@ -197,8 +186,8 @@ class HomeControllerTest { Request( 1L, randomRequestId(), - "PSEUDO1", - "PATIENT1", + PatientPseudonym("PSEUDO1"), + PatientId("PATIENT1"), Fingerprint("asdasdasd"), RequestType.MTB_FILE, RequestStatus.ERROR @@ -254,7 +243,7 @@ class HomeControllerTest { @Test @WithMockUser(username = "admin", roles = ["ADMIN"]) fun testShouldShowEmptyPatientDetails() { - whenever(requestService.findRequestByPatientId(anyString(), any<Pageable>())).thenReturn(Page.empty()) + whenever(requestService.findRequestByPatientId(anyValueClass(), any<Pageable>())).thenReturn(Page.empty()) val page = webClient.getPage<HtmlPage>("http://localhost/patient/PSEUDO1") assertThat(page.querySelectorAll("tbody tr")).isEmpty() 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 e66def7..b9a1338 100644 --- a/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsRestControllerTest.kt +++ b/src/integrationTest/kotlin/dev/dnpm/etl/processor/web/StatisticsRestControllerTest.kt @@ -20,6 +20,8 @@ package dev.dnpm.etl.processor.web import dev.dnpm.etl.processor.Fingerprint +import dev.dnpm.etl.processor.PatientId +import dev.dnpm.etl.processor.PatientPseudonym import dev.dnpm.etl.processor.config.AppConfiguration import dev.dnpm.etl.processor.config.AppSecurityConfiguration import dev.dnpm.etl.processor.monitoring.CountedState @@ -188,8 +190,8 @@ class StatisticsRestControllerTest { Request( 1, randomRequestId(), - "TEST_12345678901", - "P1", + PatientPseudonym("TEST_12345678901"), + PatientId("P1"), Fingerprint("0123456789abcdef1"), RequestType.MTB_FILE, RequestStatus.SUCCESS, @@ -198,8 +200,8 @@ class StatisticsRestControllerTest { Request( 2, randomRequestId(), - "TEST_12345678902", - "P2", + PatientPseudonym("TEST_12345678902"), + PatientId("P2"), Fingerprint("0123456789abcdef2"), RequestType.MTB_FILE, RequestStatus.WARNING, @@ -208,8 +210,8 @@ class StatisticsRestControllerTest { Request( 3, randomRequestId(), - "TEST_12345678901", - "P2", + PatientPseudonym("TEST_12345678901"), + PatientId("P2"), Fingerprint("0123456789abcdee1"), RequestType.DELETE, RequestStatus.ERROR, @@ -218,8 +220,8 @@ class StatisticsRestControllerTest { Request( 4, randomRequestId(), - "TEST_12345678902", - "P2", + PatientPseudonym("TEST_12345678902"), + PatientId("P2"), Fingerprint("0123456789abcdef2"), RequestType.MTB_FILE, RequestStatus.DUPLICATION, @@ -228,8 +230,8 @@ class StatisticsRestControllerTest { Request( 5, randomRequestId(), - "TEST_12345678902", - "P2", + PatientPseudonym("TEST_12345678902"), + PatientId("P2"), Fingerprint("0123456789abcdef2"), RequestType.DELETE, RequestStatus.UNKNOWN, |
