diff options
author | kjaniak <kornel.janiak@nokia.com> | 2020-02-19 16:42:38 +0100 |
---|---|---|
committer | kjaniak <kornel.janiak@nokia.com> | 2020-02-26 09:03:21 +0100 |
commit | c45f39c7bd5c8fb56eeb4a20256aa9ffa315fea8 (patch) | |
tree | bd4d1ee232d71c8de3eca2d782f770475d336db7 | |
parent | 2edef3c2aaafba49439e20aa13eb647c67c781d5 (diff) |
Implementation of KeyPair generation
Issue-ID: AAF-996
Change-Id: I97626d122033127d5bb234d134c20d0b5a6d7c03
Signed-off-by: kjaniak <kornel.janiak@nokia.com>
29 files changed, 466 insertions, 123 deletions
diff --git a/certServiceClient/pom.xml b/certServiceClient/pom.xml index c6a17755..f092990a 100644 --- a/certServiceClient/pom.xml +++ b/certServiceClient/pom.xml @@ -58,7 +58,7 @@ <configuration> <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 +131,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 +155,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..ac1062a0 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,46 @@ 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 java.util.Optional; + +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 CertServiceClient(AppExitHandler appExitHandler) { + this.appExitHandler = appExitHandler; + } + + public void run() { + ClientConfiguration clientConfiguration; + CsrConfiguration csrConfiguration; + clientConfiguration = new ClientConfigurationFactory(new EnvsForClient()).create(); + csrConfiguration = new CsrConfigurationFactory(new EnvsForCsr()).create(); + + KeyPairFactory keyPairFactory = new KeyPairFactory(RSA_ENCRYPTION_ALGORITHM, KEY_SIZE); + Optional<KeyPair> keyPair = generateKeyPair(keyPairFactory); - public void run(String[] args) { - exit(0); + appExitHandler.exit(0); } - protected void exit(int statusCode){ - LOGGER.debug("Application exits with following exit code: " + statusCode); - System.exit(statusCode); + public Optional<KeyPair> generateKeyPair(KeyPairFactory keyPairFactory) { + try { + return Optional.of(keyPairFactory.create()); + } catch (ExitableException e) { + appExitHandler.exit(e.applicationExitCode()); + } + return Optional.empty(); } } 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..aed9f3fe --- /dev/null +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/api/ExitCode.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.api; + +public enum ExitCode { + 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/api/ExitableException.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/api/ExitableException.java new file mode 100644 index 00000000..e884d11a --- /dev/null +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/api/ExitableException.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.api; + +public abstract class ExitableException extends RuntimeException { + public ExitableException(Throwable e) { + super(e); + } + + 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..6ad6528a --- /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() { + 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..9592ac3e 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. * ================================================================================ @@ -18,9 +18,10 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.common; +package org.onap.aaf.certservice.client.configuration; -import org.onap.aaf.certservice.client.exceptions.ClientConfigurationException; + +import org.onap.aaf.certservice.client.configuration.exception.ClientConfigurationException; public class EnvProvider { public String readEnvVariable(String envVariable) throws ClientConfigurationException { 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/exceptions/CsrConfigurationException.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/exception/CsrConfigurationException.java index 83e38c32..f9373117 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/exceptions/CsrConfigurationException.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/configuration/exception/CsrConfigurationException.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * aaf-certservice-client * ================================================================================ * Copyright (C) 2020 Nokia. All rights reserved. * ================================================================================ @@ -17,12 +17,19 @@ * limitations under the License. * ============LICENSE_END========================================================= */ +package org.onap.aaf.certservice.client.configuration.exception; -package org.onap.aaf.certservice.client.exceptions; +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 class CsrConfigurationException extends RuntimeException { 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..28a5cf41 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,7 +18,9 @@ * ============LICENSE_END========================================================= */ -package org.onap.aaf.certservice.client.model; +package org.onap.aaf.certservice.client.configuration.factory; + +import org.onap.aaf.certservice.client.configuration.model.ConfigurationModel; public interface AbstractConfigurationFactory<T extends ConfigurationModel> { T create(); 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..22baab50 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,33 +16,54 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.onap.aaf.certservice.client; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; +import org.onap.aaf.certservice.client.certification.KeyPairFactory; + +import java.security.KeyPair; +import java.util.Optional; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.onap.aaf.certservice.client.certification.EncryptionAlgorithmConstants.KEY_SIZE; +import static org.onap.aaf.certservice.client.certification.EncryptionAlgorithmConstants.RSA_ENCRYPTION_ALGORITHM; @ExtendWith(MockitoExtension.class) class CertServiceClientTest { + private static final int DUMMY_EXIT_CODE = 888; @Spy - CertServiceClient certServiceClient = new CertServiceClient(); + AppExitHandler appExitHandler = new AppExitHandler(); + + @Test + public void shouldExitWithDefinedExitCode_onGenerateKeyPairCallWhereExitableExceptionIsThrown() { + // given + KeyPairFactory keyPairFactory = mock(KeyPairFactory.class); + when(keyPairFactory.create()).thenThrow(new DummyExitableException()); + doNothing().when(appExitHandler).exit(DUMMY_EXIT_CODE); + CertServiceClient certServiceClient = new CertServiceClient(appExitHandler); + // when + Optional<KeyPair> keyPair = certServiceClient.generateKeyPair(keyPairFactory); + // then + verify(appExitHandler).exit(DUMMY_EXIT_CODE); + assertThat(keyPair).isEmpty(); + } - // 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. @Test - public void shouldExitWithZero_onApplicationSuccessfulFinish() { //NOSONAR + public void shouldReturnKeyPair_onGenerateKeyPairCall() { // given - String[] params = {""}; - doNothing().when(certServiceClient).exit(0); + KeyPairFactory keyPairFactory = new KeyPairFactory(RSA_ENCRYPTION_ALGORITHM, KEY_SIZE); + CertServiceClient certServiceClient = new CertServiceClient(appExitHandler); // when - certServiceClient.run(params); + Optional<KeyPair> keyPair = certServiceClient.generateKeyPair(keyPairFactory); // then - verify(certServiceClient).exit(0); + assertThat(keyPair).hasValueSatisfying(value -> assertThat(value).isInstanceOf(KeyPair.class)); } }
\ 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..b92660fa --- /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() { + // 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..7cf9e0ce 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,7 +42,6 @@ public class ClientConfigurationFactoryTest { private EnvsForClient envsForClient = mock(EnvsForClient.class); - @Test void create_shouldReturnSuccessWhenAllVariablesAreSetAndValid() { // given 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..4a4eb247 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; @@ -13,7 +13,7 @@ ============LICENSE_END========================================================= --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> @@ -57,19 +57,17 @@ <docker-maven-plugin.version>0.33.0</docker-maven-plugin.version> <junit.version>5.5.2</junit.version> <mockito-junit-jupiter.version>2.17.0</mockito-junit-jupiter.version> - <maven-shade-plugin.version>3.2.2</maven-shade-plugin.version> <!-- Docker --> <skipDockerPush>true</skipDockerPush> <maven.build.timestamp.format>yyyyMMdd'T'HHmmss</maven.build.timestamp.format> + <maven-shade-plugin.version>3.2.2</maven-shade-plugin.version> <docker-image.registry>${onap.nexus.dockerregistry.daily}</docker-image.registry> <docker-image.namespace>onap</docker-image.namespace> <docker-image.name>${project.groupId}.${project.artifactId}</docker-image.name> <docker-image.latest>${project.version}</docker-image.latest> <version>${project.version}</version> <docker.http_proxy/> - <immutables.version>2.7.5</immutables.version> - </properties> @@ -100,24 +98,6 @@ </configuration> </plugin> <plugin> - <groupId>org.springdoc</groupId> - <artifactId>springdoc-openapi-maven-plugin</artifactId> - <version>${springdoc-openapi-maven-plugin.version}</version> - <executions> - <execution> - <phase>integration-test</phase> - <goals> - <goal>generate</goal> - </goals> - </execution> - </executions> - <configuration> - <apiDocsUrl>${springdoc-openapi-maven-plugin.apiDocsUrl}</apiDocsUrl> - <outputFileName>api-docs.json</outputFileName> - <outputDir>${project.build.directory}</outputDir> - </configuration> - </plugin> - <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot-starter.version}</version> @@ -293,7 +273,6 @@ <version>${mockito-core.version}</version> <scope>test</scope> </dependency> - <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-junit-jupiter</artifactId> |