From e64680cd62b468a25b763457c2e1d31414081c29 Mon Sep 17 00:00:00 2001 From: kjaniak Date: Wed, 8 Jul 2020 15:19:33 +0200 Subject: Add subfolders creation Added new not existing subfolders creation in output path to allow CMPv2 integration. Top up version to 1.2.0 Issue-ID: DCAEGEN2-2252 Change-Id: I59f8dfa7fddc5eb3a3fdd80ce18eb3e2272e1bfb Signed-off-by: kjaniak --- .../certification/ArtifactsCreatorProvider.java | 2 +- .../ConvertedArtifactsCreatorFactory.java | 2 +- .../certification/writer/CertFileWriter.java | 16 +++++++- .../certification/writer/CertFileWriterTest.java | 48 ++++++++++------------ 4 files changed, 38 insertions(+), 30 deletions(-) (limited to 'certServiceClient/src') diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/ArtifactsCreatorProvider.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/ArtifactsCreatorProvider.java index 06a4cc6e..954f3d30 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/ArtifactsCreatorProvider.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/ArtifactsCreatorProvider.java @@ -40,7 +40,7 @@ public enum ArtifactsCreatorProvider { PEM("PEM") { @Override ArtifactsCreator create(String destPath) { - return new PemArtifactsCreator(new CertFileWriter(destPath), new PrivateKeyToPemEncoder()); + return new PemArtifactsCreator(CertFileWriter.createWithDir(destPath), new PrivateKeyToPemEncoder()); } }; diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/conversion/ConvertedArtifactsCreatorFactory.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/conversion/ConvertedArtifactsCreatorFactory.java index 586e2952..bda796eb 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/conversion/ConvertedArtifactsCreatorFactory.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/conversion/ConvertedArtifactsCreatorFactory.java @@ -28,7 +28,7 @@ public class ConvertedArtifactsCreatorFactory { public static ConvertedArtifactsCreator createConverter(String destPath, String fileExtension, String keyStoreType) { return new ConvertedArtifactsCreator( - new CertFileWriter(destPath), + CertFileWriter.createWithDir(destPath), new RandomPasswordGenerator(), new PemConverter(keyStoreType), fileExtension); diff --git a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/writer/CertFileWriter.java b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/writer/CertFileWriter.java index 2829517c..fec3ebd3 100644 --- a/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/writer/CertFileWriter.java +++ b/certServiceClient/src/main/java/org/onap/aaf/certservice/client/certification/writer/CertFileWriter.java @@ -23,6 +23,7 @@ import org.onap.aaf.certservice.client.certification.exception.CertFileWriterExc import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Path; @@ -32,10 +33,15 @@ public class CertFileWriter { private static final Logger LOGGER = LoggerFactory.getLogger(CertFileWriter.class); private final String destPath; - public CertFileWriter(String destPath) { + private CertFileWriter(String destPath) { this.destPath = destPath; } + public static CertFileWriter createWithDir(String destPath) { + createDirIfNotExists(destPath); + return new CertFileWriter(destPath); + } + public void saveData(byte[] data, String filename) throws CertFileWriterException { LOGGER.debug("Attempt to save file {} in path {}", filename, destPath); try (FileOutputStream outputStream = new FileOutputStream(Path.of(destPath, filename).toString())) { @@ -45,4 +51,12 @@ public class CertFileWriter { throw new CertFileWriterException(e); } } + + private static void createDirIfNotExists(String destPath) { + File destFolderPath = new File(destPath); + if (!destFolderPath.exists()) { + LOGGER.debug("Destination path not exists, subdirectories are created"); + destFolderPath.mkdirs(); + } + } } diff --git a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/certification/writer/CertFileWriterTest.java b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/certification/writer/CertFileWriterTest.java index 61c4d835..c45876ec 100644 --- a/certServiceClient/src/test/java/org/onap/aaf/certservice/client/certification/writer/CertFileWriterTest.java +++ b/certServiceClient/src/test/java/org/onap/aaf/certservice/client/certification/writer/CertFileWriterTest.java @@ -20,8 +20,8 @@ package org.onap.aaf.certservice.client.certification.writer; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import org.onap.aaf.certservice.client.certification.exception.CertFileWriterException; import java.io.File; @@ -35,48 +35,42 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; class CertFileWriterTest { - private static final String RESOURCES_PATH = "src/test/resources"; - private static final String OUTPUT_PATH = RESOURCES_PATH + "/generatedFiles/"; + private static final String RESOURCES_PATH = "src/test/resources/"; + private static final String OUTPUT_PATH = RESOURCES_PATH + "generatedFiles/"; + private static final String NOT_EXISTING_OUTPUT_PATH = OUTPUT_PATH + "directoryDoesNotExist/"; private static final String TRUSTSTORE_P12 = "truststore.p12"; - private static final String ERROR_MESSAGE = "java.io.FileNotFoundException: src/test/resources/generatedFiles/thisPathDoesNotExist/truststore.p12 (No such file or directory)"; - private File outputDirectory = new File(OUTPUT_PATH); - @BeforeEach - void createDirectory() { - outputDirectory.mkdir(); - } - @AfterEach void cleanUpFiles() { - List.of(outputDirectory.listFiles()).forEach(f -> f.delete()); - outputDirectory.delete(); + deleteDirectoryRecursive(outputDirectory); } - @Test - void certFileWriterShouldCreateFilesWithDataInGivenLocation() + @ParameterizedTest + @ValueSource(strings = {OUTPUT_PATH, NOT_EXISTING_OUTPUT_PATH}) + void certFileWriterShouldCreateFilesWithDataInGivenLocation(String outputPath) throws IOException, CertFileWriterException { // given + File truststore = new File(outputPath + TRUSTSTORE_P12); + CertFileWriter certFileWriter = CertFileWriter.createWithDir(outputPath); final byte[] data = new byte[]{-128, 1, 2, 3, 127}; - File truststore = new File(OUTPUT_PATH + TRUSTSTORE_P12); - CertFileWriter certFileWriter = new CertFileWriter(OUTPUT_PATH); // when certFileWriter.saveData(data, TRUSTSTORE_P12); // then assertThat(truststore.exists()).isTrue(); - assertThat(Files.readAllBytes(Path.of(OUTPUT_PATH + TRUSTSTORE_P12))).isEqualTo(data); + assertThat(Files.readAllBytes(Path.of(outputPath + TRUSTSTORE_P12))).isEqualTo(data); } - @Test - void certFileWriterShouldThrowCertFileWriterExceptionWhenOutputDirectoryDoesNotExist() { - // given - final byte[] data = new byte[]{-128, 1, 2, 3, 0}; - CertFileWriter certFileWriter = new CertFileWriter(OUTPUT_PATH + "thisPathDoesNotExist/"); - - // when then - assertThatThrownBy(() -> certFileWriter.saveData(data, TRUSTSTORE_P12)) - .isInstanceOf(CertFileWriterException.class).hasMessage(ERROR_MESSAGE); + private void deleteDirectoryRecursive(File dirForDeletion) { + List.of(dirForDeletion.listFiles()).forEach(file -> { + if (file.isDirectory()) { + deleteDirectoryRecursive(file); + } + file.delete(); + }); + dirForDeletion.delete(); } + } -- cgit 1.2.3-korg