summaryrefslogtreecommitdiff
path: root/src/test/java/dev/dnpm/etl/processor
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2025-10-22 17:09:14 +0200
committerGitHub2025-10-22 17:09:14 +0200
commit7ae349930521ed4f9b6255e12c50641ed4987e9d (patch)
tree9d69c7a4b5084591e8fbf3c456d2818b78a0de6a /src/test/java/dev/dnpm/etl/processor
parent004e1021c8156bf81f85ac5ad1ef6d260392dc6f (diff)
build: add spotless for java code (#158)
Diffstat (limited to 'src/test/java/dev/dnpm/etl/processor')
-rw-r--r--src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java375
1 files changed, 184 insertions, 191 deletions
diff --git a/src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java b/src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java
index 02b4d37..40fdc52 100644
--- a/src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java
+++ b/src/test/java/dev/dnpm/etl/processor/consent/GicsConsentServiceTest.java
@@ -1,10 +1,19 @@
package dev.dnpm.etl.processor.consent;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
+import static org.springframework.test.web.client.response.MockRestResponseCreators.withServerError;
+import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
+
import ca.uhn.fhir.context.FhirContext;
import com.fasterxml.jackson.databind.ObjectMapper;
import dev.dnpm.etl.processor.config.AppConfiguration;
import dev.dnpm.etl.processor.config.AppFhirConfig;
import dev.dnpm.etl.processor.config.GIcsConfigProperties;
+import java.nio.charset.StandardCharsets;
+import java.time.Instant;
+import java.util.Date;
+import java.util.Objects;
import org.apache.commons.io.IOUtils;
import org.hl7.fhir.r4.model.*;
import org.hl7.fhir.r4.model.OperationOutcome.IssueSeverity;
@@ -22,199 +31,183 @@ import org.springframework.test.context.TestPropertySource;
import org.springframework.test.web.client.MockRestServiceServer;
import org.springframework.web.client.RestTemplate;
-import java.nio.charset.StandardCharsets;
-import java.time.Instant;
-import java.util.Date;
-import java.util.Objects;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.fail;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withServerError;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
-
@ContextConfiguration(classes = {AppConfiguration.class, ObjectMapper.class})
-@TestPropertySource(properties = {
- "app.consent.service=gics",
- "app.consent.gics.uri=http://localhost:8090/ttp-fhir/fhir/gics"
-})
+@TestPropertySource(
+ properties = {
+ "app.consent.service=gics",
+ "app.consent.gics.uri=http://localhost:8090/ttp-fhir/fhir/gics"
+ })
@RestClientTest
class GicsConsentServiceTest {
- static final String GICS_BASE_URI = "http://localhost:8090/ttp-fhir/fhir/gics";
-
- MockRestServiceServer mockRestServiceServer;
- AppFhirConfig appFhirConfig;
- GIcsConfigProperties gIcsConfigProperties;
-
- GicsConsentService gicsConsentService;
-
- @BeforeEach
- void setUp(
- @Autowired AppFhirConfig appFhirConfig,
- @Autowired GIcsConfigProperties gIcsConfigProperties
- ) {
- this.appFhirConfig = appFhirConfig;
- this.gIcsConfigProperties = gIcsConfigProperties;
-
- var restTemplate = new RestTemplate();
-
- this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate);
- this.gicsConsentService = new GicsConsentService(
- this.gIcsConfigProperties,
- RetryTemplate.builder().maxAttempts(1).build(),
- restTemplate,
- this.appFhirConfig
- );
- }
-
- @Test
- void shouldReturnTtpBroadConsentStatus() {
- final Parameters consentedResponse = new Parameters()
- .addParameter(
- new ParametersParameterComponent()
- .setName("consented")
- .setValue(new BooleanType().setValue(true))
- );
-
- mockRestServiceServer
- .expect(
- requestTo(
- "http://localhost:8090/ttp-fhir/fhir/gics" + GicsConsentService.IS_CONSENTED_ENDPOINT)
- )
- .andRespond(
- withSuccess(
- appFhirConfig.fhirContext().newJsonParser().encodeResourceToString(consentedResponse),
- MediaType.APPLICATION_JSON
- )
- );
-
- var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
- assertThat(consentStatus).isEqualTo(TtpConsentStatus.BROAD_CONSENT_GIVEN);
- }
-
- @Test
- void shouldReturnRevokedConsent() {
- final Parameters revokedResponse = new Parameters()
- .addParameter(
- new ParametersParameterComponent()
- .setName("consented")
- .setValue(new BooleanType().setValue(false))
- );
-
- mockRestServiceServer
- .expect(
- requestTo(
- "http://localhost:8090/ttp-fhir/fhir/gics" + GicsConsentService.IS_CONSENTED_ENDPOINT)
- )
- .andRespond(
- withSuccess(
- appFhirConfig.fhirContext().newJsonParser().encodeResourceToString(revokedResponse),
- MediaType.APPLICATION_JSON)
- );
-
- var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
- assertThat(consentStatus).isEqualTo(TtpConsentStatus.BROAD_CONSENT_MISSING_OR_REJECTED);
- }
-
-
- @Test
- void shouldReturnInvalidParameterResponse() {
- final OperationOutcome responseWithErrorOutcome = new OperationOutcome()
- .addIssue(
- new OperationOutcomeIssueComponent()
- .setSeverity(IssueSeverity.ERROR)
- .setCode(IssueType.PROCESSING)
- .setDiagnostics("Invalid policy parameter...")
- );
-
- mockRestServiceServer
- .expect(
- requestTo(GICS_BASE_URI + GicsConsentService.IS_CONSENTED_ENDPOINT)
- )
- .andRespond(
- withSuccess(
- appFhirConfig.fhirContext().newJsonParser().encodeResourceToString(responseWithErrorOutcome),
- MediaType.APPLICATION_JSON
- )
- );
-
- var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
- assertThat(consentStatus).isEqualTo(TtpConsentStatus.FAILED_TO_ASK);
- }
-
- @Test
- void shouldReturnRequestError() {
- mockRestServiceServer
- .expect(
- requestTo(GICS_BASE_URI + GicsConsentService.IS_CONSENTED_ENDPOINT)
- )
- .andRespond(
- withServerError()
- );
-
- var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
- assertThat(consentStatus).isEqualTo(TtpConsentStatus.FAILED_TO_ASK);
- }
-
- @Test
- void buildRequestParameterCurrentPolicyStatesForPersonTest() {
- String pid = "12345678";
- var result = gicsConsentService
- .buildRequestParameterCurrentPolicyStatesForPerson(
- pid,
- Date.from(Instant.now()),
- ConsentDomain.MODELLVORHABEN_64E
- );
-
- assertThat(result.getParameter())
- .as("should contain 3 parameter resources")
- .hasSize(3);
-
- assertThat(((StringType) result.getParameter("domain").getValue()).getValue())
- .isEqualTo(
- gIcsConfigProperties.getGenomDeConsentDomainName()
- );
-
- assertThat(((Identifier) result.getParameter("personIdentifier").getValue()).getValue())
- .isEqualTo(
- pid
- );
- }
-
- @Test
- void convertGicsResultToMiiBroadConsent() throws Exception {
- var fhirJsonParser = FhirContext.forR4().newJsonParser();
- fhirJsonParser.setPrettyPrint(true);
-
- var gicsInputStream = Objects.requireNonNull(
- this.getClass().getClassLoader().getResourceAsStream("fake_broadConsent_gics_response_permit.json")
- );
- var gicsConsentBundle = (Bundle) fhirJsonParser.parseResource(IOUtils.toString(gicsInputStream, StandardCharsets.UTF_8));
-
- var miiInputStream = Objects.requireNonNull(
- this.getClass().getClassLoader().getResourceAsStream("fake_broadConsent_mii_response_permit.json")
- );
- var miiConsent = IOUtils.toString(miiInputStream, StandardCharsets.UTF_8);
-
- var actual = gicsConsentService.convertGicsResultToMiiBroadConsent(gicsConsentBundle);
-
- assertThat(fhirJsonParser.encodeToString(actual)).isEqualTo(miiConsent);
- }
-
- @Test
- void convertedMiiBroadConsentShouldNotContainPatientId() throws Exception {
- var fhirJsonParser = FhirContext.forR4().newJsonParser();
- fhirJsonParser.setPrettyPrint(true);
-
- var miiInputStream = Objects.requireNonNull(
- this.getClass().getClassLoader().getResourceAsStream("fake_broadConsent_mii_response_permit.json")
- );
- var miiConsentBundle = (Bundle) fhirJsonParser.parseResource(IOUtils.toString(miiInputStream, StandardCharsets.UTF_8));
-
- var currentPatientId = miiConsentBundle.getEntry().getFirst().getResource().getIdPart();
-
- var actual = gicsConsentService.anonymizeBroadConsent(miiConsentBundle);
- assertThat(fhirJsonParser.encodeToString(actual)).doesNotContain(currentPatientId);
- }
+ static final String GICS_BASE_URI = "http://localhost:8090/ttp-fhir/fhir/gics";
+
+ MockRestServiceServer mockRestServiceServer;
+ AppFhirConfig appFhirConfig;
+ GIcsConfigProperties gIcsConfigProperties;
+
+ GicsConsentService gicsConsentService;
+
+ @BeforeEach
+ void setUp(
+ @Autowired AppFhirConfig appFhirConfig,
+ @Autowired GIcsConfigProperties gIcsConfigProperties) {
+ this.appFhirConfig = appFhirConfig;
+ this.gIcsConfigProperties = gIcsConfigProperties;
+
+ var restTemplate = new RestTemplate();
+
+ this.mockRestServiceServer = MockRestServiceServer.createServer(restTemplate);
+ this.gicsConsentService =
+ new GicsConsentService(
+ this.gIcsConfigProperties,
+ RetryTemplate.builder().maxAttempts(1).build(),
+ restTemplate,
+ this.appFhirConfig);
+ }
+
+ @Test
+ void shouldReturnTtpBroadConsentStatus() {
+ final Parameters consentedResponse =
+ new Parameters()
+ .addParameter(
+ new ParametersParameterComponent()
+ .setName("consented")
+ .setValue(new BooleanType().setValue(true)));
+
+ mockRestServiceServer
+ .expect(
+ requestTo(
+ "http://localhost:8090/ttp-fhir/fhir/gics"
+ + GicsConsentService.IS_CONSENTED_ENDPOINT))
+ .andRespond(
+ withSuccess(
+ appFhirConfig
+ .fhirContext()
+ .newJsonParser()
+ .encodeResourceToString(consentedResponse),
+ MediaType.APPLICATION_JSON));
+
+ var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
+ assertThat(consentStatus).isEqualTo(TtpConsentStatus.BROAD_CONSENT_GIVEN);
+ }
+
+ @Test
+ void shouldReturnRevokedConsent() {
+ final Parameters revokedResponse =
+ new Parameters()
+ .addParameter(
+ new ParametersParameterComponent()
+ .setName("consented")
+ .setValue(new BooleanType().setValue(false)));
+
+ mockRestServiceServer
+ .expect(
+ requestTo(
+ "http://localhost:8090/ttp-fhir/fhir/gics"
+ + GicsConsentService.IS_CONSENTED_ENDPOINT))
+ .andRespond(
+ withSuccess(
+ appFhirConfig.fhirContext().newJsonParser().encodeResourceToString(revokedResponse),
+ MediaType.APPLICATION_JSON));
+
+ var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
+ assertThat(consentStatus).isEqualTo(TtpConsentStatus.BROAD_CONSENT_MISSING_OR_REJECTED);
+ }
+
+ @Test
+ void shouldReturnInvalidParameterResponse() {
+ final OperationOutcome responseWithErrorOutcome =
+ new OperationOutcome()
+ .addIssue(
+ new OperationOutcomeIssueComponent()
+ .setSeverity(IssueSeverity.ERROR)
+ .setCode(IssueType.PROCESSING)
+ .setDiagnostics("Invalid policy parameter..."));
+
+ mockRestServiceServer
+ .expect(requestTo(GICS_BASE_URI + GicsConsentService.IS_CONSENTED_ENDPOINT))
+ .andRespond(
+ withSuccess(
+ appFhirConfig
+ .fhirContext()
+ .newJsonParser()
+ .encodeResourceToString(responseWithErrorOutcome),
+ MediaType.APPLICATION_JSON));
+
+ var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
+ assertThat(consentStatus).isEqualTo(TtpConsentStatus.FAILED_TO_ASK);
+ }
+
+ @Test
+ void shouldReturnRequestError() {
+ mockRestServiceServer
+ .expect(requestTo(GICS_BASE_URI + GicsConsentService.IS_CONSENTED_ENDPOINT))
+ .andRespond(withServerError());
+
+ var consentStatus = gicsConsentService.getTtpBroadConsentStatus("123456");
+ assertThat(consentStatus).isEqualTo(TtpConsentStatus.FAILED_TO_ASK);
+ }
+
+ @Test
+ void buildRequestParameterCurrentPolicyStatesForPersonTest() {
+ String pid = "12345678";
+ var result =
+ gicsConsentService.buildRequestParameterCurrentPolicyStatesForPerson(
+ pid, Date.from(Instant.now()), ConsentDomain.MODELLVORHABEN_64E);
+
+ assertThat(result.getParameter()).as("should contain 3 parameter resources").hasSize(3);
+
+ assertThat(((StringType) result.getParameter("domain").getValue()).getValue())
+ .isEqualTo(gIcsConfigProperties.getGenomDeConsentDomainName());
+
+ assertThat(((Identifier) result.getParameter("personIdentifier").getValue()).getValue())
+ .isEqualTo(pid);
+ }
+
+ @Test
+ void convertGicsResultToMiiBroadConsent() throws Exception {
+ var fhirJsonParser = FhirContext.forR4().newJsonParser();
+ fhirJsonParser.setPrettyPrint(true);
+
+ var gicsInputStream =
+ Objects.requireNonNull(
+ this.getClass()
+ .getClassLoader()
+ .getResourceAsStream("fake_broadConsent_gics_response_permit.json"));
+ var gicsConsentBundle =
+ (Bundle)
+ fhirJsonParser.parseResource(IOUtils.toString(gicsInputStream, StandardCharsets.UTF_8));
+
+ var miiInputStream =
+ Objects.requireNonNull(
+ this.getClass()
+ .getClassLoader()
+ .getResourceAsStream("fake_broadConsent_mii_response_permit.json"));
+ var miiConsent = IOUtils.toString(miiInputStream, StandardCharsets.UTF_8);
+
+ var actual = gicsConsentService.convertGicsResultToMiiBroadConsent(gicsConsentBundle);
+
+ assertThat(fhirJsonParser.encodeToString(actual)).isEqualTo(miiConsent);
+ }
+
+ @Test
+ void convertedMiiBroadConsentShouldNotContainPatientId() throws Exception {
+ var fhirJsonParser = FhirContext.forR4().newJsonParser();
+ fhirJsonParser.setPrettyPrint(true);
+
+ var miiInputStream =
+ Objects.requireNonNull(
+ this.getClass()
+ .getClassLoader()
+ .getResourceAsStream("fake_broadConsent_mii_response_permit.json"));
+ var miiConsentBundle =
+ (Bundle)
+ fhirJsonParser.parseResource(IOUtils.toString(miiInputStream, StandardCharsets.UTF_8));
+
+ var currentPatientId = miiConsentBundle.getEntry().getFirst().getResource().getIdPart();
+
+ var actual = gicsConsentService.anonymizeBroadConsent(miiConsentBundle);
+ assertThat(fhirJsonParser.encodeToString(actual)).doesNotContain(currentPatientId);
+ }
}