From 1726ff54ecc3a9ca553723eee1d9ddc3f994398c Mon Sep 17 00:00:00 2001 From: Bartosz Gardziejewski Date: Wed, 26 Feb 2020 09:08:35 +0100 Subject: Create logic responsible for selecting server based on CAName Issue-ID: AAF-995 Signed-off-by: Bartosz Gardziejewski Change-Id: I2d3b931862ecca7c1edc52fb61aa8c4dcd29e3ec --- .../CertificationExceptionControllerTest.java | 88 ++++++++++++++++++++ .../CertificationModelFactoryTest.java | 44 +++++++++- .../configuration/Cmpv2ServerProviderTest.java | 96 ++++++++++++++++++++++ .../CertificationExceptionControllerTest.java | 71 ---------------- 4 files changed, 224 insertions(+), 75 deletions(-) create mode 100644 certService/src/test/java/org/onap/aaf/certservice/certification/CertificationExceptionControllerTest.java create mode 100644 certService/src/test/java/org/onap/aaf/certservice/certification/configuration/Cmpv2ServerProviderTest.java delete mode 100644 certService/src/test/java/org/onap/aaf/certservice/certification/exception/CertificationExceptionControllerTest.java (limited to 'certService/src/test') diff --git a/certService/src/test/java/org/onap/aaf/certservice/certification/CertificationExceptionControllerTest.java b/certService/src/test/java/org/onap/aaf/certservice/certification/CertificationExceptionControllerTest.java new file mode 100644 index 00000000..1a92c0c8 --- /dev/null +++ b/certService/src/test/java/org/onap/aaf/certservice/certification/CertificationExceptionControllerTest.java @@ -0,0 +1,88 @@ +/* + * ============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 com.google.gson.Gson; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.onap.aaf.certservice.certification.exception.Cmpv2ServerNotFoundException; +import org.onap.aaf.certservice.certification.exception.CsrDecryptionException; +import org.onap.aaf.certservice.certification.exception.ErrorResponseModel; +import org.onap.aaf.certservice.certification.exception.KeyDecryptionException; +import org.springframework.http.ResponseEntity; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class CertificationExceptionControllerTest { + + private CertificationExceptionController certificationExceptionController; + + @BeforeEach + void setUp() { + certificationExceptionController = + new CertificationExceptionController(); + } + + @Test + void shouldReturnResponseEntityWithAppropriateErrorMessageWhenGivenCsrDecryptionException() { + // given + String expectedMessage = "Wrong certificate signing request (CSR) format"; + CsrDecryptionException csrDecryptionException = new CsrDecryptionException("test csr exception"); + + // when + ResponseEntity responseEntity = certificationExceptionController.handle(csrDecryptionException); + + ErrorResponseModel response = new Gson().fromJson(responseEntity.getBody(), ErrorResponseModel.class); + + // then + assertEquals(expectedMessage, response.getErrorMessage()); + } + + @Test + void shouldReturnResponseEntityWithAppropriateErrorMessageWhenGivenKeyDecryptionException() { + // given + String expectedMessage = "Wrong key (PK) format"; + KeyDecryptionException csrDecryptionException = new KeyDecryptionException("test pk exception"); + + // when + ResponseEntity responseEntity = certificationExceptionController.handle(csrDecryptionException); + + ErrorResponseModel response = new Gson().fromJson(responseEntity.getBody(), ErrorResponseModel.class); + + // then + assertEquals(expectedMessage, response.getErrorMessage()); + } + + @Test + void shouldReturnResponseEntityWithAppropriateErrorMessageWhenGivenCaNameIsNotPresentInConfig() { + // given + String expectedMessage = "Certification authority not found for given CAName"; + Cmpv2ServerNotFoundException csrDecryptionException = new Cmpv2ServerNotFoundException("test Ca exception"); + + // when + ResponseEntity responseEntity = certificationExceptionController.handle(csrDecryptionException); + + ErrorResponseModel response = new Gson().fromJson(responseEntity.getBody(), ErrorResponseModel.class); + + // then + assertEquals(expectedMessage, response.getErrorMessage()); + } +} 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 index 2953af78..50e604e2 100644 --- a/certService/src/test/java/org/onap/aaf/certservice/certification/CertificationModelFactoryTest.java +++ b/certService/src/test/java/org/onap/aaf/certservice/certification/CertificationModelFactoryTest.java @@ -22,36 +22,52 @@ package org.onap.aaf.certservice.certification; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.onap.aaf.certservice.certification.configuration.Cmpv2ServerProvider; +import org.onap.aaf.certservice.certification.configuration.model.Cmpv2Server; +import org.onap.aaf.certservice.certification.exception.Cmpv2ServerNotFoundException; import org.onap.aaf.certservice.certification.model.CertificationModel; import org.onap.aaf.certservice.certification.model.CsrModel; +import java.util.Optional; + 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.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; - +@ExtendWith(MockitoExtension.class) class CertificationModelFactoryTest { + private static final String TEST_CA = "testCA"; private CertificationModelFactory certificationModelFactory; + @Mock + Cmpv2ServerProvider cmpv2ServerProvider; + @BeforeEach void setUp() { - certificationModelFactory = new CertificationModelFactory(); + certificationModelFactory = new CertificationModelFactory(cmpv2ServerProvider); } @Test void shouldCreateProperCertificationModelWhenGivenProperCsrModelAndCaName() { // given - final String testCaName = "testCA"; CsrModel mockedCsrModel = mock(CsrModel.class); + when(cmpv2ServerProvider.getCmpv2Server(TEST_CA)).thenReturn(Optional.of(createTestCmpv2Server())); // when - CertificationModel certificationModel = certificationModelFactory.createCertificationModel(mockedCsrModel ,testCaName); + CertificationModel certificationModel = + certificationModelFactory.createCertificationModel(mockedCsrModel ,TEST_CA); //then assertEquals(2, certificationModel.getCertificateChain().size()); @@ -60,4 +76,24 @@ class CertificationModelFactoryTest { assertThat(certificationModel.getTrustedCertificates()).contains(CA_CERT, EXTRA_CA_CERT); } + @Test + void shouldThrowCmpv2ServerNotFoundExceptionWhenGivenWrongCaName() { + // given + String expectedMessage = "CA not found"; + CsrModel mockedCsrModel = mock(CsrModel.class); + when(cmpv2ServerProvider.getCmpv2Server(TEST_CA)).thenThrow(new Cmpv2ServerNotFoundException(expectedMessage)); + + // when + Exception exception = assertThrows( + Cmpv2ServerNotFoundException.class, () -> + certificationModelFactory.createCertificationModel(mockedCsrModel ,TEST_CA) + ); + + // then + assertTrue(exception.getMessage().contains(expectedMessage)); + } + + private Cmpv2Server createTestCmpv2Server() { + return new Cmpv2Server(); + } } diff --git a/certService/src/test/java/org/onap/aaf/certservice/certification/configuration/Cmpv2ServerProviderTest.java b/certService/src/test/java/org/onap/aaf/certservice/certification/configuration/Cmpv2ServerProviderTest.java new file mode 100644 index 00000000..d3c09e9c --- /dev/null +++ b/certService/src/test/java/org/onap/aaf/certservice/certification/configuration/Cmpv2ServerProviderTest.java @@ -0,0 +1,96 @@ +/* + * ============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.configuration; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.onap.aaf.certservice.certification.configuration.model.Authentication; +import org.onap.aaf.certservice.certification.configuration.model.CaMode; +import org.onap.aaf.certservice.certification.configuration.model.Cmpv2Server; + +import java.util.Collections; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class Cmpv2ServerProviderTest { + + private static final String TEST_CA = "testCA"; + + private Cmpv2ServerProvider cmpv2ServerProvider; + + @Mock + private CmpServersConfig cmpServersConfig; + + @BeforeEach + void setUp() { + cmpv2ServerProvider = + new Cmpv2ServerProvider(cmpServersConfig); + } + + @Test + void shouldReturnOptionalWithServerWhenServerWithGivenCaNameIsPresentInConfig() { + // given + Cmpv2Server testServer = createTestServer(); + when(cmpServersConfig.getCmpServers()).thenReturn(Collections.singletonList(testServer)); + + // when + Cmpv2Server receivedServer = cmpv2ServerProvider + .getCmpv2Server(TEST_CA) + .get(); + + // then + assertThat(receivedServer).isEqualToComparingFieldByField(testServer); + } + + + @Test + void shouldReturnEmptyOptionalWhenServerWithGivenCaNameIsNotPresentInConfig() { + // given + when(cmpServersConfig.getCmpServers()).thenReturn(Collections.emptyList()); + + // when + Boolean isEmpty = cmpv2ServerProvider + .getCmpv2Server(TEST_CA) + .isEmpty(); + + // then + assertThat(isEmpty).isTrue(); + } + + private Cmpv2Server createTestServer() { + Cmpv2Server testServer = new Cmpv2Server(); + testServer.setCaName(TEST_CA); + testServer.setIssuerDN("testIssuer"); + testServer.setUrl("http://test.ca.server"); + Authentication testAuthentication = new Authentication(); + testAuthentication.setIak("testIak"); + testAuthentication.setRv("testRv"); + testServer.setAuthentication(testAuthentication); + testServer.setCaMode(CaMode.RA); + + return testServer; + } +} diff --git a/certService/src/test/java/org/onap/aaf/certservice/certification/exception/CertificationExceptionControllerTest.java b/certService/src/test/java/org/onap/aaf/certservice/certification/exception/CertificationExceptionControllerTest.java deleted file mode 100644 index 3dc93035..00000000 --- a/certService/src/test/java/org/onap/aaf/certservice/certification/exception/CertificationExceptionControllerTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * ============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.exception; - -import com.google.gson.Gson; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.onap.aaf.certservice.certification.CertificationExceptionController; -import org.springframework.http.ResponseEntity; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -class CertificationExceptionControllerTest { - - private CertificationExceptionController certificationExceptionController; - - @BeforeEach - void setUp() { - certificationExceptionController = - new CertificationExceptionController(); - } - - @Test - void shouldReturnResponseEntityWithAppropriateErrorMessageWhenGivenCsrDecryptionException() { - // given - String expectedMessage = "Wrong certificate signing request (CSR) format"; - CsrDecryptionException csrDecryptionException = new CsrDecryptionException("test csr exception"); - - // when - ResponseEntity responseEntity = certificationExceptionController.handle(csrDecryptionException); - - ErrorResponseModel response = new Gson().fromJson(responseEntity.getBody(), ErrorResponseModel.class); - - // then - assertEquals(expectedMessage, response.getErrorMessage()); - } - - @Test - void shouldReturnResponseEntityWithAppropriateErrorMessageWhenGivenKeyDecryptionException() { - // given - String expectedMessage = "Wrong key (PK) format"; - KeyDecryptionException csrDecryptionException = new KeyDecryptionException("test pk exception"); - - // when - ResponseEntity responseEntity = certificationExceptionController.handle(csrDecryptionException); - - ErrorResponseModel response = new Gson().fromJson(responseEntity.getBody(), ErrorResponseModel.class); - - // then - assertEquals(expectedMessage, response.getErrorMessage()); - } - -} -- cgit 1.2.3-korg