aboutsummaryrefslogtreecommitdiffstats
path: root/certService/src/test/java/org/onap/oom/certservice/certification/CertificationModelFactoryTest.java
diff options
context:
space:
mode:
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.java166
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();
}