Increase adapter test coverage
authorBartosz Gardziejewski <bartosz.gardziejewski@nokia.com>
Fri, 6 Mar 2020 10:00:04 +0000 (11:00 +0100)
committerBartosz Gardziejewski <bartosz.gardziejewski@nokia.com>
Fri, 6 Mar 2020 10:27:08 +0000 (11:27 +0100)
Issue-ID: AAF-997
Signed-off-by: Bartosz Gardziejewski <bartosz.gardziejewski@nokia.com>
Change-Id: Ifea1943f5bc2ad174bf1e8f0197526b96097a302

certService/src/test/java/org/onap/aaf/certservice/certification/TestUtils.java
certService/src/test/java/org/onap/aaf/certservice/certification/adapter/CSRMetaBuilderTest.java
certService/src/test/java/org/onap/aaf/certservice/certification/adapter/RSAContentSignerBuilderTest.java [new file with mode: 0644]
certService/src/test/java/org/onap/aaf/certservice/certification/adapter/X509CertificateBuilderTest.java [new file with mode: 0644]

index 11b4f84..a6e55c5 100644 (file)
 
 package org.onap.aaf.certservice.certification;
 
+import org.bouncycastle.util.encoders.Base64;
 import org.bouncycastle.util.io.pem.PemObject;
 import org.bouncycastle.util.io.pem.PemWriter;
+import org.onap.aaf.certservice.certification.exception.DecryptionException;
 import org.onap.aaf.certservice.certification.exception.KeyDecryptionException;
+import org.onap.aaf.certservice.certification.model.CsrModel;
 
 import java.io.IOException;
 import java.io.StringWriter;
 
+import static org.onap.aaf.certservice.certification.TestData.TEST_CSR;
+import static org.onap.aaf.certservice.certification.TestData.TEST_PK;
+
 
 public final class TestUtils {
 
@@ -44,4 +50,12 @@ public final class TestUtils {
             throw new KeyDecryptionException("Writing PAM Object to string failed", e);
         }
     }
+
+    public static CsrModel createCsrModel() throws DecryptionException {
+        CsrModelFactory csrModelFactory = new CsrModelFactory();
+        String encoderCsr = new String(Base64.encode(TEST_CSR.getBytes()));
+        String encoderPK = new String(Base64.encode(TEST_PK.getBytes()));
+        return csrModelFactory
+                .createCsrModel(new CsrModelFactory.StringBase64(encoderCsr), new CsrModelFactory.StringBase64(encoderPK));
+    }
 }
index 165c9ec..d3f8cc6 100644 (file)
@@ -33,7 +33,6 @@ import org.onap.aaf.certservice.cmpv2client.external.CSRMeta;
 import java.security.PrivateKey;
 import java.security.PublicKey;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 
 import static org.assertj.core.api.Assertions.assertThat;
diff --git a/certService/src/test/java/org/onap/aaf/certservice/certification/adapter/RSAContentSignerBuilderTest.java b/certService/src/test/java/org/onap/aaf/certservice/certification/adapter/RSAContentSignerBuilderTest.java
new file mode 100644 (file)
index 0000000..3c5c534
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * ============LICENSE_START=======================================================
+ * PROJECT
+ * ================================================================================
+ * 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.certification.adapter;
+
+import org.bouncycastle.operator.ContentSigner;
+import org.bouncycastle.operator.OperatorCreationException;
+import org.bouncycastle.pkcs.PKCS10CertificationRequest;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.onap.aaf.certservice.certification.exception.DecryptionException;
+import org.onap.aaf.certservice.certification.model.CsrModel;
+
+import java.io.IOException;
+import java.security.PrivateKey;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.onap.aaf.certservice.certification.TestUtils.createCsrModel;
+
+class RSAContentSignerBuilderTest {
+
+    private  RSAContentSignerBuilder rsaContentSignerBuilder;
+
+    @BeforeEach
+    void setUp() {
+        rsaContentSignerBuilder = new RSAContentSignerBuilder();
+    }
+
+    @Test
+    void shouldBuildProperContentSignerWhenProvidedCertificationRequestAndPrivateKey()
+            throws IOException, OperatorCreationException, DecryptionException {
+        // Given
+        CsrModel testCsrModel = createCsrModel();
+        PKCS10CertificationRequest testCertificationRequest = testCsrModel.getCsr();
+        PrivateKey testPrivateKey = testCsrModel.getPrivateKey();
+
+        // When
+        ContentSigner createdContentSigner = rsaContentSignerBuilder.build(testCertificationRequest, testPrivateKey);
+
+        // Then
+        assertThat(createdContentSigner.getAlgorithmIdentifier())
+                .isEqualTo(testCertificationRequest.getSignatureAlgorithm());
+    }
+
+}
diff --git a/certService/src/test/java/org/onap/aaf/certservice/certification/adapter/X509CertificateBuilderTest.java b/certService/src/test/java/org/onap/aaf/certservice/certification/adapter/X509CertificateBuilderTest.java
new file mode 100644 (file)
index 0000000..26d11fc
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * ============LICENSE_START=======================================================
+ * PROJECT
+ * ================================================================================
+ * 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.certification.adapter;
+
+import org.bouncycastle.cert.X509CertificateHolder;
+import org.bouncycastle.cert.X509v3CertificateBuilder;
+import org.bouncycastle.operator.ContentSigner;
+import org.bouncycastle.operator.OperatorCreationException;
+import org.bouncycastle.pkcs.PKCS10CertificationRequest;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.onap.aaf.certservice.certification.exception.DecryptionException;
+import org.onap.aaf.certservice.certification.model.CsrModel;
+
+import java.io.IOException;
+import java.security.PrivateKey;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.onap.aaf.certservice.certification.TestUtils.createCsrModel;
+
+public class X509CertificateBuilderTest {
+
+    private X509CertificateBuilder certificateBuilde;
+
+
+    @BeforeEach
+    void setUp() {
+        certificateBuilde = new X509CertificateBuilder();
+    }
+
+    @Test
+    void shouldBuildCertificateBuilderWhenGivenProperCertificationRequest()
+            throws DecryptionException, IOException, OperatorCreationException {
+        // Given
+        CsrModel testCsrModel = createCsrModel();
+        PKCS10CertificationRequest testCertificationRequest = testCsrModel.getCsr();
+        PrivateKey testPrivateKey = testCsrModel.getPrivateKey();
+        RSAContentSignerBuilder rsaContentSignerBuilder = new RSAContentSignerBuilder();
+        ContentSigner createdContentSigner = rsaContentSignerBuilder.build(testCertificationRequest, testPrivateKey);
+
+        // When
+        X509v3CertificateBuilder certificateBuilder = certificateBuilde.build(testCertificationRequest);
+        X509CertificateHolder certificateHolder = certificateBuilder.build(createdContentSigner);
+
+        // Then
+        assertThat(certificateHolder.getIssuer())
+                .isEqualToComparingFieldByField(testCsrModel.getSubjectData());
+        assertThat(certificateHolder.getSubjectPublicKeyInfo())
+                .isEqualToComparingFieldByField(testCertificationRequest.getSubjectPublicKeyInfo());
+    }
+}