From de8154f512a3b4926d2fb9fafbcc64a44d2a7c90 Mon Sep 17 00:00:00 2001 From: Jan Zickermann <jan.zickermann@dataport.de> Date: Tue, 4 Mar 2025 13:38:47 +0100 Subject: [PATCH] OZG-4097 Remove validation of api client configuration --- .../osiv2/config/ApiClientConfiguration.java | 44 +----- .../config/ApiClientConfigurationTest.java | 142 ------------------ 2 files changed, 4 insertions(+), 182 deletions(-) delete mode 100644 src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfigurationTest.java diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java index b0b34b0..6b28b57 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java +++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java @@ -1,13 +1,5 @@ package de.ozgcloud.nachrichten.postfach.osiv2.config; -import java.util.Optional; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import jakarta.validation.ConstraintViolation; -import jakarta.validation.Validator; - import org.apache.hc.client5.http.auth.AuthScope; import org.apache.hc.client5.http.auth.UsernamePasswordCredentials; import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider; @@ -36,7 +28,6 @@ import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestClient; -import de.ozgcloud.common.errorhandling.TechnicalException; import de.ozgcloud.nachrichten.postfach.osiv2.gen.ApiClient; import de.ozgcloud.nachrichten.postfach.osiv2.gen.api.MessageExchangeApi; import de.ozgcloud.nachrichten.postfach.osiv2.gen.api.QuarantineApi; @@ -54,8 +45,6 @@ public class ApiClientConfiguration { private final Osi2PostfachProperties.ApiConfiguration apiConfiguration; private final Osi2PostfachProperties.ProxyConfiguration proxyConfiguration; - private final Validator validator; - private static final String CLIENT_REGISTRATION_ID = "osi2"; @Bean @@ -72,9 +61,8 @@ public class ApiClientConfiguration { @SneakyThrows ApiClient apiClient() { var apiClient = new ApiClient(restClient()); - LOG.debug("Setting api client base path to {}", apiConfiguration.getUrl()); + LOG.info("Setting api client base path to {}", apiConfiguration.getUrl()); apiClient.setBasePath(apiConfiguration.getUrl()); - validateConfiguration(); return apiClient; } @@ -95,7 +83,7 @@ public class ApiClientConfiguration { private ClientHttpRequestFactory createProxyRequestFactory() { var requestFactory = new HttpComponentsClientHttpRequestFactory(); if (proxyConfiguration.isEnabled()) { - LOG.debug("Using proxy configuration: {}:{}", proxyConfiguration.getHost(), proxyConfiguration.getPort()); + LOG.info("Using proxy configuration: {}:{}", proxyConfiguration.getHost(), proxyConfiguration.getPort()); requestFactory.setHttpClient( HttpClientBuilder.create() .setProxy(new HttpHost(proxyConfiguration.getHost(), proxyConfiguration.getPort())) @@ -111,7 +99,7 @@ public class ApiClientConfiguration { var username = proxyConfiguration.getUsername(); var password = proxyConfiguration.getPassword(); if (username != null && password != null) { - LOG.debug("Using proxy authentication with username {}", username); + LOG.info("Using proxy authentication with username {}", username); credentialsProvider.setCredentials(new AuthScope(proxyConfiguration.getHost(), proxyConfiguration.getPort()), new UsernamePasswordCredentials(username, password.toCharArray())); } @@ -135,7 +123,7 @@ public class ApiClientConfiguration { } private ClientRegistration osi2ClientRegistration() { - LOG.debug("Creating client registration with clientId: {}, tokenUri: {}, scope: {}, resource: {}", authConfiguration.getClientId(), + LOG.info("Creating client registration with clientId: {}, tokenUri: {}, scope: {}, resource: {}", authConfiguration.getClientId(), authConfiguration.getTokenUri(), authConfiguration.getScope(), authConfiguration.getResource()); return ClientRegistration.withRegistrationId(CLIENT_REGISTRATION_ID) .clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST) @@ -182,28 +170,4 @@ public class ApiClientConfiguration { }); } - void validateConfiguration() { - String violationMessage = Stream.<Optional<String>>of(getErrorMessageOfViolations(authConfiguration), - getErrorMessageOfViolations(apiConfiguration), - proxyConfiguration.isEnabled() ? getErrorMessageOfViolations(proxyConfiguration) : Optional.empty() - ).flatMap(Optional::stream) - .collect(Collectors.joining(System.lineSeparator())); - - if (!violationMessage.isEmpty()) { - throw new TechnicalException( - "Configuration of api client is invalid:%s%s".formatted(System.lineSeparator(), violationMessage)); - } - } - - private <T> Optional<String> getErrorMessageOfViolations(T configuration) { - return formatConstraintValidation(validator.validate(configuration)) - .map(message -> "%s is invalid: %s".formatted(configuration.getClass().getSimpleName(), message)); - } - - private <T> Optional<String> formatConstraintValidation(Set<ConstraintViolation<T>> constraints) { - return constraints.stream() - .map(violation -> String.format("%s: %s", violation.getPropertyPath(), violation.getMessage())) - .reduce((a, b) -> a + ", " + b); - } - } diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfigurationTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfigurationTest.java deleted file mode 100644 index 0917893..0000000 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfigurationTest.java +++ /dev/null @@ -1,142 +0,0 @@ -package de.ozgcloud.nachrichten.postfach.osiv2.config; - -import static org.assertj.core.api.Assertions.*; - -import java.util.List; -import java.util.stream.Stream; - -import jakarta.validation.Validation; -import jakarta.validation.Validator; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - -import de.ozgcloud.common.errorhandling.TechnicalException; - -class ApiClientConfigurationTest { - - private static final Validator VALIDATOR; - - static { - try (var factory = Validation.buildDefaultValidatorFactory()) { - VALIDATOR = factory.getValidator(); - } - } - - @DisplayName("validate configuration") - @Nested - class TestValidateConfiguration { - - @DisplayName("should return if is valid") - @Test - void shouldReturnIfIsValid() { - var validator = new ApiClientConfiguration( - createAuthConfiguration(), - createApiConfiguration(), - createProxyConfiguration(), - VALIDATOR - ); - - assertThatCode(validator::validateConfiguration).doesNotThrowAnyException(); - } - - @DisplayName("should return if is valid with disabled proxy") - @Test - void shouldReturnIfIsValidWithDisabledProxy() { - var validator = new ApiClientConfiguration( - createAuthConfiguration(), - createApiConfiguration(), - createDisabledProxyConfiguration(), - VALIDATOR - ); - - assertThatCode(validator::validateConfiguration).doesNotThrowAnyException(); - } - - static Stream<Arguments> invalidValidatorConfigurations() { - return Stream.of( - Arguments.of( - new Osi2PostfachProperties.AuthConfiguration(), - createApiConfiguration(), - createProxyConfiguration() - ), - Arguments.of( - createAuthConfiguration(), - new Osi2PostfachProperties.ApiConfiguration(), - createProxyConfiguration() - ), - Arguments.of( - createAuthConfiguration(), - createApiConfiguration(), - createInvalidProxyConfiguration() - ) - ); - } - - @DisplayName("should throw exception if is invalid") - @ParameterizedTest - @MethodSource("invalidValidatorConfigurations") - void shouldThrowExceptionIfIsInvalid( - Osi2PostfachProperties.AuthConfiguration authConfiguration, - Osi2PostfachProperties.ApiConfiguration apiConfiguration, - Osi2PostfachProperties.ProxyConfiguration proxyConfiguration - ) { - var validator = new ApiClientConfiguration( - authConfiguration, - apiConfiguration, - proxyConfiguration, - VALIDATOR - ); - - assertThatThrownBy(validator::validateConfiguration) - .isInstanceOf(TechnicalException.class) - .hasMessageContaining("is invalid"); - } - - private static Osi2PostfachProperties.ApiConfiguration createApiConfiguration() { - var conf = new Osi2PostfachProperties.ApiConfiguration(); - conf.setUrl("http://localhost:8080"); - conf.setTenant("tenant"); - conf.setNameIdentifier("abc"); - return conf; - } - - private static Osi2PostfachProperties.AuthConfiguration createAuthConfiguration() { - var conf = new Osi2PostfachProperties.AuthConfiguration(); - conf.setClientId("clientId"); - conf.setClientSecret("clientSecret"); - conf.setScope(List.of("scope")); - conf.setTokenUri("http://localhost:8081"); - conf.setResource("resource"); - return conf; - } - - private static Osi2PostfachProperties.ProxyConfiguration createProxyConfiguration() { - var conf = new Osi2PostfachProperties.ProxyConfiguration(); - conf.setEnabled(true); - conf.setHost("localhost"); - conf.setPort(8080); - return conf; - } - - private static Osi2PostfachProperties.ProxyConfiguration createDisabledProxyConfiguration() { - var conf = new Osi2PostfachProperties.ProxyConfiguration(); - conf.setEnabled(false); - return conf; - } - - private static Osi2PostfachProperties.ProxyConfiguration createInvalidProxyConfiguration() { - var conf = new Osi2PostfachProperties.ProxyConfiguration(); - conf.setEnabled(true); - conf.setHost("localhost"); - conf.setPort(null); - return conf; - } - - } - -} \ No newline at end of file -- GitLab