Refactor truststore merger logic
[oom/platform/cert-service.git] / trustStoreMerger / src / test / java / org / onap / oom / truststoremerger / merger / model / TestCertificateProvider.java
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.oom.truststoremerger.certification.file;
+package org.onap.oom.truststoremerger.merger.model;
+
+import static org.onap.oom.truststoremerger.api.CertificateConstants.JKS_TYPE;
+import static org.onap.oom.truststoremerger.api.CertificateConstants.PKCS12_TYPE;
 
 import java.io.File;
 import java.io.IOException;
@@ -25,26 +28,22 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.StandardCopyOption;
-import org.onap.oom.truststoremerger.certification.file.exception.KeystoreInstanceException;
-import org.onap.oom.truststoremerger.certification.file.exception.LoadTruststoreException;
-import org.onap.oom.truststoremerger.certification.file.model.JavaTruststore;
-import org.onap.oom.truststoremerger.certification.file.model.PemTruststore;
-import org.onap.oom.truststoremerger.certification.file.provider.JavaCertificateStoreController;
-import org.onap.oom.truststoremerger.certification.file.provider.CertificateStoreControllerFactory;
-import org.onap.oom.truststoremerger.certification.file.provider.PemCertificateController;
+import org.onap.oom.truststoremerger.merger.exception.KeystoreInstanceException;
+import org.onap.oom.truststoremerger.merger.exception.LoadTruststoreException;
+import org.onap.oom.truststoremerger.merger.exception.PasswordReaderException;
 
