From 30f127526ce2074ad4cf796834f82a22f286b5d2 Mon Sep 17 00:00:00 2001 From: Martin Vogel <martin.vogel@sinc.de> Date: Thu, 29 Sep 2022 14:18:22 +0200 Subject: [PATCH] refactor(config): move resource paths from config to static resource, move signingKey to subscriber --- .../api/config/ApplicationConfig.java | 23 +++++---------- .../fitconnect/api/config/ResourcePaths.java | 29 +++++++------------ .../api/config/SubscriberConfig.java | 1 + .../client/factory/ClientFactory.java | 5 ++-- .../client/ClientIntegrationTest.java | 13 +-------- .../client/factory/ClientFactoryTest.java | 12 +------- .../test-config-with-missing-env.yml | 12 +------- client/src/test/resources/test-config.yml | 12 +------- config.yml | 29 ++++--------------- .../fitconnect/core/SubmissionSender.java | 6 +--- .../fitconnect/core/RestEndpointBase.java | 12 -------- .../fitconnect/core/SubmissionSenderTest.java | 6 +--- 12 files changed, 32 insertions(+), 128 deletions(-) diff --git a/api/src/main/java/dev/fitko/fitconnect/api/config/ApplicationConfig.java b/api/src/main/java/dev/fitko/fitconnect/api/config/ApplicationConfig.java index 4f054d5da..0061adf8f 100644 --- a/api/src/main/java/dev/fitko/fitconnect/api/config/ApplicationConfig.java +++ b/api/src/main/java/dev/fitko/fitconnect/api/config/ApplicationConfig.java @@ -18,16 +18,11 @@ public class ApplicationConfig { @Builder.Default private String httpProxyHost = ""; - @Builder.Default private Integer httpProxyPort = 0; - @Builder.Default private Integer requestTimeoutInSeconds = 30; - @Builder.Default - private String privateSigningKeyPath = ""; - private SenderConfig senderConfig; private SubscriberConfig subscriberConfig; @@ -37,8 +32,6 @@ public class ApplicationConfig { private EnvironmentName activeEnvironment; - private ResourcePaths resourcePaths; - public Environment getEnvironmentByName(final EnvironmentName environmentName) { if (environments.containsKey(environmentName)) { return environments.get(environmentName); @@ -52,31 +45,29 @@ public class ApplicationConfig { } public String getOAuthTokenEndpoint() { - return getCurrentEnvironment().getAuthBaseUrl() + resourcePaths.getAuthTokenPath(); + return getCurrentEnvironment().getAuthBaseUrl() + ResourcePaths.AUTH_TOKEN_PATH; } - public String getSubmissionsEndpoint() { - return getSubmissionBaseUrl() + resourcePaths.getSubmissionsPath(); - } + public String getSubmissionsEndpoint() { return getSubmissionBaseUrl() + ResourcePaths.SUBMISSIONS_PATH;} public String getSubmissionEndpoint() { - return getSubmissionBaseUrl() + resourcePaths.getSubmissionPath(); + return getSubmissionBaseUrl() + ResourcePaths.SUBMISSION_PATH; } public String getAttachmentEndpoint() { - return getSubmissionBaseUrl() + resourcePaths.getSubmissionAttachmentPath(); + return getSubmissionBaseUrl() + ResourcePaths.SUBMISSION_ATTACHMENT_PATH; } public String getEventLogEndpoint() { - return getSubmissionBaseUrl() + resourcePaths.getEventLogPath(); + return getSubmissionBaseUrl() + ResourcePaths.EVENTS_PATH; } public String destinationEndpoint() { - return getSubmissionBaseUrl() + resourcePaths.getDestinationPath(); + return getSubmissionBaseUrl() + ResourcePaths.DESTINATIONS_PATH; } public String destinationKeyEndpoint() { - return getSubmissionBaseUrl() + resourcePaths.getDestinationKeyPath(); + return getSubmissionBaseUrl() + ResourcePaths.DESTINATIONS_KEY_PATH; } private String getSubmissionBaseUrl() { diff --git a/api/src/main/java/dev/fitko/fitconnect/api/config/ResourcePaths.java b/api/src/main/java/dev/fitko/fitconnect/api/config/ResourcePaths.java index 5fa64a5b3..5cf8a55bf 100644 --- a/api/src/main/java/dev/fitko/fitconnect/api/config/ResourcePaths.java +++ b/api/src/main/java/dev/fitko/fitconnect/api/config/ResourcePaths.java @@ -1,24 +1,15 @@ package dev.fitko.fitconnect.api.config; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +public final class ResourcePaths { -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class ResourcePaths { + private ResourcePaths() {} - private String authTokenPath; - - private String destinationPath; - private String destinationKeyPath; - - private String eventLogPath; - - private String submissionPath; - private String submissionsPath; - private String submissionAttachmentPath; + public static final String AUTH_TOKEN_PATH = "/token"; + public static final String DESTINATIONS_PATH = "/v1/destinations/{destinationId}"; + public static final String DESTINATIONS_KEY_PATH = "/v1/destinations/{destinationId}/keys/{kid}"; + public static final String EVENTS_PATH = "/v1/cases/{caseId}/events"; + public static final String SUBMISSION_PATH = "/v1/submissions/{submissionId}"; + public static final String SUBMISSIONS_PATH = "/v1/submissions"; + public static final String SUBMISSION_ATTACHMENT_PATH = "/v1/submissions/{submissionId}/attachments/{attachmentId}"; } + diff --git a/api/src/main/java/dev/fitko/fitconnect/api/config/SubscriberConfig.java b/api/src/main/java/dev/fitko/fitconnect/api/config/SubscriberConfig.java index 1c0b7517c..19ee09c7e 100644 --- a/api/src/main/java/dev/fitko/fitconnect/api/config/SubscriberConfig.java +++ b/api/src/main/java/dev/fitko/fitconnect/api/config/SubscriberConfig.java @@ -13,4 +13,5 @@ public class SubscriberConfig { private String clientId; private String clientSecret; private String privateDecryptionKeyPath; + private String privateSigningKeyPath; } diff --git a/client/src/main/java/dev/fitko/fitconnect/client/factory/ClientFactory.java b/client/src/main/java/dev/fitko/fitconnect/client/factory/ClientFactory.java index 73687399b..e00ceab11 100644 --- a/client/src/main/java/dev/fitko/fitconnect/client/factory/ClientFactory.java +++ b/client/src/main/java/dev/fitko/fitconnect/client/factory/ClientFactory.java @@ -123,8 +123,7 @@ public final class ClientFactory { final EventLogService eventLogService = getEventLogService(config, restTemplate, authService); final SubmissionService submissionService = getSubmissionService(config, restTemplate, authService); final DestinationService destinationService = getDestinationApiService(config, restTemplate, authService); - final SecurityEventService setService = getSecurityEventTokenService(config); - return new SubmissionSender(destinationService, submissionService, eventLogService, cryptoService, validator, setService); + return new SubmissionSender(destinationService, submissionService, eventLogService, cryptoService, validator); } private static OAuthService getSenderConfiguredAuthService(final ApplicationConfig config, final RestTemplate restTemplate) { @@ -171,7 +170,7 @@ public final class ClientFactory { } private static SecurityEventTokenService getSecurityEventTokenService(final ApplicationConfig config) { - final String signingKeyPath = config.getPrivateSigningKeyPath(); + final String signingKeyPath = config.getSubscriberConfig().getPrivateSigningKeyPath(); LOGGER.info("Reading private signing key from {} ", signingKeyPath); final String signingKey = readPath(signingKeyPath); if (signingKey == null) { 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 4bb098599..6c7fec6af 100644 --- a/client/src/test/java/dev/fitko/fitconnect/client/ClientIntegrationTest.java +++ b/client/src/test/java/dev/fitko/fitconnect/client/ClientIntegrationTest.java @@ -233,16 +233,7 @@ class ClientIntegrationTest { .clientId(System.getenv("SUBSCRIBER_CLIENT_ID")) .clientSecret(System.getenv("SUBSCRIBER_CLIENT_SECRET")) .privateDecryptionKeyPath("src/test/resources/private_decryption_test_key.json") - .build(); - - final var resourcePaths = ResourcePaths.builder() - .authTokenPath("/token") - .destinationPath("/v1/destinations/{destinationId}") - .destinationKeyPath("/v1/destinations/{destinationId}/keys/{kid}") - .eventLogPath("/v1/cases/{caseId}/events") - .submissionsPath("/v1/submissions") - .submissionPath("/v1/submissions/{submissionId}") - .submissionAttachmentPath("/v1/submissions/{submissionId}/attachments/{attachmentId}") + .privateSigningKeyPath("src/test/resources/private_test_signing_key.json") .build(); final var envName = new EnvironmentName(environmentName); @@ -251,9 +242,7 @@ class ClientIntegrationTest { .senderConfig(sender) .subscriberConfig(subscriber) .environments(Map.of(envName, env)) - .resourcePaths(resourcePaths) .activeEnvironment(envName) - .privateSigningKeyPath("src/test/resources/private_test_signing_key.json") .build(); } } 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 c061abf5b..88e1945e1 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 @@ -3,7 +3,6 @@ package dev.fitko.fitconnect.client.factory; import dev.fitko.fitconnect.api.config.ApplicationConfig; import dev.fitko.fitconnect.api.config.Environment; import dev.fitko.fitconnect.api.config.EnvironmentName; -import dev.fitko.fitconnect.api.config.ResourcePaths; import dev.fitko.fitconnect.api.config.SenderConfig; import dev.fitko.fitconnect.api.config.SubscriberConfig; import dev.fitko.fitconnect.api.exceptions.InitializationException; @@ -30,18 +29,13 @@ class ClientFactoryTest { final var sender = new SenderConfig("123", "abc"); - final var resourcePaths = new ResourcePaths(); - resourcePaths.setAuthTokenPath("/token"); - final var senderConfig = ApplicationConfig.builder() .httpProxyHost("https://proxy.fitco.de") .httpProxyPort(0) .environments(environments) .senderConfig(sender) - .resourcePaths(resourcePaths) .activeEnvironment(envName) .build(); - senderConfig.setPrivateSigningKeyPath("src/test/resources/private_test_signing_key.json"); assertNotNull(ClientFactory.senderClient(senderConfig)); } @@ -52,13 +46,11 @@ class ClientFactoryTest { final var envName = new EnvironmentName("DEV"); final var environments = Map.of(envName, new Environment("https://auth", "", true)); - final var resourcePaths = new ResourcePaths(); - resourcePaths.setAuthTokenPath("/token"); - final var subscriber = SubscriberConfig.builder() .clientSecret("123") .clientSecret("abc") .privateDecryptionKeyPath("src/test/resources/private_decryption_test_key.json") + .privateSigningKeyPath("src/test/resources/private_test_signing_key.json") .build(); final var subscriberConfig = ApplicationConfig.builder() @@ -66,9 +58,7 @@ class ClientFactoryTest { .httpProxyPort(0) .environments(environments) .subscriberConfig(subscriber) - .resourcePaths(resourcePaths) .activeEnvironment(envName) - .privateSigningKeyPath("src/test/resources/private_test_signing_key.json") .build(); assertNotNull(ClientFactory.subscriberClient(subscriberConfig)); diff --git a/client/src/test/resources/test-config-with-missing-env.yml b/client/src/test/resources/test-config-with-missing-env.yml index fc91a74a3..91964913b 100644 --- a/client/src/test/resources/test-config-with-missing-env.yml +++ b/client/src/test/resources/test-config-with-missing-env.yml @@ -6,8 +6,7 @@ subscriberConfig: clientId: "2" clientSecret: "456" privateDecryptionKeyPath: "client/src/test/java/resources/private_decryption_test_key.json" - -privateSigningKeyPath: "client/src/test/java/resources/private_test_signing_key.json" + privateSigningKeyPath: "client/src/test/java/resources/private_test_signing_key.json" activeEnvironment: enviroment_that_does_not_exist @@ -24,12 +23,3 @@ environments: authBaseUrl: "https://auth-test.fit-connect.fitko.dev" submissionBaseUrl: "https://submission-api-testing.fit-connect.fitko.dev" allowInsecurePublicKey: true - -resourcePaths: - authTokenPath: "/token" - destinationPath: "/v1/destinations/{destinationId}" - destinationKeyPath: "/v1/destinations/{destinationId}/keys/{kid}" - eventLogPath: "/v1/cases/{caseId}/events" - submissionPath: "/v1/submissions/{submissionId}" - submissionsPath: "/v1/submissions" - submissionAttachmentPath: "/v1/submissions/{submissionId}/attachments/{attachmentId}" \ No newline at end of file diff --git a/client/src/test/resources/test-config.yml b/client/src/test/resources/test-config.yml index 90a0a048c..32e9456e4 100644 --- a/client/src/test/resources/test-config.yml +++ b/client/src/test/resources/test-config.yml @@ -6,8 +6,7 @@ subscriberConfig: clientId: "2" clientSecret: "456" privateDecryptionKeyPath: "client/src/test/java/resources/private_decryption_test_key.json" - -privateSigningKeyPath: "client/src/test/java/resources/private_test_signing_key.json" + privateSigningKeyPath: "client/src/test/java/resources/private_test_signing_key.json" activeEnvironment: dev @@ -24,12 +23,3 @@ environments: authBaseUrl: "https://auth-test.fit-connect.fitko.dev" submissionBaseUrl: "https://submission-api-testing.fit-connect.fitko.dev" allowInsecurePublicKey: true - -resourcePaths: - authTokenPath: "/token" - destinationPath: "/v1/destinations/{destinationId}" - destinationKeyPath: "/v1/destinations/{destinationId}/keys/{kid}" - eventLogPath: "/v1/cases/{caseId}/events" - submissionPath: "/v1/submissions/{submissionId}" - submissionsPath: "/v1/submissions" - submissionAttachmentPath: "/v1/submissions/{submissionId}/attachments/{attachmentId}" \ No newline at end of file diff --git a/config.yml b/config.yml index c58c3f3a5..a10f0c797 100644 --- a/config.yml +++ b/config.yml @@ -23,12 +23,12 @@ subscriberConfig: # Path that references the private decryption key file privateDecryptionKeyPath: "path/to/decryption_key.json" -# Path that references the signing key file that signed SET-Events -privateSigningKeyPath: "path/to/signing_key.json" + # Path that references the signing key file that signed SET-Events + privateSigningKeyPath: "path/to/signing_key.json" # Name of the used environment (from environments config below). -# In this case the options are prod | dev -activeEnvironment: dev +# In this case the options are prod | testing +activeEnvironment: testing # Configured environments that can be added in the form: # @@ -44,7 +44,7 @@ environments: authBaseUrl: "https://auth-prod.fit-connect.fitko.dev" submissionBaseUrl: "https://submission-api-prod.fit-connect.fitko.dev" allowInsecurePublicKey: false - dev: + testing: authBaseUrl: "https://auth-testing.fit-connect.fitko.dev" submissionBaseUrl: "https://submission-api-testing.fit-connect.fitko.dev" allowInsecurePublicKey: true @@ -60,21 +60,4 @@ environments: # httpProxyHost: "https//:proxy.your-service.domain" # httpProxyPort: 8080 -# requestTimeoutInSeconds: 30 - -##################################################################### -# PREDEFINED SETTINGS # -# # -# YOU SHOULD ONLY CHANGE THESE SETTINGS IF YOU ARE FAMILIAR # -# WITH THE FIT-Connect INFRASTRUCTURE # -##################################################################### - -### REST Endpoints for FIT-Connect resources -resourcePaths: - authTokenPath: "/token" - destinationPath: "/v1/destinations/{destinationId}" - destinationKeyPath: "/v1/destinations/{destinationId}/keys/{kid}" - eventLogPath: "/v1/cases/{caseId}/events" - submissionPath: "/v1/submissions/{submissionId}" - submissionsPath: "/v1/submissions" - submissionAttachmentPath: "/v1/submissions/{submissionId}/attachments/{attachmentId}" \ No newline at end of file +# requestTimeoutInSeconds: 30 \ No newline at end of file diff --git a/core/src/main/java/dev/fitko/fitconnect/core/SubmissionSender.java b/core/src/main/java/dev/fitko/fitconnect/core/SubmissionSender.java index 8e6c97f14..89ba877fd 100644 --- a/core/src/main/java/dev/fitko/fitconnect/core/SubmissionSender.java +++ b/core/src/main/java/dev/fitko/fitconnect/core/SubmissionSender.java @@ -17,7 +17,6 @@ import dev.fitko.fitconnect.api.services.Sender; import dev.fitko.fitconnect.api.services.crypto.CryptoService; import dev.fitko.fitconnect.api.services.destination.DestinationService; import dev.fitko.fitconnect.api.services.events.EventLogService; -import dev.fitko.fitconnect.api.services.events.SecurityEventService; import dev.fitko.fitconnect.api.services.submission.SubmissionService; import dev.fitko.fitconnect.api.services.validation.ValidationService; import org.slf4j.Logger; @@ -35,21 +34,18 @@ public class SubmissionSender implements Sender { private final DestinationService destinationService; private final SubmissionService submissionService; private final EventLogService eventLogService; - private final SecurityEventService securityEventService; public SubmissionSender(final DestinationService destinationService, final SubmissionService submissionService, final EventLogService eventLogService, final CryptoService encryptionService, - final ValidationService validationService, - final SecurityEventService securityEventService) { + final ValidationService validationService) { this.destinationService = destinationService; this.submissionService = submissionService; this.eventLogService = eventLogService; this.cryptoService = encryptionService; this.validationService = validationService; - this.securityEventService = securityEventService; } @Override 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 be6f17abc..eecaa34a9 100644 --- a/core/src/test/java/dev/fitko/fitconnect/core/RestEndpointBase.java +++ b/core/src/test/java/dev/fitko/fitconnect/core/RestEndpointBase.java @@ -5,7 +5,6 @@ import com.github.tomakehurst.wiremock.client.WireMock; import dev.fitko.fitconnect.api.config.ApplicationConfig; import dev.fitko.fitconnect.api.config.Environment; import dev.fitko.fitconnect.api.config.EnvironmentName; -import dev.fitko.fitconnect.api.config.ResourcePaths; import java.util.Map; @@ -26,20 +25,9 @@ public abstract class RestEndpointBase { final var envName = new EnvironmentName("TESTING"); final var environments = Map.of(envName, new Environment(fakeBaseUrl, fakeBaseUrl, false)); - final var resourcePaths = ResourcePaths.builder() - .authTokenPath("/token") - .destinationPath("/v1/destinations/{destinationId}") - .destinationKeyPath("/v1/destinations/{destinationId}/keys/{kid}") - .eventLogPath("/v1/cases/{caseId}/events") - .submissionsPath("/v1/submissions") - .submissionPath("/v1/submissions/{submissionId}") - .submissionAttachmentPath("/v1/submissions/{submissionId}/attachments/{attachmentId}") - .build(); - return ApplicationConfig.builder() .environments(environments) .activeEnvironment(envName) - .resourcePaths(resourcePaths) .build(); } diff --git a/core/src/test/java/dev/fitko/fitconnect/core/SubmissionSenderTest.java b/core/src/test/java/dev/fitko/fitconnect/core/SubmissionSenderTest.java index b18410327..806a02054 100644 --- a/core/src/test/java/dev/fitko/fitconnect/core/SubmissionSenderTest.java +++ b/core/src/test/java/dev/fitko/fitconnect/core/SubmissionSenderTest.java @@ -24,7 +24,6 @@ import dev.fitko.fitconnect.api.services.destination.DestinationService; import dev.fitko.fitconnect.api.services.events.EventLogService; import dev.fitko.fitconnect.api.services.submission.SubmissionService; import dev.fitko.fitconnect.api.services.validation.ValidationService; -import dev.fitko.fitconnect.core.events.SecurityEventTokenService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -53,7 +52,6 @@ class SubmissionSenderTest { private EventLogService eventLogServiceMock; private CryptoService cryptoServiceMock; private ValidationService validationServiceMock; - private SecurityEventTokenService setEventServiceMock; private Sender underTest; @@ -64,15 +62,13 @@ class SubmissionSenderTest { this.eventLogServiceMock = mock(EventLogService.class); this.cryptoServiceMock = mock(CryptoService.class); this.validationServiceMock = mock(ValidationService.class); - this.setEventServiceMock = mock(SecurityEventTokenService.class); underTest = new SubmissionSender( destinationServiceMock, submissionServiceMock, eventLogServiceMock, cryptoServiceMock, - validationServiceMock, - setEventServiceMock + validationServiceMock ); } -- GitLab