diff options
author | 2020-02-12 11:53:42 +0100 | |
---|---|---|
committer | 2020-02-13 10:53:19 +0100 | |
commit | 1d90088826d5bb2f141be9683d9e31b606fca978 (patch) | |
tree | e2cf2fb2f81f607ed0f8142ee08bd9879355cbcb /certService/src/test/java/org/onap/aaf | |
parent | 41a5418f3d93fb09d5544c2070b42d5d5f4e216a (diff) |
Return hardcoded CA certs and certification chain.
Issue-ID: AAF-995
Signed-off-by: Bartosz Gardziejewski <bartosz.gardziejewski@nokia.com>
Change-Id: I38b498c4deeedc4ea4323065c5f7b5ddd137209f
Diffstat (limited to 'certService/src/test/java/org/onap/aaf')
6 files changed, 123 insertions, 17 deletions
diff --git a/certService/src/test/java/org/onap/aaf/certservice/api/CertificationServiceTest.java b/certService/src/test/java/org/onap/aaf/certservice/api/CertificationServiceTest.java index 9367fcb1..8ee88db5 100644 --- a/certService/src/test/java/org/onap/aaf/certservice/api/CertificationServiceTest.java +++ b/certService/src/test/java/org/onap/aaf/certservice/api/CertificationServiceTest.java @@ -20,19 +20,26 @@ package org.onap.aaf.certservice.api; +import com.google.gson.Gson; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.onap.aaf.certservice.certification.CertificationModelFactory; import org.onap.aaf.certservice.certification.CsrModelFactory; import org.onap.aaf.certservice.certification.CsrModelFactory.StringBase64; import org.onap.aaf.certservice.certification.exceptions.CsrDecryptionException; +import org.onap.aaf.certservice.certification.exceptions.DecryptionException; +import org.onap.aaf.certservice.certification.exceptions.PemDecryptionException; +import org.onap.aaf.certservice.certification.model.CertificationModel; import org.onap.aaf.certservice.certification.model.CsrModel; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import java.io.IOException; +import java.util.Arrays; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; @@ -47,43 +54,75 @@ class CertificationServiceTest { @Mock private CsrModelFactory csrModelFactory; + @Mock + private CertificationModelFactory certificationModelFactory; + @BeforeEach void serUp() { MockitoAnnotations.initMocks(this); - certificationService = new CertificationService(csrModelFactory); + certificationService = new CertificationService(csrModelFactory, certificationModelFactory); } @Test - void shouldReturnDataAboutCsrBaseOnEncodedParameters() throws CsrDecryptionException { + void shouldReturnDataAboutCsrBaseOnEncodedParameters() throws DecryptionException { // given final String testStringCsr = "testData"; + final String testCaName = "TestCa"; CsrModel mockedCsrModel = mock(CsrModel.class); + CertificationModel testCertificationModel = new CertificationModel( + Arrays.asList("ENTITY_CERT", "INTERMEDIATE_CERT"), + Arrays.asList("CA_CERT", "EXTRA_CA_CERT") + ); when(mockedCsrModel.toString()).thenReturn(testStringCsr); when(csrModelFactory.createCsrModel(any(StringBase64.class), any(StringBase64.class))) .thenReturn(mockedCsrModel); + when(certificationModelFactory.createCertificationModel(mockedCsrModel, testCaName)) + .thenReturn(testCertificationModel); // when ResponseEntity<String> testResponse = - certificationService.signCertificate("TestCa", "encryptedCSR", "encryptedPK"); + certificationService.signCertificate(testCaName, "encryptedCSR", "encryptedPK"); + + CertificationModel responseCertificationModel = new Gson().fromJson(testResponse.getBody(), CertificationModel.class); // then assertEquals(HttpStatus.OK, testResponse.getStatusCode()); + assertThat(responseCertificationModel + ).isEqualToComparingFieldByField(testCertificationModel); + + } + + @Test + void shouldReturnBadRequestWhenCreatingCsrModelFails() throws DecryptionException { + // given + when(csrModelFactory.createCsrModel(any(StringBase64.class), any(StringBase64.class))) + .thenThrow(new CsrDecryptionException("CSR creation fail",new IOException())); + + // when + ResponseEntity<String> testResponse = + certificationService.signCertificate("TestCa", "encryptedCSR", "encryptedPK"); + + String expectedMessage = "Wrong certificate signing request (CSR) format"; + + // then + assertEquals(HttpStatus.BAD_REQUEST, testResponse.getStatusCode()); assertTrue( - testResponse.toString().contains(testStringCsr) + testResponse.toString().contains(expectedMessage) ); + } @Test - void shouldReturnBadRequestWhenCreatingCsrModelFails() throws CsrDecryptionException { + void shouldReturnBadRequestWhenCreatingPemModelFails() throws DecryptionException { // given when(csrModelFactory.createCsrModel(any(StringBase64.class), any(StringBase64.class))) - .thenThrow(new CsrDecryptionException("creation fail",new IOException())); + .thenThrow(new PemDecryptionException("PEM creation fail",new IOException())); // when ResponseEntity<String> testResponse = certificationService.signCertificate("TestCa", "encryptedCSR", "encryptedPK"); - String expectedMessage = "Wrong certificate signing request (CSR) format"; + String expectedMessage = "Wrong key (PK) format"; // then assertEquals(HttpStatus.BAD_REQUEST, testResponse.getStatusCode()); diff --git a/certService/src/test/java/org/onap/aaf/certservice/certification/CertificationModelFactoryTest.java b/certService/src/test/java/org/onap/aaf/certservice/certification/CertificationModelFactoryTest.java new file mode 100644 index 00000000..2953af78 --- /dev/null +++ b/certService/src/test/java/org/onap/aaf/certservice/certification/CertificationModelFactoryTest.java @@ -0,0 +1,63 @@ +/* + * ============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; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.onap.aaf.certservice.certification.model.CertificationModel; +import org.onap.aaf.certservice.certification.model.CsrModel; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.mock; +import static org.onap.aaf.certservice.certification.CertificationData.CA_CERT; +import static org.onap.aaf.certservice.certification.CertificationData.ENTITY_CERT; +import static org.onap.aaf.certservice.certification.CertificationData.INTERMEDIATE_CERT; +import static org.onap.aaf.certservice.certification.CertificationData.EXTRA_CA_CERT; + + +class CertificationModelFactoryTest { + + + private CertificationModelFactory certificationModelFactory; + + @BeforeEach + void setUp() { + certificationModelFactory = new CertificationModelFactory(); + } + + @Test + void shouldCreateProperCertificationModelWhenGivenProperCsrModelAndCaName() { + // given + final String testCaName = "testCA"; + CsrModel mockedCsrModel = mock(CsrModel.class); + + // when + CertificationModel certificationModel = certificationModelFactory.createCertificationModel(mockedCsrModel ,testCaName); + + //then + assertEquals(2, certificationModel.getCertificateChain().size()); + assertThat(certificationModel.getCertificateChain()).contains(INTERMEDIATE_CERT, ENTITY_CERT); + assertEquals(2, certificationModel.getTrustedCertificates().size()); + assertThat(certificationModel.getTrustedCertificates()).contains(CA_CERT, EXTRA_CA_CERT); + } + +} diff --git a/certService/src/test/java/org/onap/aaf/certservice/certification/CsrModelFactoryTest.java b/certService/src/test/java/org/onap/aaf/certservice/certification/CsrModelFactoryTest.java index 8b5f5dc5..065c7a0e 100644 --- a/certService/src/test/java/org/onap/aaf/certservice/certification/CsrModelFactoryTest.java +++ b/certService/src/test/java/org/onap/aaf/certservice/certification/CsrModelFactoryTest.java @@ -25,6 +25,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.onap.aaf.certservice.certification.CsrModelFactory.StringBase64; import org.onap.aaf.certservice.certification.exceptions.CsrDecryptionException; +import org.onap.aaf.certservice.certification.exceptions.DecryptionException; import org.onap.aaf.certservice.certification.model.CsrModel; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -44,7 +45,7 @@ class CsrModelFactoryTest { } @Test - void shouldDecryptCsrAndReturnStringWithDataAboutIt() throws CsrDecryptionException { + void shouldDecryptCsrAndReturnStringWithDataAboutIt() throws DecryptionException { // given String encoderCsr = new String(Base64.encode(TEST_CSR.getBytes())); String encoderPK = new String(Base64.encode(TEST_PK.getBytes())); diff --git a/certService/src/test/java/org/onap/aaf/certservice/certification/PemObjectFactoryTest.java b/certService/src/test/java/org/onap/aaf/certservice/certification/PemObjectFactoryTest.java index 2fa747db..479c375b 100644 --- a/certService/src/test/java/org/onap/aaf/certservice/certification/PemObjectFactoryTest.java +++ b/certService/src/test/java/org/onap/aaf/certservice/certification/PemObjectFactoryTest.java @@ -24,6 +24,7 @@ import org.bouncycastle.util.io.pem.PemObject; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.onap.aaf.certservice.certification.exceptions.CsrDecryptionException; +import org.onap.aaf.certservice.certification.exceptions.PemDecryptionException; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -44,7 +45,7 @@ class PemObjectFactoryTest { } @Test - void shouldTransformStringInToPemObjectAndBackToString() throws CsrDecryptionException { + void shouldTransformStringInToPemObjectAndBackToString() throws PemDecryptionException { // when PemObject pemObject = pemObjectFactory.createPemObject(TEST_PEM); String parsedPemObject = pemObjectToString(pemObject); @@ -57,7 +58,7 @@ class PemObjectFactoryTest { void shouldThrowExceptionWhenParsingPemFailed() { // when Exception exception = assertThrows( - CsrDecryptionException.class, () -> pemObjectFactory.createPemObject(TEST_WRONG_PEM) + PemDecryptionException.class, () -> pemObjectFactory.createPemObject(TEST_WRONG_PEM) ); String expectedMessage = "Unable to create PEM"; diff --git a/certService/src/test/java/org/onap/aaf/certservice/certification/TestUtils.java b/certService/src/test/java/org/onap/aaf/certservice/certification/TestUtils.java index 156cf8ba..c2824c80 100644 --- a/certService/src/test/java/org/onap/aaf/certservice/certification/TestUtils.java +++ b/certService/src/test/java/org/onap/aaf/certservice/certification/TestUtils.java @@ -22,7 +22,7 @@ package org.onap.aaf.certservice.certification; import org.bouncycastle.util.io.pem.PemObject; import org.bouncycastle.util.io.pem.PemWriter; -import org.onap.aaf.certservice.certification.exceptions.CsrDecryptionException; +import org.onap.aaf.certservice.certification.exceptions.PemDecryptionException; import java.io.IOException; import java.io.StringWriter; @@ -33,7 +33,7 @@ public final class TestUtils { private TestUtils() { } - public static String pemObjectToString(PemObject pemObject) throws CsrDecryptionException { + public static String pemObjectToString(PemObject pemObject) throws PemDecryptionException { try (StringWriter output = new StringWriter()) { PemWriter pemWriter = new PemWriter(output); pemWriter.writeObject(pemObject); @@ -41,7 +41,7 @@ public final class TestUtils { return output.getBuffer().toString(); } catch (IOException e) { - throw new CsrDecryptionException("Writing PAM Object to string failed", e); + throw new PemDecryptionException("Writing PAM Object to string failed", e); } } } diff --git a/certService/src/test/java/org/onap/aaf/certservice/certification/model/CsrModelTest.java b/certService/src/test/java/org/onap/aaf/certservice/certification/model/CsrModelTest.java index c6ff2a9f..9d748150 100644 --- a/certService/src/test/java/org/onap/aaf/certservice/certification/model/CsrModelTest.java +++ b/certService/src/test/java/org/onap/aaf/certservice/certification/model/CsrModelTest.java @@ -26,6 +26,8 @@ import org.bouncycastle.util.io.pem.PemObject; import org.junit.jupiter.api.Test; import org.onap.aaf.certservice.certification.PemObjectFactory; import org.onap.aaf.certservice.certification.exceptions.CsrDecryptionException; +import org.onap.aaf.certservice.certification.exceptions.DecryptionException; +import org.onap.aaf.certservice.certification.exceptions.PemDecryptionException; import java.io.IOException; @@ -44,7 +46,7 @@ class CsrModelTest { @Test - void shouldByConstructedAndReturnProperFields() throws CsrDecryptionException, IOException { + void shouldByConstructedAndReturnProperFields() throws DecryptionException, IOException { // given PemObject testPublicKey = generateTestPublicKey(); @@ -68,7 +70,7 @@ class CsrModelTest { } @Test - void shouldThrowExceptionWhenKeyIsNotCorrect() throws IOException, CsrDecryptionException { + void shouldThrowExceptionWhenKeyIsNotCorrect() throws PemDecryptionException ,IOException { // given PemObjectFactory pemObjectFactory = new PemObjectFactory(); PKCS10CertificationRequest testCsr = mock(PKCS10CertificationRequest.class); @@ -93,7 +95,7 @@ class CsrModelTest { assertTrue(actualMessage.contains(expectedMessage)); } - private CsrModel generateTestCsrModel() throws CsrDecryptionException, IOException { + private CsrModel generateTestCsrModel() throws PemDecryptionException, IOException { PemObjectFactory pemObjectFactory = new PemObjectFactory(); PKCS10CertificationRequest testCsr = new PKCS10CertificationRequest( pemObjectFactory.createPemObject(TEST_CSR).getContent() @@ -102,7 +104,7 @@ class CsrModelTest { return new CsrModel(testCsr, testPrivateKey); } - private PemObject generateTestPublicKey() throws CsrDecryptionException, IOException { + private PemObject generateTestPublicKey() throws PemDecryptionException, IOException { PemObjectFactory pemObjectFactory = new PemObjectFactory(); PKCS10CertificationRequest testCsr = new PKCS10CertificationRequest( pemObjectFactory.createPemObject(TEST_CSR).getContent() |