-public class TestCertificateProvider {
+public final class TestCertificateProvider {
 
     public static final String SAMPLE_P12_TRUSTSTORE_FILE_PATH = "src/test/resources/truststore-p12.p12";
-    public static final String SAMPLE_P12_TRUSTSTORE_PASSWORD = "88y9v5D8H3SG6bZWRVHDfOAo";
+    public static final String SAMPLE_P12_TRUSTSTORE_PASSWORD_PATH = "src/test/resources/truststore-p12.pass";
     public static final String TMP_P12_TRUSTSTORE_FILE_PATH = "src/test/resources/tmp-truststore-p12.p12";
 
     public static final String SAMPLE_P12_KEYSTORE_FILE_PATH = "src/test/resources/keystore.p12";
-    public static final String SAMPLE_P12_KEYSTORE_PASSWORD = "Foh49MJNYI7S_pEzE9gvUDSu";
+    public static final String SAMPLE_P12_KEYSTORE_PASSWORD_PATH = "src/test/resources/keystore.pass";
 
     public static final String SAMPLE_JKS_TRUSTSTORE_FILE_PATH = "src/test/resources/truststore-jks.jks";
     public static final String SAMPLE_JKS_TRUSTSTORE_UNIQUE_ALIAS_FILE_PATH = "src/test/resources/truststore-jks-uniq.jks";
-    public static final String SAMPLE_JKS_TRUSTSTORE_PASSWORD = "EOyuFbuYDyq_EhpboM72RHua";
+    public static final String SAMPLE_JKS_TRUSTSTORE_PASSWORD_PATH = "src/test/resources/truststore-jks.pass";
     public static final String TMP_JKS_TRUSTSTORE_FILE_PATH = "src/test/resources/tmp-truststore-jks.jks";
 
     public static final String SAMPLE_PEM_TRUSTSTORE_FILE_PATH = "src/test/resources/truststore.pem";
@@ -52,99 +51,95 @@ public class TestCertificateProvider {
     public static final String TMP_PEM_TRUSTSTORE_FILE_PATH = "src/test/resources/tmp-truststore.pem";
     public static final String SAMPLE_PEM_TRUSTSTORE_WITH_PRIVATE_KEY_FILE_PATH = "src/test/resources/truststore-with-private-key.pem";
 
-    private static final CertificateStoreControllerFactory certificateStoreControllerFactory = new CertificateStoreControllerFactory();
+    public static final String PEM_FILE_PATH = "src/test/resources/truststore.pem";
+    public static final String PEM_BACKUP_FILE_PATH = "src/test/resources/truststore.pem.bak";
 
-    public static JavaTruststore getSampleP12Truststore() throws LoadTruststoreException, KeystoreInstanceException {
-        return createP12TruststoreInstance(SAMPLE_P12_TRUSTSTORE_FILE_PATH, SAMPLE_P12_TRUSTSTORE_PASSWORD);
+    private TestCertificateProvider() {
     }
 
-    public static JavaTruststore getSampleP12Keystore() throws LoadTruststoreException, KeystoreInstanceException {
-        return createP12TruststoreInstance(SAMPLE_P12_KEYSTORE_FILE_PATH, SAMPLE_P12_KEYSTORE_PASSWORD);
+    public static Truststore getSampleP12Truststore()
+        throws LoadTruststoreException, KeystoreInstanceException, PasswordReaderException {
+        return createJavaTruststore(SAMPLE_P12_TRUSTSTORE_FILE_PATH, SAMPLE_P12_TRUSTSTORE_PASSWORD_PATH, PKCS12_TYPE);
     }
 
-    public static JavaTruststore createTmpP12TruststoreFile()
-        throws IOException, LoadTruststoreException, KeystoreInstanceException {
-        copyFile(SAMPLE_P12_TRUSTSTORE_FILE_PATH, TMP_P12_TRUSTSTORE_FILE_PATH);
-        return createP12TruststoreInstance(TMP_P12_TRUSTSTORE_FILE_PATH, SAMPLE_P12_TRUSTSTORE_PASSWORD);
+    public static Truststore getSampleP12Keystore()
+        throws LoadTruststoreException, KeystoreInstanceException, PasswordReaderException {
+        return createJavaTruststore(SAMPLE_P12_KEYSTORE_FILE_PATH, SAMPLE_P12_KEYSTORE_PASSWORD_PATH, PKCS12_TYPE);
     }
 
-    public static JavaTruststore getTmpP12TruststoreFile() throws LoadTruststoreException, KeystoreInstanceException {
-        return createP12TruststoreInstance(TMP_P12_TRUSTSTORE_FILE_PATH, SAMPLE_P12_TRUSTSTORE_PASSWORD);
-    }
-
-    private static JavaTruststore createP12TruststoreInstance(String filePath, String password)
-        throws LoadTruststoreException, KeystoreInstanceException {
-        File certFile = getFile(filePath);
-        JavaCertificateStoreController storeController = certificateStoreControllerFactory
-            .createLoadedPkcs12CertificateStoreController(certFile, password);
-        return new JavaTruststore(certFile, storeController);
+    public static Truststore createTmpP12TruststoreFile()
+        throws IOException, LoadTruststoreException, KeystoreInstanceException, PasswordReaderException {
+        copyFile(SAMPLE_P12_TRUSTSTORE_FILE_PATH, TMP_P12_TRUSTSTORE_FILE_PATH);
+        return createJavaTruststore(TMP_P12_TRUSTSTORE_FILE_PATH, SAMPLE_P12_TRUSTSTORE_PASSWORD_PATH, PKCS12_TYPE);
     }
 
-    public static PemTruststore getSamplePemTruststoreFile() {
+    public static Truststore getSamplePemTruststoreFile() {
         return getPemTruststoreInstance(SAMPLE_PEM_TRUSTSTORE_FILE_PATH);
     }
 
-    public static PemTruststore getEmptyPemTruststoreFile() {
-        return getPemTruststoreInstance(EMPTY_PEM_TRUSTSTORE_FILE_PATH);
-    }
-
-    public static PemTruststore createEmptyTmpPemTruststoreFile() throws IOException {
+    public static Truststore createEmptyTmpPemTruststoreFile()
+        throws IOException {
         copyFile(EMPTY_PEM_TRUSTSTORE_FILE_PATH, TMP_PEM_TRUSTSTORE_FILE_PATH);
         return getPemTruststoreInstance(TMP_PEM_TRUSTSTORE_FILE_PATH);
     }
 
-    public static PemTruststore createTmpPemTruststoreFile() throws IOException {
+    public static Truststore createTmpPemTruststoreFile()
+        throws IOException {
         copyFile(SAMPLE_PEM_TRUSTSTORE_FILE_PATH, TMP_PEM_TRUSTSTORE_FILE_PATH);
         return getPemTruststoreInstance(TMP_PEM_TRUSTSTORE_FILE_PATH);
     }
 
-    public static PemTruststore getTmpPemTruststoreFile() {
-        return getPemTruststoreInstance(TMP_PEM_TRUSTSTORE_FILE_PATH);
-    }
-
-    public static PemTruststore getPemWithPrivateKeyTruststoreFile() {
-        return getPemTruststoreInstance(SAMPLE_PEM_TRUSTSTORE_WITH_PRIVATE_KEY_FILE_PATH);
-    }
-
     public static String getExpectedPemCertificateAsString() throws IOException {
         Path samplePemFilePath = Paths.get(SAMPLE_PEM_TRUSTSTORE_FILE_PATH);
         return Files.readString(samplePemFilePath);
     }
 
-    public static JavaTruststore getSampleJksTruststoreFile()
-        throws LoadTruststoreException, KeystoreInstanceException {
-        return createJksTruststoreInstance(SAMPLE_JKS_TRUSTSTORE_FILE_PATH, SAMPLE_JKS_TRUSTSTORE_PASSWORD);
+    public static Truststore getSampleJksTruststoreFile()
+        throws LoadTruststoreException, KeystoreInstanceException, PasswordReaderException {
+        return createJavaTruststore(SAMPLE_JKS_TRUSTSTORE_FILE_PATH, SAMPLE_JKS_TRUSTSTORE_PASSWORD_PATH, JKS_TYPE);
     }
 
-    public static JavaTruststore getSampleJksTruststoreFileWithUniqueAlias()
-        throws LoadTruststoreException, KeystoreInstanceException {
-        return createJksTruststoreInstance(SAMPLE_JKS_TRUSTSTORE_UNIQUE_ALIAS_FILE_PATH,
-            SAMPLE_JKS_TRUSTSTORE_PASSWORD);
+    public static Truststore getSampleJksTruststoreFileWithUniqueAlias()
+        throws LoadTruststoreException, KeystoreInstanceException, PasswordReaderException {
+        return createJavaTruststore(SAMPLE_JKS_TRUSTSTORE_UNIQUE_ALIAS_FILE_PATH, SAMPLE_JKS_TRUSTSTORE_PASSWORD_PATH,
+            JKS_TYPE);
     }
 
-    public static JavaTruststore createTmpJksTruststoreFileWithUniqAlias()
-        throws IOException, LoadTruststoreException, KeystoreInstanceException {
+    public static Truststore createTmpJksTruststoreFileWithUniqAlias()
+        throws IOException, LoadTruststoreException, KeystoreInstanceException, PasswordReaderException {
         copyFile(SAMPLE_JKS_TRUSTSTORE_UNIQUE_ALIAS_FILE_PATH, TMP_JKS_TRUSTSTORE_FILE_PATH);
-        return createJksTruststoreInstance(TMP_JKS_TRUSTSTORE_FILE_PATH, SAMPLE_JKS_TRUSTSTORE_PASSWORD);
+        return createJavaTruststore(TMP_JKS_TRUSTSTORE_FILE_PATH, SAMPLE_JKS_TRUSTSTORE_PASSWORD_PATH, JKS_TYPE);
+    }
+
+    public static File getEmptyPemFile() {
+        return getFile(EMPTY_PEM_TRUSTSTORE_FILE_PATH);
+    }
+
+    public static File getNotEmptyPemFile() {
+        return getFile(SAMPLE_PEM_TRUSTSTORE_FILE_PATH);
+    }
+
+    public static File getPemWithPrivateKeyFile() {
+        return getFile(SAMPLE_PEM_TRUSTSTORE_WITH_PRIVATE_KEY_FILE_PATH);
     }
 
     public static void removeTemporaryFiles() throws IOException {
         Files.deleteIfExists(Paths.get(TMP_PEM_TRUSTSTORE_FILE_PATH));
         Files.deleteIfExists(Paths.get(TMP_JKS_TRUSTSTORE_FILE_PATH));
         Files.deleteIfExists(Paths.get(TMP_P12_TRUSTSTORE_FILE_PATH));
+        Files.deleteIfExists(Paths.get(PEM_BACKUP_FILE_PATH));
     }
 
-    private static JavaTruststore createJksTruststoreInstance(String filePath, String password)
-        throws LoadTruststoreException, KeystoreInstanceException {
+    private static Truststore createJavaTruststore(String filePath, String password, String instanceType)
+        throws LoadTruststoreException, KeystoreInstanceException, PasswordReaderException {
         File certFile = getFile(filePath);
-        JavaCertificateStoreController storeController = certificateStoreControllerFactory
-            .createLoadedJksCertificateStoreController(certFile, password);
-        return new JavaTruststore(certFile, storeController);
+        return JavaTruststoreFactory.create(certFile, password, instanceType);
     }
 
-    private static PemTruststore getPemTruststoreInstance(String tmpPemTruststoreFilePath) {
+    private static Truststore getPemTruststoreInstance(
+        String tmpPemTruststoreFilePath) {
         File file = getFile(tmpPemTruststoreFilePath);
-        return new PemTruststore(file, new PemCertificateController(file));
+        return new PemTruststore(file);
     }
 
     private static void copyFile(String sourcePath, String destPath) throws IOException {