From b9513ba384e14163172257a36af9737a28487f35 Mon Sep 17 00:00:00 2001 From: Henry Borasch <Henry.Borasch@sinc.de> Date: Thu, 2 Mar 2023 13:24:53 +0100 Subject: [PATCH] fixed tests --- .../fitconnect/api/config/Environment.java | 1 + .../client/ClientIntegrationTest.java | 55 ++++++++++--------- .../fitconnect/client/SenderClientTest.java | 6 +- .../factory/ApplicationConfigLoaderTest.java | 3 +- .../client/factory/ClientFactoryTest.java | 10 ++-- .../validation/DefaultValidationService.java | 5 ++ .../fitconnect/core/RestEndpointBase.java | 2 +- .../DefaultValidationServiceTest.java | 2 +- 8 files changed, 46 insertions(+), 38 deletions(-) diff --git a/api/src/main/java/dev/fitko/fitconnect/api/config/Environment.java b/api/src/main/java/dev/fitko/fitconnect/api/config/Environment.java index b46a55147..af6565566 100644 --- a/api/src/main/java/dev/fitko/fitconnect/api/config/Environment.java +++ b/api/src/main/java/dev/fitko/fitconnect/api/config/Environment.java @@ -13,4 +13,5 @@ public class Environment { private String submissionBaseUrl; private String selfServicePortalBaseUrl; private boolean allowInsecurePublicKey; + private boolean skipSubmissionDataValidation; } diff --git a/client/src/test/java/dev/fitko/fitconnect/client/ClientIntegrationTest.java b/client/src/test/java/dev/fitko/fitconnect/client/ClientIntegrationTest.java index 997a573d7..152b935b8 100644 --- a/client/src/test/java/dev/fitko/fitconnect/client/ClientIntegrationTest.java +++ b/client/src/test/java/dev/fitko/fitconnect/client/ClientIntegrationTest.java @@ -67,12 +67,12 @@ class ClientIntegrationTest { void testSendAndConfirmCycle() { // Given - final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true); + final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true, true); final var submission = SubmissionBuilder.Builder() .withAttachment(new File("src/test/resources/attachment.txt")) .withJsonData("{ \"data\": \"Beispiel Fachdaten\" }", - URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json")) + URI.create("https://schema.fitko.de/fim/s00000096_1.0.schema.json")) .withDestination(UUID.fromString(System.getenv("TEST_DESTINATION_ID"))) .withServiceType("Test Service", "urn:de:fim:leika:leistung:99400048079000") .build(); @@ -89,7 +89,7 @@ class ClientIntegrationTest { // Then assertNotNull(receivedSubmission); assertThat(receivedSubmission.getData(), is("{ \"data\": \"Beispiel Fachdaten\" }")); - assertThat(receivedSubmission.getDataSchemaUri(), is(URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json"))); + assertThat(receivedSubmission.getDataSchemaUri(), is(URI.create("https://schema.fitko.de/fim/s00000096_1.0.schema.json"))); assertThat(receivedSubmission.getDataMimeType().toString(), is("application/json")); assertThat(new String(receivedSubmission.getAttachments().get(0).getData()), is("Test attachment")); } @@ -98,7 +98,7 @@ class ClientIntegrationTest { void testSendAndConfirmCycleWithEncryptedData() throws ParseException, IOException { // Given - final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true); + final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true, true); final UUID destinationId = UUID.fromString(System.getenv("TEST_DESTINATION_ID")); @@ -189,12 +189,12 @@ class ClientIntegrationTest { void testAbortedSendSubmissionWithKeyValidationNotSilent() { // Given - final ApplicationConfig config = getConfigWithCredentialsFromGitlab("PROD", false); + final ApplicationConfig config = getConfigWithCredentialsFromGitlab("PROD", false, true); // When final var submission = SubmissionBuilder.Builder() .withJsonData("{ \"data\": \"Beispiel Fachdaten\" }", - URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json")) + URI.create("https://schema.fitko.de/fim/s00000096_1.0.schema.json")) .withDestination(UUID.fromString(System.getenv("TEST_DESTINATION_ID"))) .withServiceType("Test Service", "urn:de:fim:leika:leistung:99400048079000") .build(); @@ -213,7 +213,7 @@ class ClientIntegrationTest { void testListSubmissions() { // Given - final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true); + final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true, true); final var senderClient = ClientFactory.senderClient(config); final var subscriberClient = ClientFactory.subscriberClient(config); @@ -224,14 +224,14 @@ class ClientIntegrationTest { final var submissionOne = SubmissionBuilder.Builder() .withJsonData("{ \"data\": \"Beispiel Fachdaten 1\" }", - URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json")) + URI.create("https://schema.fitko.de/fim/s00000096_1.0.schema.json")) .withDestination(destinationId) .withServiceType(serviceName, leikaKey) .build(); final var submissionTwo = SubmissionBuilder.Builder() .withJsonData("{ \"data\": \"Beispiel Fachdaten 2\" }", - URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json")) + URI.create("https://schema.fitko.de/fim/s00000096_1.0.schema.json")) .withDestination(destinationId) .withServiceType(serviceName, leikaKey) .build(); @@ -265,12 +265,12 @@ class ClientIntegrationTest { void testRejectEvent() { // Given - final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true); + final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true, true); final var submission = SubmissionBuilder.Builder() .withAttachment(new File("src/test/resources/attachment.txt")) .withJsonData("{ \"data\": \"Beispiel Fachdaten\" }", - URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json")) + URI.create("https://schema.fitko.de/fim/s00000096_1.0.schema.json")) .withDestination(UUID.fromString(System.getenv("TEST_DESTINATION_ID"))) .withServiceType("Test Service", "urn:de:fim:leika:leistung:99400048079000") .build(); @@ -296,12 +296,12 @@ class ClientIntegrationTest { void testAcceptEvent() { // Given - final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true); + final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true, true); final var submission = SubmissionBuilder.Builder() .withAttachment(new File("src/test/resources/attachment.txt")) .withJsonData("{ \"data\": \"Beispiel Fachdaten\" }", - URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json")) + URI.create("https://schema.fitko.de/fim/s00000096_1.0.schema.json")) .withDestination(UUID.fromString(System.getenv("TEST_DESTINATION_ID"))) .withServiceType("Test Service", "urn:de:fim:leika:leistung:99400048079000") .build(); @@ -327,11 +327,11 @@ class ClientIntegrationTest { void testReadEventLogFromSender() { // Given - final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true); + final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true, true); final var submission = SubmissionBuilder.Builder() .withJsonData("{ \"data\": \"Beispiel Fachdaten\" }", - URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json")) + URI.create("https://schema.fitko.de/fim/s00000096_1.0.schema.json")) .withDestination(UUID.fromString(System.getenv("TEST_DESTINATION_ID"))) .withServiceType("Test Service", "urn:de:fim:leika:leistung:99400048079000") .build(); @@ -358,12 +358,12 @@ class ClientIntegrationTest { void testReadEventLogFromSubscriber() { // Given - final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true); + final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true, true); final var submission = SubmissionBuilder.Builder() .withAttachment(new File("src/test/resources/attachment.txt")) .withJsonData("{ \"data\": \"Beispiel Fachdaten\" }", - URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json")) + URI.create("https://schema.fitko.de/fim/s00000096_1.0.schema.json")) .withDestination(UUID.fromString(System.getenv("TEST_DESTINATION_ID"))) .withServiceType("Test Service", "urn:de:fim:leika:leistung:99400048079000") .build(); @@ -395,14 +395,14 @@ class ClientIntegrationTest { void testReadSubmissionStatusWithAuthTagEventValidationFromSender() { // Given - final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true); + final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true, true); final SenderClient senderClient = ClientFactory.senderClient(config); final var submission = SubmissionBuilder.Builder() .withAttachment(new File("src/test/resources/attachment.txt")) .withJsonData("{ \"data\": \"Beispiel Fachdaten\" }", - URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json")) + URI.create("https://schema.fitko.de/fim/s00000096_1.0.schema.json")) .withDestination(UUID.fromString(System.getenv("TEST_DESTINATION_ID"))) .withServiceType("Test Service", "urn:de:fim:leika:leistung:99400048079000") .build(); @@ -430,7 +430,7 @@ class ClientIntegrationTest { void testFindDestinationsWithRegionalKey() { // Given - final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true); + final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true, true); final RoutingClient routingClient = ClientFactory.routingClient(config); @@ -451,7 +451,7 @@ class ClientIntegrationTest { void testFindDestinationsWithAreaId() { // Given - final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true); + final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true, true); final RoutingClient routingClient = ClientFactory.routingClient(config); @@ -472,7 +472,7 @@ class ClientIntegrationTest { void testFindDestinationsWithMultipleAreaSearchCriteria() { // Given - final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true); + final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true, true); final RoutingClient routingClient = ClientFactory.routingClient(config); @@ -493,7 +493,7 @@ class ClientIntegrationTest { void testFindAreaWithMultipleSearchCriteria() { // Given - final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true); + final ApplicationConfig config = getConfigWithCredentialsFromGitlab("TESTING", true, true); final RoutingClient routingClient = ClientFactory.routingClient(config); @@ -534,7 +534,8 @@ class ClientIntegrationTest { } - private ApplicationConfig getConfigWithCredentialsFromGitlab(final String environmentName, final boolean allowInsecurePublicKey) { + private ApplicationConfig getConfigWithCredentialsFromGitlab(final String environmentName, final boolean allowInsecurePublicKey, + final boolean skipSubmissiomDataValidation) { final var sender = new SenderConfig(System.getenv("SENDER_CLIENT_ID"), System.getenv("SENDER_CLIENT_SECRET")); @@ -546,7 +547,7 @@ class ClientIntegrationTest { .build(); final var envName = new EnvironmentName(environmentName); - final Environment env = getEnvironment(allowInsecurePublicKey); + final Environment env = getEnvironment(allowInsecurePublicKey, skipSubmissiomDataValidation); return ApplicationConfig.builder() .senderConfig(sender) @@ -556,11 +557,11 @@ class ClientIntegrationTest { .build(); } - private static Environment getEnvironment(final boolean allowInsecurePublicKey) { + private static Environment getEnvironment(final boolean allowInsecurePublicKey, final boolean skipSubmissiomDataValidation) { final String authBaseUrl = "https://auth-testing.fit-connect.fitko.dev"; final String routingBaseUrl = "https://routing-api-testing.fit-connect.fitko.dev"; final String selfServicePortalUrl = "https://portal.auth-testing.fit-connect.fitko.dev"; final String submissionBaseUrl = "https://submission-api-testing.fit-connect.fitko.dev"; - return new Environment(authBaseUrl, routingBaseUrl, submissionBaseUrl, selfServicePortalUrl, allowInsecurePublicKey); + return new Environment(authBaseUrl, routingBaseUrl, submissionBaseUrl, selfServicePortalUrl, allowInsecurePublicKey, skipSubmissiomDataValidation); } } diff --git a/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java b/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java index a7ef9d0a2..5122354f6 100644 --- a/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java +++ b/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java @@ -77,7 +77,7 @@ public class SenderClientTest { when(senderMock.sendSubmission(any())).thenReturn(expectedSubmission); when(senderMock.validatePublicKey(any())).thenReturn(ValidationResult.ok()); when(senderMock.getEncryptionKeyForDestination(any())).thenReturn(publicKey); - when(senderMock.validateJsonFormat(any(), URI.create("urn:something"))).thenReturn(ValidationResult.ok()); + when(senderMock.validateJsonFormat(any(), eq(URI.create("https://json.mimetype")))).thenReturn(ValidationResult.ok()); when(senderMock.validateMetadata(any())).thenReturn(ValidationResult.ok()); @@ -182,7 +182,7 @@ public class SenderClientTest { when(senderMock.getDestination(any())).thenReturn(destination); when(senderMock.createSubmission(any())).thenReturn(announcedSubmission); when(senderMock.validatePublicKey(any())).thenReturn(ValidationResult.ok()); - when(senderMock.validateJsonFormat(any(), URI.create("urn:something"))).thenReturn(ValidationResult.ok()); + when(senderMock.validateJsonFormat(any(), eq(URI.create("https://schema.fitko.de/fim/s00000000009_1.0.0.schema.json")))).thenReturn(ValidationResult.ok()); when(senderMock.getEncryptionKeyForDestination(any())).thenReturn(publicKey); // When @@ -513,7 +513,7 @@ public class SenderClientTest { when(senderMock.getEncryptionKeyForDestination(any())).thenReturn(publicKey); when(senderMock.validateMetadata(any())).thenReturn(ValidationResult.ok()); when(senderMock.validateXmlFormat(any())).thenReturn(ValidationResult.ok()); - when(senderMock.validateJsonFormat(any(), URI.create("urn:something"))).thenReturn(ValidationResult.ok()); + when(senderMock.validateJsonFormat(any(), eq(URI.create("https://mimetype.test.de")))).thenReturn(ValidationResult.ok()); when(senderMock.sendSubmission(any())).thenReturn(new Submission()); return destinationId; diff --git a/client/src/test/java/dev/fitko/fitconnect/client/factory/ApplicationConfigLoaderTest.java b/client/src/test/java/dev/fitko/fitconnect/client/factory/ApplicationConfigLoaderTest.java index cbba30055..9a0657dc3 100644 --- a/client/src/test/java/dev/fitko/fitconnect/client/factory/ApplicationConfigLoaderTest.java +++ b/client/src/test/java/dev/fitko/fitconnect/client/factory/ApplicationConfigLoaderTest.java @@ -51,7 +51,8 @@ class ApplicationConfigLoaderTest { "https://routing-api-testing.fit-connect.fitko.dev", "https://submission-api-testing.fit-connect.fitko.dev", "https://portal.auth-testing.fit-connect.fitko.dev", - true + true, + false ); final SenderConfig senderConfig = new SenderConfig("1", "123"); diff --git a/client/src/test/java/dev/fitko/fitconnect/client/factory/ClientFactoryTest.java b/client/src/test/java/dev/fitko/fitconnect/client/factory/ClientFactoryTest.java index 9c1c539a6..1e43e8070 100644 --- a/client/src/test/java/dev/fitko/fitconnect/client/factory/ClientFactoryTest.java +++ b/client/src/test/java/dev/fitko/fitconnect/client/factory/ClientFactoryTest.java @@ -23,7 +23,7 @@ class ClientFactoryTest { void testSenderClientConstruction() { final var envName = new EnvironmentName("DEV"); - final var environments = Map.of(envName, new Environment("https://auth", "", "", "", true)); + final var environments = Map.of(envName, new Environment("https://auth", "", "", "", true, false)); final var sender = new SenderConfig("123", "abc"); @@ -42,7 +42,7 @@ class ClientFactoryTest { void testSubscriberClientConstruction() { final var envName = new EnvironmentName("DEV"); - final var environments = Map.of(envName, new Environment("https://auth", "", "", "", true)); + final var environments = Map.of(envName, new Environment("https://auth", "", "", "", true, false)); final var subscriber = SubscriberConfig.builder() .clientSecret("123") @@ -66,7 +66,7 @@ class ClientFactoryTest { void testRoutingClientConstruction() { final var envName = new EnvironmentName("DEV"); - final var environment = new Environment("", "https://routing.fitko.fitconnect.de", "", "", true); + final var environment = new Environment("", "https://routing.fitko.fitconnect.de", "", "", true, false); final var senderConfig = new SenderConfig("1234", "abcd"); @@ -83,7 +83,7 @@ class ClientFactoryTest { void testSigningKeyCannotBeParsed() { final var envName = new EnvironmentName("DEV"); - final var environments = Map.of(envName, new Environment("https://auth", "", "", "", true)); + final var environments = Map.of(envName, new Environment("https://auth", "", "", "", true, false)); final var subscriberConfig = SubscriberConfig.builder() .clientSecret("123") @@ -111,7 +111,7 @@ class ClientFactoryTest { void testDecryptionKeyCannotBeParsed() { final var envName = new EnvironmentName("DEV"); - final var environments = Map.of(envName, new Environment("https://auth", "", "", "", true)); + final var environments = Map.of(envName, new Environment("https://auth", "", "", "", true, false)); final var subscriberConfigWithoutKey = SubscriberConfig.builder() .clientSecret("123") diff --git a/core/src/main/java/dev/fitko/fitconnect/core/validation/DefaultValidationService.java b/core/src/main/java/dev/fitko/fitconnect/core/validation/DefaultValidationService.java index 0ffa40b74..128de388f 100644 --- a/core/src/main/java/dev/fitko/fitconnect/core/validation/DefaultValidationService.java +++ b/core/src/main/java/dev/fitko/fitconnect/core/validation/DefaultValidationService.java @@ -153,6 +153,11 @@ public class DefaultValidationService implements ValidationService { @Override public ValidationResult validateJsonFormat(final String json, final URI schemaUri) { + if (config.getCurrentEnvironment().isSkipSubmissionDataValidation()) { + LOGGER.warn("Submission data validation is deactivated. This should be done only on secure test environments."); + return ValidationResult.ok(); + } + String schema = schemaProvider.loadSubmissionDataSchema(schemaUri); try { return returnValidationResult(SCHEMA_FACTORY_DRAFT_2020.getSchema(schema).validate(MAPPER.readTree(json))); diff --git a/core/src/test/java/dev/fitko/fitconnect/core/RestEndpointBase.java b/core/src/test/java/dev/fitko/fitconnect/core/RestEndpointBase.java index 7ddaeffe0..bfac3e87b 100644 --- a/core/src/test/java/dev/fitko/fitconnect/core/RestEndpointBase.java +++ b/core/src/test/java/dev/fitko/fitconnect/core/RestEndpointBase.java @@ -30,7 +30,7 @@ public abstract class RestEndpointBase { protected ApplicationConfig getTestConfig(final String fakeBaseUrl) { final var envName = new EnvironmentName("TESTING"); - final var environments = Map.of(envName, new Environment(fakeBaseUrl, fakeBaseUrl, fakeBaseUrl, fakeBaseUrl, false)); + final var environments = Map.of(envName, new Environment(fakeBaseUrl, fakeBaseUrl, fakeBaseUrl, fakeBaseUrl, false, false)); return ApplicationConfig.builder() .environments(environments) diff --git a/core/src/test/java/dev/fitko/fitconnect/core/validation/DefaultValidationServiceTest.java b/core/src/test/java/dev/fitko/fitconnect/core/validation/DefaultValidationServiceTest.java index c61b72989..a8675a48e 100644 --- a/core/src/test/java/dev/fitko/fitconnect/core/validation/DefaultValidationServiceTest.java +++ b/core/src/test/java/dev/fitko/fitconnect/core/validation/DefaultValidationServiceTest.java @@ -109,7 +109,7 @@ class DefaultValidationServiceTest { //Given final String urlDummy = "https://localhost"; final EnvironmentName envName = new EnvironmentName("DEV"); - final Environment env = new Environment(urlDummy, urlDummy, urlDummy, urlDummy, false); + final Environment env = new Environment(urlDummy, urlDummy, urlDummy, urlDummy, false, false); final var config = new ApplicationConfig(); config.setHttpProxyHost(urlDummy); -- GitLab