diff options
Diffstat (limited to 'certService/src/test/java/org/onap/oom/certservice/certification/CertificationModelFactoryTest.java')
-rw-r--r-- | certService/src/test/java/org/onap/oom/certservice/certification/CertificationModelFactoryTest.java | 166 |
1 files changed, 114 insertions, 52 deletions
diff --git a/certService/src/test/java/org/onap/oom/certservice/certification/CertificationModelFactoryTest.java b/certService/src/test/java/org/onap/oom/certservice/certification/CertificationModelFactoryTest.java index 705ae004..c898b687 100644 --- a/certService/src/test/java/org/onap/oom/certservice/certification/CertificationModelFactoryTest.java +++ b/certService/src/test/java/org/onap/oom/certservice/certification/CertificationModelFactoryTest.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * Cert Service * ================================================================================ * Copyright (C) 2020-2021 Nokia. All rights reserved. * ================================================================================ @@ -20,6 +20,25 @@ package org.onap.oom.certservice.certification; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.onap.oom.certservice.certification.CertificationData.CA_CERT; +import static org.onap.oom.certservice.certification.CertificationData.ENTITY_CERT; +import static org.onap.oom.certservice.certification.CertificationData.EXTRA_CA_CERT; +import static org.onap.oom.certservice.certification.CertificationData.INTERMEDIATE_CERT; +import static org.onap.oom.certservice.certification.TestData.TEST_CSR; +import static org.onap.oom.certservice.certification.TestData.TEST_PK; +import static org.onap.oom.certservice.certification.TestData.TEST_WRONG_CSR; +import static org.onap.oom.certservice.certification.TestData.TEST_WRONG_PEM; + +import java.util.Arrays; +import java.util.Base64; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -27,33 +46,18 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.onap.oom.certservice.certification.configuration.Cmpv2ServerProvider; import org.onap.oom.certservice.certification.configuration.model.Cmpv2Server; +import org.onap.oom.certservice.certification.exception.CertificateDecryptionException; import org.onap.oom.certservice.certification.exception.Cmpv2ClientAdapterException; import org.onap.oom.certservice.certification.exception.Cmpv2ServerNotFoundException; import org.onap.oom.certservice.certification.exception.CsrDecryptionException; import org.onap.oom.certservice.certification.exception.DecryptionException; +import org.onap.oom.certservice.certification.model.CertificateUpdateModel; +import org.onap.oom.certservice.certification.model.CertificateUpdateModel.CertificateUpdateModelBuilder; import org.onap.oom.certservice.certification.model.CertificationModel; import org.onap.oom.certservice.certification.model.CsrModel; +import org.onap.oom.certservice.certification.model.X509CertificateModel; import org.onap.oom.certservice.cmpv2client.exceptions.CmpClientException; -import java.util.Arrays; -import java.util.Base64; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; -import static org.onap.oom.certservice.certification.CertificationData.CA_CERT; -import static org.onap.oom.certservice.certification.CertificationData.ENTITY_CERT; -import static org.onap.oom.certservice.certification.CertificationData.INTERMEDIATE_CERT; -import static org.onap.oom.certservice.certification.CertificationData.EXTRA_CA_CERT; -import static org.onap.oom.certservice.certification.TestData.TEST_CSR; -import static org.onap.oom.certservice.certification.TestData.TEST_PK; -import static org.onap.oom.certservice.certification.TestData.TEST_WRONG_CSR; -import static org.onap.oom.certservice.certification.TestData.TEST_WRONG_PEM; - @ExtendWith(MockitoExtension.class) class CertificationModelFactoryTest { @@ -62,6 +66,18 @@ class CertificationModelFactoryTest { private static final String ENCODED_PK = getEncodedString(TEST_PK); private static final String ENCODED_WRONG_CSR = getEncodedString(TEST_WRONG_CSR); private static final String ENCODED_WRONG_PK = getEncodedString(TEST_WRONG_PEM); + private static final String TEST_CA_NAME = "TestCa"; + private static final String TEST_ENCODED_CSR = "encodedCSR"; + private static final String TEST_ENCODED_PK = "encodedPK"; + private static final String TEST_ENCODED_OLD_PK = "encodedOldPK"; + private static final String TEST_ENCODED_OLD_CERT = "encodedOldCert"; + private static final CertificateUpdateModel TEST_CERTIFICATE_UPDATE_MODEL = new CertificateUpdateModelBuilder() + .setEncodedCsr(TEST_ENCODED_CSR) + .setEncodedPrivateKey(TEST_ENCODED_PK) + .setEncodedOldCert(TEST_ENCODED_OLD_CERT) + .setEncodedOldPrivateKey(TEST_ENCODED_OLD_PK) + .setCaName(TEST_CA_NAME) + .build(); private CertificationModelFactory certificationModelFactory; @@ -71,7 +87,10 @@ class CertificationModelFactoryTest { private CsrModelFactory csrModelFactory; @Mock private CertificationProvider certificationProvider; - + @Mock + private X509CertificateModelFactory x509CertificateModelFactory; + @Mock + private UpdateRequestTypeDetector updateRequestTypeDetector; private static String getEncodedString(String testCsr) { return Base64.getEncoder().encodeToString(testCsr.getBytes()); @@ -80,12 +99,13 @@ class CertificationModelFactoryTest { @BeforeEach void setUp() { certificationModelFactory = - new CertificationModelFactory(csrModelFactory, cmpv2ServerProvider, certificationProvider); + new CertificationModelFactory(csrModelFactory, cmpv2ServerProvider, certificationProvider, + x509CertificateModelFactory, updateRequestTypeDetector); } @Test void shouldCreateProperCertificationModelWhenGivenProperCsrModelAndCaName() - throws CmpClientException, DecryptionException, Cmpv2ClientAdapterException { + throws CmpClientException, DecryptionException, Cmpv2ClientAdapterException { // Given CsrModel csrModel = mockCsrFactoryModelCreation(); @@ -94,7 +114,7 @@ class CertificationModelFactoryTest { // When CertificationModel certificationModel = - certificationModelFactory.createCertificationModel(ENCODED_CSR, ENCODED_PK, TEST_CA); + certificationModelFactory.createCertificationModel(ENCODED_CSR, ENCODED_PK, TEST_CA); // Then assertEquals(2, certificationModel.getCertificateChain().size()); @@ -105,22 +125,22 @@ class CertificationModelFactoryTest { @Test void shouldThrowDecryptionExceptionWhenGivenWrongEncodedCsr() - throws DecryptionException { + throws DecryptionException { // Given String expectedMessage = "Incorrect CSR, decryption failed"; when( - csrModelFactory.createCsrModel( - new CsrModelFactory.StringBase64(ENCODED_WRONG_CSR), - new CsrModelFactory.StringBase64(ENCODED_WRONG_PK) - ) + csrModelFactory.createCsrModel( + new StringBase64(ENCODED_WRONG_CSR), + new StringBase64(ENCODED_WRONG_PK) + ) ).thenThrow( - new CsrDecryptionException(expectedMessage) + new CsrDecryptionException(expectedMessage) ); // When Exception exception = assertThrows( - DecryptionException.class, () -> - certificationModelFactory.createCertificationModel(ENCODED_WRONG_CSR, ENCODED_WRONG_PK, TEST_CA) + DecryptionException.class, () -> + certificationModelFactory.createCertificationModel(ENCODED_WRONG_CSR, ENCODED_WRONG_PK, TEST_CA) ); // Then @@ -129,20 +149,20 @@ class CertificationModelFactoryTest { @Test void shouldThrowCmpv2ServerNotFoundExceptionWhenGivenWrongCaName() - throws DecryptionException { + throws DecryptionException { // Given String expectedMessage = "CA not found"; mockCsrFactoryModelCreation(); when( - cmpv2ServerProvider.getCmpv2Server(TEST_CA) + cmpv2ServerProvider.getCmpv2Server(TEST_CA) ).thenThrow( - new Cmpv2ServerNotFoundException(expectedMessage) + new Cmpv2ServerNotFoundException(expectedMessage) ); // When Exception exception = assertThrows( - Cmpv2ServerNotFoundException.class, () -> - certificationModelFactory.createCertificationModel(ENCODED_CSR, ENCODED_PK, TEST_CA) + Cmpv2ServerNotFoundException.class, () -> + certificationModelFactory.createCertificationModel(ENCODED_CSR, ENCODED_PK, TEST_CA) ); // Then @@ -151,56 +171,98 @@ class CertificationModelFactoryTest { @Test void shouldThrowCmpClientExceptionWhenSigningCsrFailed() - throws DecryptionException, CmpClientException, Cmpv2ClientAdapterException { + throws DecryptionException, CmpClientException, Cmpv2ClientAdapterException { // Given String expectedMessage = "failed to sign certificate"; CsrModel csrModel = mockCsrFactoryModelCreation(); Cmpv2Server testServer = mockCmpv2ProviderServerSelection(); when( - certificationProvider.signCsr(csrModel, testServer) + certificationProvider.signCsr(csrModel, testServer) ).thenThrow( - new CmpClientException(expectedMessage) + new CmpClientException(expectedMessage) ); // When Exception exception = assertThrows( - CmpClientException.class, () -> - certificationModelFactory.createCertificationModel(ENCODED_CSR, ENCODED_PK, TEST_CA) + CmpClientException.class, () -> + certificationModelFactory.createCertificationModel(ENCODED_CSR, ENCODED_PK, TEST_CA) ); // Then assertTrue(exception.getMessage().contains(expectedMessage)); } + @Test + void shouldPerformKurWhenCsrAndOldCertDataMatch() throws CertificateDecryptionException, DecryptionException { + //given + mockCsrFactoryModelCreation(); + mockCertificateFactoryModelCreation(); + when(updateRequestTypeDetector.isKur(any(), any())).thenReturn(true); + //when, then + Exception exception = assertThrows( + UnsupportedOperationException.class, () -> + certificationModelFactory.createCertificationModel(TEST_CERTIFICATE_UPDATE_MODEL) + ); + assertEquals(exception.getMessage(), "TODO: implement KUR in separate MR"); + } + + @Test + void shouldPerformCrWhenCsrAndOldCertDataMatch() throws CertificateDecryptionException, DecryptionException { + //given + mockCsrFactoryModelCreation(); + mockCertificateFactoryModelCreation(); + when(updateRequestTypeDetector.isKur(any(), any())).thenReturn(false); + //when, then + Exception exception = assertThrows( + UnsupportedOperationException.class, () -> + certificationModelFactory.createCertificationModel(TEST_CERTIFICATE_UPDATE_MODEL) + ); + assertEquals(exception.getMessage(), "TODO: implement CR in separate MR"); + } + + @Test + void shouldThrowCertificateDecryptionExceptionWhenOldCertificateInvalid() + throws CertificateDecryptionException { + //given + when(x509CertificateModelFactory.createCertificateModel(any())) + .thenThrow(new CertificateDecryptionException("Incorrect certificate, decryption failed")); + //when, then + assertThrows( + CertificateDecryptionException.class, () -> + certificationModelFactory.createCertificationModel(TEST_CERTIFICATE_UPDATE_MODEL) + ); + } private void mockCertificateProviderCertificateSigning(CsrModel csrModel, Cmpv2Server testServer) - throws CmpClientException, Cmpv2ClientAdapterException { + throws CmpClientException, Cmpv2ClientAdapterException { CertificationModel expectedCertificationModel = getCertificationModel(); when( - certificationProvider.signCsr(csrModel, testServer) + certificationProvider.signCsr(csrModel, testServer) ).thenReturn(expectedCertificationModel); } private Cmpv2Server mockCmpv2ProviderServerSelection() { Cmpv2Server testServer = getCmpv2Server(); when( - cmpv2ServerProvider.getCmpv2Server(TEST_CA) + cmpv2ServerProvider.getCmpv2Server(TEST_CA) ).thenReturn(testServer); return testServer; } private CsrModel mockCsrFactoryModelCreation() - throws DecryptionException { + throws DecryptionException { CsrModel csrModel = getCsrModel(); - when( - csrModelFactory.createCsrModel( - new CsrModelFactory.StringBase64(ENCODED_CSR), - new CsrModelFactory.StringBase64(ENCODED_PK) - ) - ).thenReturn(csrModel); + when(csrModelFactory.createCsrModel(any(), any())).thenReturn(csrModel); return csrModel; } + private X509CertificateModel mockCertificateFactoryModelCreation() + throws CertificateDecryptionException { + final X509CertificateModel certificateModel = mock(X509CertificateModel.class); + when(x509CertificateModelFactory.createCertificateModel(any())).thenReturn(certificateModel); + return certificateModel; + } + private Cmpv2Server getCmpv2Server() { return new Cmpv2Server(); } |