diff options
Diffstat (limited to 'certServiceClient')
28 files changed, 458 insertions, 114 deletions
diff --git a/certServiceClient/pom.xml b/certServiceClient/pom.xml index c6a17755..5392163c 100644 --- a/certServiceClient/pom.xml +++ b/certServiceClient/pom.xml @@ -56,9 +56,20 @@ <goal>shade</goal> </goals> <configuration> + <createDependencyReducedPom>false</createDependencyReducedPom> + <filters> + <filter> + <artifact>*:*</artifact> + <excludes> + <exclude>META-INF/*.SF</exclude> + <exclude>META-INF/*.DSA</exclude> + <exclude>META-INF/*.RSA</exclude> + </excludes> + </filter> + </filters> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> - <mainClass>org.onap.aaf.certservice.client.CertServiceClientApp</mainClass> + <mainClass>org.onap.aaf.certservice.client.MainApp</mainClass> </transformer> </transformers> </configuration> @@ -131,12 +142,12 @@ <dependencies> <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> + <groupId>org.bouncycastle</groupId> + <artifactId>bcpkix-jdk15on</artifactId> </dependency> <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> @@ -155,6 +166,10 @@ <artifactId>mockito-junit-jupiter</artifactId> </dependency> <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/AppExitHandler.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/AppExitHandler.java new file mode 100644 index 00000000..3e33a48b --- /dev/null +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/AppExitHandler.java @@ -0,0 +1,31 @@ +/*============LICENSE_START======================================================= + * aaf-certservice-client + * ================================================================================ + * Copyright (C) 2020 Nokia. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aaf.certservice.client; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class AppExitHandler { + public static final Logger LOGGER = LoggerFactory.getLogger(AppExitHandler.class); + + public void exit(int exitCode) { + LOGGER.debug("Application exits with following exit code: " + exitCode); + System.exit(exitCode); + } +}
\ No newline at end of file diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/CertServiceClient.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/CertServiceClient.java index 6e83a40e..f8867846 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/CertServiceClient.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/CertServiceClient.java @@ -19,18 +19,38 @@ package org.onap.aaf.certservice.client; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.onap.aaf.certservice.client.api.ExitableException; +import org.onap.aaf.certservice.client.certification.KeyPairFactory; +import org.onap.aaf.certservice.client.configuration.EnvsForClient; +import org.onap.aaf.certservice.client.configuration.EnvsForCsr; +import org.onap.aaf.certservice.client.configuration.factory.ClientConfigurationFactory; +import org.onap.aaf.certservice.client.configuration.factory.CsrConfigurationFactory; +import org.onap.aaf.certservice.client.configuration.model.ClientConfiguration; +import org.onap.aaf.certservice.client.configuration.model.CsrConfiguration; + +import java.security.KeyPair; + +import static org.onap.aaf.certservice.client.api.ExitCode.SUCCESS_EXIT_CODE; +import static org.onap.aaf.certservice.client.certification.EncryptionAlgorithmConstants.KEY_SIZE; +import static org.onap.aaf.certservice.client.certification.EncryptionAlgorithmConstants.RSA_ENCRYPTION_ALGORITHM; public class CertServiceClient { - private static final Logger LOGGER = LoggerFactory.getLogger(CertServiceClient.class); + private AppExitHandler appExitHandler; - public void run(String[] args) { - exit(0); + public CertServiceClient(AppExitHandler appExitHandler) { + this.appExitHandler = appExitHandler; } - protected void exit(int statusCode){ - LOGGER.debug("Application exits with following exit code: " + statusCode); - System.exit(statusCode); + public void run() { + KeyPairFactory keyPairFactory = new KeyPairFactory(RSA_ENCRYPTION_ALGORITHM, KEY_SIZE); + try { + ClientConfiguration clientConfiguration = new ClientConfigurationFactory(new EnvsForClient()).create(); + CsrConfiguration csrConfiguration = new CsrConfigurationFactory(new EnvsForCsr()).create(); + KeyPair keyPair = keyPairFactory.create(); + } catch (ExitableException e) { + appExitHandler.exit(e.applicationExitCode()); + } + appExitHandler.exit(SUCCESS_EXIT_CODE.getValue()); } + } diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/CertServiceClientApp.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/MainApp.java index adbb02ad..6a29241f 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/CertServiceClientApp.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/MainApp.java @@ -20,9 +20,9 @@ package org.onap.aaf.certservice.client; -public class CertServiceClientApp { +public class MainApp { public static void main(String[] args) { - CertServiceClient certServiceClient = new CertServiceClient(); - certServiceClient.run(args); + CertServiceClient certServiceClient = new CertServiceClient(new AppExitHandler()); + certServiceClient.run(); } }
\ No newline at end of file diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/api/ExitCode.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/api/ExitCode.java new file mode 100644 index 00000000..295738f4 --- /dev/null +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/api/ExitCode.java @@ -0,0 +1,36 @@ +/*============LICENSE_START======================================================= + * aaf-certservice-client + * ================================================================================ + * Copyright (C) 2020 Nokia. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aaf.certservice.client.api; + +public enum ExitCode { + SUCCESS_EXIT_CODE(0), + CLIENT_CONFIGURATION_EXCEPTION(1), + CSR_CONFIGURATION_EXCEPTION(2), + KEY_PAIR_GENERATION_EXCEPTION(3); + + private final int value; + + ExitCode(int value) { + this.value = value; + } + + public int getValue() { + return value; + } +} diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/exceptions/CsrConfigurationException.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/api/ExitableException.java index 83e38c32..51981a48 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/exceptions/CsrConfigurationException.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/api/ExitableException.java @@ -1,6 +1,5 @@ -/* - * ============LICENSE_START======================================================= - * PROJECT +/*============LICENSE_START======================================================= + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -17,12 +16,16 @@ * limitations under the License. * ============LICENSE_END========================================================= */ +package org.onap.aaf.certservice.client.api; -package org.onap.aaf.certservice.client.exceptions; - +public abstract class ExitableException extends Exception { + public ExitableException(Throwable e) { + super(e); + } -public class CsrConfigurationException extends RuntimeException { - public CsrConfigurationException(String message) { + public ExitableException(String message) { super(message); } + + public abstract int applicationExitCode(); } diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/exceptions/ClientConfigurationException.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/EncryptionAlgorithmConstants.java index c895e176..2afdbee0 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/exceptions/ClientConfigurationException.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/EncryptionAlgorithmConstants.java @@ -1,6 +1,5 @@ -/* - * ============LICENSE_START======================================================= - * PROJECT +/*============LICENSE_START======================================================= + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -17,12 +16,9 @@ * limitations under the License. * ============LICENSE_END========================================================= */ +package org.onap.aaf.certservice.client.certification; -package org.onap.aaf.certservice.client.exceptions; - - -public class ClientConfigurationException extends RuntimeException { - public ClientConfigurationException(String message) { - super(message); - } +public class EncryptionAlgorithmConstants { + public static final String RSA_ENCRYPTION_ALGORITHM = "RSA"; + public static final int KEY_SIZE = 2048; } diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/KeyPairFactory.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/KeyPairFactory.java new file mode 100644 index 00000000..64136863 --- /dev/null +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/KeyPairFactory.java @@ -0,0 +1,54 @@ +/*============LICENSE_START======================================================= + * aaf-certservice-client + * ================================================================================ + * Copyright (C) 2020 Nokia. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aaf.certservice.client.certification; + +import org.onap.aaf.certservice.client.certification.exception.KeyPairGenerationException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.NoSuchAlgorithmException; + +public class KeyPairFactory { + + private final Logger LOGGER = LoggerFactory.getLogger(KeyPairFactory.class); + private final String encryptionAlgorithm; + private final int keySize; + + public KeyPairFactory(String encryptionAlgorithm, int keySize) { + this.encryptionAlgorithm = encryptionAlgorithm; + this.keySize = keySize; + } + + public KeyPair create() throws KeyPairGenerationException { + try { + return createKeyPairGenerator().generateKeyPair(); + } catch (NoSuchAlgorithmException e) { + LOGGER.error("Generation of KeyPair failed, exception message: " + e.getMessage()); + throw new KeyPairGenerationException(e); + } + } + + private KeyPairGenerator createKeyPairGenerator() throws NoSuchAlgorithmException { + KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(encryptionAlgorithm); + keyPairGenerator.initialize(keySize); + return keyPairGenerator; + } +} diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/exception/KeyPairGenerationException.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/exception/KeyPairGenerationException.java new file mode 100644 index 00000000..6af69889 --- /dev/null +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/exception/KeyPairGenerationException.java @@ -0,0 +1,34 @@ +/*============LICENSE_START======================================================= + * aaf-certservice-client + * ================================================================================ + * Copyright (C) 2020 Nokia. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aaf.certservice.client.certification.exception; + +import org.onap.aaf.certservice.client.api.ExitCode; +import org.onap.aaf.certservice.client.api.ExitableException; + +public class KeyPairGenerationException extends ExitableException { + private static final ExitCode EXIT_CODE = ExitCode.KEY_PAIR_GENERATION_EXCEPTION; + + public KeyPairGenerationException(Throwable e) { + super(e); + } + + public int applicationExitCode() { + return EXIT_CODE.getValue(); + } +} diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/common/ClientConfigurationEnvs.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/ClientConfigurationEnvs.java index 57e46be9..779e65bb 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/common/ClientConfigurationEnvs.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/ClientConfigurationEnvs.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.common; +package org.onap.aaf.certservice.client.configuration; public enum ClientConfigurationEnvs { REQUEST_URL, diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/common/CsrConfigurationEnvs.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/CsrConfigurationEnvs.java index 5913b73b..d1cfcd5a 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/common/CsrConfigurationEnvs.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/CsrConfigurationEnvs.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.common; +package org.onap.aaf.certservice.client.configuration; public enum CsrConfigurationEnvs { COMMON_NAME, diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/common/EnvProvider.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/EnvProvider.java index fce2568b..beccd383 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/common/EnvProvider.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/EnvProvider.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -17,13 +17,10 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - -package org.onap.aaf.certservice.client.common; - -import org.onap.aaf.certservice.client.exceptions.ClientConfigurationException; +package org.onap.aaf.certservice.client.configuration; public class EnvProvider { - public String readEnvVariable(String envVariable) throws ClientConfigurationException { + public String readEnvVariable(String envVariable) { return System.getProperty(envVariable); } } diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/common/EnvValidationUtils.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/EnvValidationUtils.java index bd71c3cd..b87df5be 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/common/EnvValidationUtils.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/EnvValidationUtils.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.common; +package org.onap.aaf.certservice.client.configuration; import java.util.regex.Pattern; @@ -61,7 +61,6 @@ public final class EnvValidationUtils { return Pattern.compile("[h][t][t][p][:][/][/]|[h][t][t][p][s][:][/][/]").matcher(stringToCheck).find(); } - public static Boolean isSpecialCharsPresent(String stringToCheck) { return Pattern.compile("[~#@*$+%!()?/{}<>\\|_^]").matcher(stringToCheck).find(); } diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/common/EnvsForClient.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/EnvsForClient.java index 1ba32a3f..aad64f5b 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/common/EnvsForClient.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/EnvsForClient.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -17,18 +17,16 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - -package org.onap.aaf.certservice.client.common; +package org.onap.aaf.certservice.client.configuration; public class EnvsForClient { + private static final EnvProvider envProvider = new EnvProvider(); + private final String urlToCertService; + private final String requestTimeOut; + private final String outputPath; + private final String caName; - private String urlToCertService; - private String requestTimeOut; - private String outputPath; - private String caName; - - EnvsForClient() { - EnvProvider envProvider = new EnvProvider(); + public EnvsForClient() { this.urlToCertService = envProvider.readEnvVariable(ClientConfigurationEnvs.REQUEST_URL.toString()); this.requestTimeOut = envProvider.readEnvVariable(ClientConfigurationEnvs.REQUEST_TIMEOUT.toString()); this.outputPath = envProvider.readEnvVariable(ClientConfigurationEnvs.OUTPUT_PATH.toString()); diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/common/EnvsForCsr.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/EnvsForCsr.java index 1f6c9c96..0c948d3f 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/common/EnvsForCsr.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/EnvsForCsr.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -17,10 +17,11 @@ * limitations under the License. * ============LICENSE_END========================================================= */ +package org.onap.aaf.certservice.client.configuration; -package org.onap.aaf.certservice.client.common; public class EnvsForCsr { + private final EnvProvider envProvider = new EnvProvider(); private String commonName; private String organization; private String organizationUnit; @@ -29,8 +30,7 @@ public class EnvsForCsr { private String country; private String subjectAlternativesName; - EnvsForCsr() { - EnvProvider envProvider = new EnvProvider(); + public EnvsForCsr() { this.commonName = envProvider.readEnvVariable(CsrConfigurationEnvs.COMMON_NAME.toString()); this.organization = envProvider.readEnvVariable(CsrConfigurationEnvs.ORGANIZATION.toString()); this.organizationUnit = envProvider.readEnvVariable(CsrConfigurationEnvs.ORGANIZATION_UNIT.toString()); @@ -64,7 +64,6 @@ public class EnvsForCsr { return country; } - public String getSubjectAlternativesName() { return subjectAlternativesName; } diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/exception/ClientConfigurationException.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/exception/ClientConfigurationException.java new file mode 100644 index 00000000..5d968f43 --- /dev/null +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/exception/ClientConfigurationException.java @@ -0,0 +1,35 @@ +/* + * ============LICENSE_START======================================================= + * aaf-certservice-client + * ================================================================================ + * Copyright (C) 2020 Nokia. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aaf.certservice.client.configuration.exception; + +import org.onap.aaf.certservice.client.api.ExitCode; +import org.onap.aaf.certservice.client.api.ExitableException; + +public class ClientConfigurationException extends ExitableException { + private static final ExitCode EXIT_CODE = ExitCode.CLIENT_CONFIGURATION_EXCEPTION; + + public ClientConfigurationException(String message) { + super(message); + } + + public int applicationExitCode() { + return EXIT_CODE.getValue(); + } +} diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/exception/CsrConfigurationException.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/exception/CsrConfigurationException.java new file mode 100644 index 00000000..f9373117 --- /dev/null +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/exception/CsrConfigurationException.java @@ -0,0 +1,35 @@ +/* + * ============LICENSE_START======================================================= + * aaf-certservice-client + * ================================================================================ + * Copyright (C) 2020 Nokia. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aaf.certservice.client.configuration.exception; + +import org.onap.aaf.certservice.client.api.ExitCode; +import org.onap.aaf.certservice.client.api.ExitableException; + +public class CsrConfigurationException extends ExitableException { + private static final ExitCode EXIT_CODE = ExitCode.CSR_CONFIGURATION_EXCEPTION; + + public CsrConfigurationException(String message) { + super(message); + } + + public int applicationExitCode() { + return EXIT_CODE.getValue(); + } +} diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/model/AbstractConfigurationFactory.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/AbstractConfigurationFactory.java index 6adbc038..2464cc58 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/model/AbstractConfigurationFactory.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/AbstractConfigurationFactory.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -18,8 +18,12 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.model; +package org.onap.aaf.certservice.client.configuration.factory; + +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; public interface AbstractConfigurationFactory<T extends ConfigurationModel> { - T create(); + T create() throws ClientConfigurationException, CsrConfigurationException; } diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/model/ClientConfigurationFactory.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/ClientConfigurationFactory.java index 43c6838c..96b1fb8b 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/model/ClientConfigurationFactory.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/ClientConfigurationFactory.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -18,25 +18,25 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.model; +package org.onap.aaf.certservice.client.configuration.factory; -import org.onap.aaf.certservice.client.common.ClientConfigurationEnvs; -import org.onap.aaf.certservice.client.common.EnvValidationUtils; -import org.onap.aaf.certservice.client.common.EnvsForClient; -import org.onap.aaf.certservice.client.exceptions.ClientConfigurationException; +import org.onap.aaf.certservice.client.configuration.ClientConfigurationEnvs; +import org.onap.aaf.certservice.client.configuration.EnvValidationUtils; +import org.onap.aaf.certservice.client.configuration.EnvsForClient; +import org.onap.aaf.certservice.client.configuration.exception.ClientConfigurationException; +import org.onap.aaf.certservice.client.configuration.model.ClientConfiguration; import java.util.Optional; -class ClientConfigurationFactory implements AbstractConfigurationFactory<ClientConfiguration> { +public class ClientConfigurationFactory implements AbstractConfigurationFactory<ClientConfiguration> { private final EnvsForClient envsForClient; - ClientConfigurationFactory(EnvsForClient envsForClient) { + public ClientConfigurationFactory(EnvsForClient envsForClient) { this.envsForClient = envsForClient; } - @Override public ClientConfiguration create() throws ClientConfigurationException { diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/model/CsrConfigurationFactory.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/CsrConfigurationFactory.java index 1b3a252b..61e1b3c3 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/model/CsrConfigurationFactory.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/factory/CsrConfigurationFactory.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -18,21 +18,22 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.model; +package org.onap.aaf.certservice.client.configuration.factory; -import org.onap.aaf.certservice.client.common.CsrConfigurationEnvs; -import org.onap.aaf.certservice.client.common.EnvValidationUtils; -import org.onap.aaf.certservice.client.common.EnvsForCsr; -import org.onap.aaf.certservice.client.exceptions.CsrConfigurationException; +import org.onap.aaf.certservice.client.configuration.CsrConfigurationEnvs; +import org.onap.aaf.certservice.client.configuration.EnvValidationUtils; +import org.onap.aaf.certservice.client.configuration.EnvsForCsr; +import org.onap.aaf.certservice.client.configuration.exception.CsrConfigurationException; +import org.onap.aaf.certservice.client.configuration.model.CsrConfiguration; import java.util.Optional; -class CsrConfigurationFactory implements AbstractConfigurationFactory<CsrConfiguration> { +public class CsrConfigurationFactory implements AbstractConfigurationFactory<CsrConfiguration> { private final EnvsForCsr envsForCsr; - CsrConfigurationFactory(EnvsForCsr envsForCsr) { + public CsrConfigurationFactory(EnvsForCsr envsForCsr) { this.envsForCsr = envsForCsr; } diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/model/ClientConfiguration.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/model/ClientConfiguration.java index 4dda61ea..d6496b7a 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/model/ClientConfiguration.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/model/ClientConfiguration.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -18,9 +18,9 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.model; +package org.onap.aaf.certservice.client.configuration.model; -public class ClientConfiguration implements ConfigurationModel{ +public class ClientConfiguration implements ConfigurationModel { Integer DEFAULT_TIMEOUT_MS = 30000; String DEFAULT_REQUEST_URL = "http://cert-service:8080/v1/certificate/"; diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/model/ConfigurationModel.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/model/ConfigurationModel.java index ca7deb72..15c22233 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/model/ConfigurationModel.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/model/ConfigurationModel.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.model; +package org.onap.aaf.certservice.client.configuration.model; public interface ConfigurationModel { } diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/model/CsrConfiguration.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/model/CsrConfiguration.java index 27b6d931..30caf42a 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/model/CsrConfiguration.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/model/CsrConfiguration.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.model; +package org.onap.aaf.certservice.client.configuration.model; public class CsrConfiguration implements ConfigurationModel { diff --git a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/CertServiceClientTest.java b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/CertServiceClientTest.java index 12c2db06..9e733017 100644 --- a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/CertServiceClientTest.java +++ b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/CertServiceClientTest.java @@ -16,7 +16,6 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.onap.aaf.certservice.client; import org.junit.jupiter.api.Test; @@ -26,23 +25,23 @@ import org.mockito.junit.jupiter.MockitoExtension; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.verify; +import static org.onap.aaf.certservice.client.api.ExitCode.CLIENT_CONFIGURATION_EXCEPTION; +import static org.onap.aaf.certservice.client.api.ExitCode.SUCCESS_EXIT_CODE; @ExtendWith(MockitoExtension.class) class CertServiceClientTest { @Spy - CertServiceClient certServiceClient = new CertServiceClient(); - - // Sonar check for this test disabled due to lack of assertion in test. - // Intention of this test is to check if app runs without exiting Java. + AppExitHandler appExitHandler = new AppExitHandler(); @Test - public void shouldExitWithZero_onApplicationSuccessfulFinish() { //NOSONAR + public void shouldExitWithDefinedExitCode_onRunCallWhenNoEnvsPresent() { // given - String[] params = {""}; - doNothing().when(certServiceClient).exit(0); + doNothing().when(appExitHandler).exit(CLIENT_CONFIGURATION_EXCEPTION.getValue()); + doNothing().when(appExitHandler).exit(SUCCESS_EXIT_CODE.getValue()); + CertServiceClient certServiceClient = new CertServiceClient(appExitHandler); // when - certServiceClient.run(params); + certServiceClient.run(); // then - verify(certServiceClient).exit(0); + verify(appExitHandler).exit(CLIENT_CONFIGURATION_EXCEPTION.getValue()); + verify(appExitHandler).exit(SUCCESS_EXIT_CODE.getValue()); } - }
\ No newline at end of file diff --git a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/DummyExitableException.java b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/DummyExitableException.java new file mode 100644 index 00000000..80a2f723 --- /dev/null +++ b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/DummyExitableException.java @@ -0,0 +1,35 @@ +/*============LICENSE_START======================================================= + * aaf-certservice-client + * ================================================================================ + * Copyright (C) 2020 Nokia. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aaf.certservice.client; + +import org.onap.aaf.certservice.client.api.ExitableException; + +class DummyExitableException extends ExitableException { + private static final int EXIT_CODE = 888; + + DummyExitableException() { + super("This is Test Exitable Exception"); + } + + @Override + public int applicationExitCode() { + return EXIT_CODE; + } + +} diff --git a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/certification/KeyPairFactoryTest.java b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/certification/KeyPairFactoryTest.java new file mode 100644 index 00000000..6a4741a2 --- /dev/null +++ b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/certification/KeyPairFactoryTest.java @@ -0,0 +1,52 @@ +/*============LICENSE_START======================================================= + * aaf-certservice-client + * ================================================================================ + * Copyright (C) 2020 Nokia. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aaf.certservice.client.certification; + +import org.junit.jupiter.api.Test; +import org.onap.aaf.certservice.client.certification.exception.KeyPairGenerationException; + +import java.security.KeyPair; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +class KeyPairFactoryTest { + private static final String NOT_EXISTING_ENCRYPTION_ALGORITHM = "FAKE_ALGORITHM"; + + @Test + public void shouldProvideKeyPair_whenCreateKeyPairCalledWithCorrectArguments() throws KeyPairGenerationException { + // given + KeyPairFactory keyPairFactory = new KeyPairFactory(EncryptionAlgorithmConstants.RSA_ENCRYPTION_ALGORITHM, + EncryptionAlgorithmConstants.KEY_SIZE); + // when + KeyPair keyPair = keyPairFactory.create(); + // then + assertThat(keyPair).isInstanceOf(KeyPair.class); + } + + @Test + public void shouldThrowKeyPairGenerationException_whenCreateTryCalledOnNotExistingAlgorithm() { + // given + KeyPairFactory keyPairFactory = new KeyPairFactory(NOT_EXISTING_ENCRYPTION_ALGORITHM, + EncryptionAlgorithmConstants.KEY_SIZE); + // when, then + assertThatThrownBy(() -> keyPairFactory.create()).isInstanceOf(KeyPairGenerationException.class); + } + +}
\ No newline at end of file diff --git a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/model/ClientConfigurationFactoryTest.java b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/model/ClientConfigurationFactoryTest.java index e21f2510..f355de1a 100644 --- a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/model/ClientConfigurationFactoryTest.java +++ b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/model/ClientConfigurationFactoryTest.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -18,12 +18,13 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.model; +package org.onap.aaf.certservice.client.configuration.model; import org.junit.jupiter.api.Test; -import org.onap.aaf.certservice.client.common.ClientConfigurationEnvs; -import org.onap.aaf.certservice.client.common.EnvsForClient; -import org.onap.aaf.certservice.client.exceptions.ClientConfigurationException; +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 static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; @@ -41,9 +42,8 @@ public class ClientConfigurationFactoryTest { private EnvsForClient envsForClient = mock(EnvsForClient.class); - @Test - void create_shouldReturnSuccessWhenAllVariablesAreSetAndValid() { + void create_shouldReturnSuccessWhenAllVariablesAreSetAndValid() throws ClientConfigurationException { // given when(envsForClient.getCaName()).thenReturn(CA_NAME_VALID); when(envsForClient.getOutputPath()).thenReturn(OUTPUT_PATH_VALID); @@ -61,7 +61,7 @@ public class ClientConfigurationFactoryTest { } @Test - void create_shouldReturnSuccessWhenDefaultVariablesAreNotSet() { + void create_shouldReturnSuccessWhenDefaultVariablesAreNotSet() throws ClientConfigurationException { // given when(envsForClient.getCaName()).thenReturn(CA_NAME_VALID); when(envsForClient.getOutputPath()).thenReturn(OUTPUT_PATH_VALID); diff --git a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/model/CsrConfigurationFactoryTest.java b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/model/CsrConfigurationFactoryTest.java index 39d44592..d6bf431b 100644 --- a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/model/CsrConfigurationFactoryTest.java +++ b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/configuration/model/CsrConfigurationFactoryTest.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -18,12 +18,13 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.model; +package org.onap.aaf.certservice.client.configuration.model; import org.junit.jupiter.api.Test; -import org.onap.aaf.certservice.client.common.CsrConfigurationEnvs; -import org.onap.aaf.certservice.client.common.EnvsForCsr; -import org.onap.aaf.certservice.client.exceptions.CsrConfigurationException; +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 static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; @@ -45,7 +46,7 @@ public class CsrConfigurationFactoryTest { @Test - void create_shouldReturnSuccessWhenAllVariablesAreSetAndValid() { + void create_shouldReturnSuccessWhenAllVariablesAreSetAndValid() throws CsrConfigurationException { // given when(envsForCsr.getCommonName()).thenReturn(COMMON_NAME_VALID); when(envsForCsr.getSubjectAlternativesName()).thenReturn(SANS_VALID); @@ -69,7 +70,7 @@ public class CsrConfigurationFactoryTest { } @Test - void create_shouldReturnSuccessWhenNotRequiredVariablesAreNotSet() { + void create_shouldReturnSuccessWhenNotRequiredVariablesAreNotSet() throws CsrConfigurationException { // given when(envsForCsr.getCommonName()).thenReturn(COMMON_NAME_VALID); when(envsForCsr.getState()).thenReturn(STATE_VALID); |