diff options
6 files changed, 77 insertions, 14 deletions
diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/conversion/ArtifactsCreatorProvider.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/conversion/ArtifactsCreatorProvider.java index ac1eda1a..4ed86a4d 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/conversion/ArtifactsCreatorProvider.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/conversion/ArtifactsCreatorProvider.java @@ -19,8 +19,7 @@ package org.onap.aaf.certservice.client.certification.conversion; public enum ArtifactsCreatorProvider { - - P12 { + P12("P12") { @Override ArtifactsCreator create(String outputPath) { return new PKCS12ArtifactsCreator( @@ -29,21 +28,31 @@ public enum ArtifactsCreatorProvider { new PemToPKCS12Converter()); } }, - JKS { + JKS("JKS") { @Override ArtifactsCreator create(String outputPath) { return null; } }, - PEM { + PEM("PEM") { @Override ArtifactsCreator create(String outputPath) { return null; } }; + private final String name; + + ArtifactsCreatorProvider(String name) { + this.name = name; + } + public static ArtifactsCreator getCreator(String outputType, String outputPath) { - return valueOf(outputType).create(outputPath); + return valueOf(outputType).create(outputPath); + } + + public String getName() { + return name; } abstract ArtifactsCreator create(String outputPath); diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/AbstractConfigurationFactory.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/AbstractConfigurationFactory.java index b72ef7a1..70faa6b4 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/AbstractConfigurationFactory.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/AbstractConfigurationFactory.java @@ -20,6 +20,8 @@ package org.onap.aaf.certservice.client.configuration.factory; + +import org.onap.aaf.certservice.client.certification.conversion.ArtifactsCreatorProvider; import org.onap.aaf.certservice.client.configuration.exception.ClientConfigurationException; import org.onap.aaf.certservice.client.configuration.exception.CsrConfigurationException; import org.onap.aaf.certservice.client.configuration.model.ConfigurationModel; @@ -55,6 +57,12 @@ public abstract class AbstractConfigurationFactory<T extends ConfigurationModel> return Arrays.asList(Locale.getISOCountries()).contains(country); } + public boolean isOutputTypeValid(String outputType) { + return Arrays.stream(ArtifactsCreatorProvider.values()) + .map(ArtifactsCreatorProvider::getName) + .anyMatch(name -> name.equals(outputType)); + } + private boolean isPortNumberPresent(String stringToCheck) { return Pattern.compile(":[0-9]{1,5}").matcher(stringToCheck).find(); } diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/ClientConfigurationFactory.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/ClientConfigurationFactory.java index 793799e2..d8498d84 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/ClientConfigurationFactory.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/ClientConfigurationFactory.java @@ -27,6 +27,8 @@ import org.onap.aaf.certservice.client.configuration.model.ClientConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Optional; + public class ClientConfigurationFactory extends AbstractConfigurationFactory<ClientConfiguration> { private static final Logger LOGGER = LoggerFactory.getLogger(ClientConfigurationFactory.class); @@ -41,6 +43,7 @@ public class ClientConfigurationFactory extends AbstractConfigurationFactory<Cli ClientConfiguration configuration = new ClientConfiguration(); + envsForClient.getUrlToCertService() .map(configuration::setUrlToCertService); @@ -57,8 +60,13 @@ public class ClientConfigurationFactory extends AbstractConfigurationFactory<Cli .map(configuration::setCaName) .orElseThrow(() -> new ClientConfigurationException(ClientConfigurationEnvs.CA_NAME + " is invalid.")); - envsForClient.getOutputType() - .map(configuration::setOutputType); + Optional<String> outputType = envsForClient.getOutputType(); + + if (outputType.isPresent()) { + outputType.filter(this::isOutputTypeValid) + .map(configuration::setOutputType) + .orElseThrow(() -> new ClientConfigurationException(ClientConfigurationEnvs.OUTPUT_TYPE + " is invalid.")); + } LOGGER.info("Successful validation of Client configuration. Configuration data: {}", configuration.toString()); diff --git a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/factory/AbstractConfigurationFactoryTest.java b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/factory/AbstractConfigurationFactoryTest.java index c5955555..6273e2a6 100644 --- a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/factory/AbstractConfigurationFactoryTest.java +++ b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/factory/AbstractConfigurationFactoryTest.java @@ -28,7 +28,7 @@ import static org.mockito.Mockito.mock; public class AbstractConfigurationFactoryTest { - private AbstractConfigurationFactory cut = mock(AbstractConfigurationFactory.class, Mockito.CALLS_REAL_METHODS); + private final AbstractConfigurationFactory cut = mock(AbstractConfigurationFactory.class, Mockito.CALLS_REAL_METHODS); @ParameterizedTest @ValueSource(strings = {"/var/log", "/", "/var/log/", "/second_var", "/second-var"}) @@ -77,4 +77,16 @@ public class AbstractConfigurationFactoryTest { public void shouldRejectInvalidCommonName(String commonName) { assertThat(cut.isCommonNameValid(commonName)).isFalse(); } + + @ParameterizedTest + @ValueSource(strings = {"JKS", "P12", "PEM"}) + public void shouldAcceptValidOutputType(String outputType) { + assertThat(cut.isOutputTypeValid(outputType)).isTrue(); + } + + @ParameterizedTest + @ValueSource(strings = {"jks", "p12", "pem", "", "pass", "!@$#pp"}) + public void shouldRejectInvalidOutputType(String outputType) { + assertThat(cut.isOutputTypeValid(outputType)).isFalse(); + } } diff --git a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/model/ClientConfigurationFactoryTest.java b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/factory/ClientConfigurationFactoryTest.java index f4f92495..7239b21a 100644 --- a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/model/ClientConfigurationFactoryTest.java +++ b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/factory/ClientConfigurationFactoryTest.java @@ -18,13 +18,13 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.configuration.model; +package org.onap.aaf.certservice.client.configuration.factory; import org.junit.jupiter.api.Test; import org.onap.aaf.certservice.client.configuration.ClientConfigurationEnvs; import org.onap.aaf.certservice.client.configuration.EnvsForClient; import org.onap.aaf.certservice.client.configuration.exception.ClientConfigurationException; -import org.onap.aaf.certservice.client.configuration.factory.ClientConfigurationFactory; +import org.onap.aaf.certservice.client.configuration.model.ClientConfiguration; import java.util.Optional; @@ -42,9 +42,13 @@ public class ClientConfigurationFactoryTest { private final String URL_TO_CERT_SERVICE_DEFAULT = "https://aaf-cert-service:8443/v1/certificate/"; private final String CA_NAME_INVALID = "caaaftest2#$"; private final String OUTPUT_PATH_INVALID = "/opt//app/osaaf"; + private final String OUTPUT_TYPE_VALID = "JKS"; + private final String OUTPUT_TYPE_INVALID = "JKSS"; + private final String OUTPUT_TYPE_DEFAULT = "P12"; private EnvsForClient envsForClient = mock(EnvsForClient.class); + @Test void create_shouldReturnSuccessWhenAllVariablesAreSetAndValid() throws ClientConfigurationException { // given @@ -52,15 +56,18 @@ public class ClientConfigurationFactoryTest { when(envsForClient.getOutputPath()).thenReturn(Optional.of(OUTPUT_PATH_VALID)); when(envsForClient.getRequestTimeOut()).thenReturn(Optional.of(TIME_OUT_VALID)); when(envsForClient.getUrlToCertService()).thenReturn(Optional.of(URL_TO_CERT_SERVICE_VALID)); + when(envsForClient.getOutputType()).thenReturn(Optional.of(OUTPUT_TYPE_VALID)); // when ClientConfiguration configuration = new ClientConfigurationFactory(envsForClient).create(); + System.out.println(configuration.toString()); // then assertThat(configuration.getCaName()).isEqualTo(CA_NAME_VALID); assertThat(configuration.getRequestTimeout()).isEqualTo(Integer.valueOf(TIME_OUT_VALID)); assertThat(configuration.getCertsOutputPath()).isEqualTo(OUTPUT_PATH_VALID); assertThat(configuration.getUrlToCertService()).isEqualTo(URL_TO_CERT_SERVICE_VALID); + assertThat(configuration.getOutputType()).isEqualTo(OUTPUT_TYPE_VALID); } @Test @@ -77,6 +84,7 @@ public class ClientConfigurationFactoryTest { assertThat(configuration.getRequestTimeout()).isEqualTo(Integer.valueOf(TIME_OUT_VALID)); assertThat(configuration.getCertsOutputPath()).isEqualTo(OUTPUT_PATH_VALID); assertThat(configuration.getUrlToCertService()).isEqualTo(URL_TO_CERT_SERVICE_DEFAULT); + assertThat(configuration.getOutputType()).isEqualTo(OUTPUT_TYPE_DEFAULT); } @Test @@ -87,7 +95,7 @@ public class ClientConfigurationFactoryTest { // when ClientConfigurationFactory configurationFactory = new ClientConfigurationFactory(envsForClient); - // when/then + // then assertThatExceptionOfType(ClientConfigurationException.class) .isThrownBy(configurationFactory::create) .withMessageContaining(ClientConfigurationEnvs.CA_NAME + " is invalid."); @@ -121,9 +129,27 @@ public class ClientConfigurationFactoryTest { // when ClientConfigurationFactory configurationFactory = new ClientConfigurationFactory(envsForClient); - // when/then + //then assertThatExceptionOfType(ClientConfigurationException.class) .isThrownBy(configurationFactory::create) .withMessageContaining(ClientConfigurationEnvs.OUTPUT_PATH + " is invalid."); } + + @Test + void create_shouldReturnClientExceptionWhenOutputTypeIsInvalid() { + // given + when(envsForClient.getCaName()).thenReturn(Optional.of(CA_NAME_VALID)); + when(envsForClient.getOutputPath()).thenReturn(Optional.of(OUTPUT_PATH_VALID)); + when(envsForClient.getRequestTimeOut()).thenReturn(Optional.of(TIME_OUT_VALID)); + when(envsForClient.getUrlToCertService()).thenReturn(Optional.of(URL_TO_CERT_SERVICE_VALID)); + when(envsForClient.getOutputType()).thenReturn(Optional.of(OUTPUT_TYPE_INVALID)); + + // when + ClientConfigurationFactory configurationFactory = new ClientConfigurationFactory(envsForClient); + + //then + assertThatExceptionOfType(ClientConfigurationException.class) + .isThrownBy(configurationFactory::create) + .withMessageContaining(ClientConfigurationEnvs.OUTPUT_TYPE + " is invalid."); + } } diff --git a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/model/CsrConfigurationFactoryTest.java b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/factory/CsrConfigurationFactoryTest.java index 6ab1bffc..2edff2f1 100644 --- a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/model/CsrConfigurationFactoryTest.java +++ b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/factory/CsrConfigurationFactoryTest.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.configuration.model; +package org.onap.aaf.certservice.client.configuration.factory; import org.assertj.core.api.Condition; import org.junit.jupiter.api.BeforeEach; @@ -26,7 +26,7 @@ import org.junit.jupiter.api.Test; import org.onap.aaf.certservice.client.configuration.CsrConfigurationEnvs; import org.onap.aaf.certservice.client.configuration.EnvsForCsr; import org.onap.aaf.certservice.client.configuration.exception.CsrConfigurationException; -import org.onap.aaf.certservice.client.configuration.factory.CsrConfigurationFactory; +import org.onap.aaf.certservice.client.configuration.model.CsrConfiguration; import java.util.Optional; |