From d54223e7cd3026e260e06df39dd52c4368e7053d Mon Sep 17 00:00:00 2001 From: awudzins Date: Wed, 19 Feb 2020 13:34:32 +0100 Subject: Load CMP Servers config from volume Create Kubernetes secret to store Cmp Server config file and mount it to container as volume Issue-ID: AAF-997 Signed-off-by: Adam Wudzinski Change-Id: I163b720ce14729328af34dd61e6eb0108c76d58b --- .../configuration/CmpServersConfigLoaderTest.java | 85 ++++++++++++++++++++++ .../configuration/CmpServersConfigTest.java | 40 ++++++++-- 2 files changed, 118 insertions(+), 7 deletions(-) create mode 100644 certService/src/test/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigLoaderTest.java (limited to 'certService/src/test') diff --git a/certService/src/test/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigLoaderTest.java b/certService/src/test/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigLoaderTest.java new file mode 100644 index 00000000..f4421ffe --- /dev/null +++ b/certService/src/test/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigLoaderTest.java @@ -0,0 +1,85 @@ +/* + * ============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.Test; +import org.onap.aaf.certservice.certification.configuration.model.Cmpv2Server; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +class CmpServersConfigLoaderTest { + private static final String EXISTING_CONFIG_FILENAME = "cmpServers.json"; + private static final String NONEXISTING_CONFIG_FILENAME = "nonexisting_cmpServers.json"; + private static final Map EXPECTED_FIRST_CMP_SERVER = Map.of( + "CA_NAME", "TEST", + "URL", "http://127.0.0.1/ejbca/publicweb/cmp/cmp", + "ISSUER_DN", "CN=ManagementCA", + "CA_MODE", "CLIENT", + "IAK", "xxx", + "RV", "yyy" + ); + private static final Map EXPECTED_SECOND_CMP_SERVER = Map.of( + "CA_NAME", "TEST2", + "URL", "http://127.0.0.1/ejbca/publicweb/cmp/cmpRA", + "ISSUER_DN", "CN=ManagementCA2", + "CA_MODE", "RA", + "IAK", "xxx", + "RV", "yyy" + ); + + @Test + public void shouldLoadCmpServersConfigWhenFileAvailable() throws IOException { + // Given + String path = getClass().getClassLoader().getResource(EXISTING_CONFIG_FILENAME).getFile(); + + // When + List cmpServers = new CmpServersConfigLoader().load(path); + + // Then + assertThat(cmpServers).isNotNull(); + assertThat(cmpServers).hasSize(2); + verifyThatCmpServerEquals(cmpServers.get(0), EXPECTED_FIRST_CMP_SERVER); + verifyThatCmpServerEquals(cmpServers.get(1), EXPECTED_SECOND_CMP_SERVER); + } + + @Test() + public void shouldReturnEmptyListWhenFileMissing() { + // When + List cmpServers = new CmpServersConfigLoader().load(NONEXISTING_CONFIG_FILENAME); + + // Then + assertThat(cmpServers).isNotNull(); + assertThat(cmpServers).isEmpty(); + } + + private void verifyThatCmpServerEquals(Cmpv2Server cmpv2Server, Map expected) { + assertThat(cmpv2Server.getCaName()).isEqualTo(expected.get("CA_NAME")); + assertThat(cmpv2Server.getUrl()).isEqualTo(expected.get("URL")); + assertThat(cmpv2Server.getIssuerDN()).isEqualTo(expected.get("ISSUER_DN")); + assertThat(cmpv2Server.getCaMode().name()).isEqualTo(expected.get("CA_MODE")); + assertThat(cmpv2Server.getAuthentication().getIak()).isEqualTo(expected.get("IAK")); + assertThat(cmpv2Server.getAuthentication().getRv()).isEqualTo(expected.get("RV")); + } +} \ No newline at end of file diff --git a/certService/src/test/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigTest.java b/certService/src/test/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigTest.java index 4c9c5f66..43094f09 100644 --- a/certService/src/test/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigTest.java +++ b/certService/src/test/java/org/onap/aaf/certservice/certification/configuration/CmpServersConfigTest.java @@ -20,28 +20,54 @@ package org.onap.aaf.certservice.certification.configuration; -import static org.assertj.core.api.Assertions.assertThat; - import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mockito; import org.onap.aaf.certservice.CertServiceApplication; +import org.onap.aaf.certservice.certification.configuration.model.Cmpv2Server; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.startsWith; + @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = CertServiceApplication.class) +@TestPropertySource(properties = {"app.config.path=/fake/path/to/config"}) class CmpServersConfigTest { + private static final List SAMPLE_CMP_SERVERS = List.of( + new Cmpv2Server(), + new Cmpv2Server() + ); + + @MockBean + private CmpServersConfigLoader cmpServersConfigLoader; + @Autowired private CmpServersConfig cmpServersConfig; @Test - public void shouldLoadCmpServersConfig() { + public void shouldCallLoaderWithPathFromPropertiesWhenCreated() { + Mockito.verify(cmpServersConfigLoader).load(startsWith("/fake/path/to/config")); + } + + @Test + public void shouldReturnLoadedServersWhenGetCalled() { + // Given + Mockito.when(cmpServersConfigLoader.load(any())).thenReturn(SAMPLE_CMP_SERVERS); + this.cmpServersConfig.loadConfiguration(); // Manual PostConstruct call + + // When + List receivedCmpServers = this.cmpServersConfig.getCmpServers(); + // Then - assertThat(cmpServersConfig.getCmpServers()).isNotNull(); - assertThat(cmpServersConfig.getCmpServers().size()).isEqualTo(2); - assertThat(cmpServersConfig.getCmpServers().get(0).getCaName()).isEqualTo("TEST"); - assertThat(cmpServersConfig.getCmpServers().get(1).getCaName()).isEqualTo("TEST2"); + assertThat(receivedCmpServers).hasSize(SAMPLE_CMP_SERVERS.size()); } } \ No newline at end of file -- cgit 1.2.3-korg