From 673b18baae5db233d3da2a2b40f9b5d772c6cee2 Mon Sep 17 00:00:00 2001 From: Ittay Stern Date: Mon, 22 Jul 2019 11:21:05 +0300 Subject: Allow full-path to certificate and remove implicit Optional::toString 1) If getAAITruststoreFilename or getAAIKeystoreFilename has a file separator -- don't append certFilePath to filename. 2) getKeystorePath() is issuing Optional::orElse, as the code `+ getAAIKeystoreFilename()` is implicitly calling `getAAIKeystoreFilename().toString()` which yields a default toString e.g. "Optional[configValue]". Issue-ID: VID-229 Change-Id: I9c135cc3dfd72cdc203b59d78162a568a6dbd688 Signed-off-by: Ittay Stern --- .../org/onap/vid/aai/util/HttpsAuthClient.java | 15 ++++++----- .../org/onap/vid/aai/util/HttpsAuthClientTest.java | 31 ++++++++++++++++++++++ 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/vid-app-common/src/main/java/org/onap/vid/aai/util/HttpsAuthClient.java b/vid-app-common/src/main/java/org/onap/vid/aai/util/HttpsAuthClient.java index e2a6d0e04..af181eb1f 100644 --- a/vid-app-common/src/main/java/org/onap/vid/aai/util/HttpsAuthClient.java +++ b/vid-app-common/src/main/java/org/onap/vid/aai/util/HttpsAuthClient.java @@ -116,13 +116,13 @@ public class HttpsAuthClient { return new NoopHostnameVerifier(); } - private String getKeystorePath() { - return getCertificatesPath() + FileSystems.getDefault().getSeparator() + systemPropertyHelper.getAAIKeystoreFilename(); + protected String getKeystorePath() { + return systemPropertyHelper.getAAIKeystoreFilename().map(this::getCertificatesPathOf).orElse(""); } private void setSystemProperties() { - System.setProperty(SSL_TRUST_STORE, getCertificatesPath() + FileSystems.getDefault().getSeparator() + - systemPropertyHelper.getAAITruststoreFilename().orElse("")); + System.setProperty(SSL_TRUST_STORE, + systemPropertyHelper.getAAITruststoreFilename().map(this::getCertificatesPathOf).orElse("")); System.setProperty(SSL_TRUST_STORE_PASS_WORD, systemPropertyHelper.getDecryptedTruststorePassword()); } @@ -135,8 +135,11 @@ public class HttpsAuthClient { return config; } - private String getCertificatesPath() { - return certFilePath; + private String getCertificatesPathOf(String fileName) { + if (fileName.contains("/") || fileName.contains("\\")) { + return fileName; + } + return certFilePath + FileSystems.getDefault().getSeparator() + fileName; } } diff --git a/vid-app-common/src/test/java/org/onap/vid/aai/util/HttpsAuthClientTest.java b/vid-app-common/src/test/java/org/onap/vid/aai/util/HttpsAuthClientTest.java index 3336a8af9..b48efd619 100644 --- a/vid-app-common/src/test/java/org/onap/vid/aai/util/HttpsAuthClientTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/aai/util/HttpsAuthClientTest.java @@ -22,6 +22,7 @@ package org.onap.vid.aai.util; +import java.nio.file.FileSystems; import org.mockito.Mock; import org.onap.vid.aai.exceptions.HttpClientBuilderException; @@ -33,6 +34,7 @@ import org.togglz.core.manager.FeatureManager; import javax.net.ssl.SSLContext; import java.util.Optional; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.*; import static org.mockito.MockitoAnnotations.initMocks; @@ -55,6 +57,7 @@ public class HttpsAuthClientTest { public void setUp() throws Exception { initMocks(this); when(systemPropertyHelper.getAAITruststoreFilename()).thenReturn(Optional.of("filename")); + when(systemPropertyHelper.getAAIKeystoreFilename()).thenReturn(Optional.of("keystorefilename")); when(systemPropertyHelper.getDecryptedKeystorePassword()).thenReturn("password"); when(systemPropertyHelper.getDecryptedTruststorePassword()).thenReturn("password"); } @@ -78,6 +81,34 @@ public class HttpsAuthClientTest { verify(sslContextProvider).getSslContext(anyString(), anyString(), any()); } + @Test + public void getKeystorePath_whenNotConfigured_yieldEmptyString() { + // when + when(sslContextProvider.getSslContext(anyString(), anyString(), any())).thenReturn(sslContext); + + //then + assertThat(createTestSubject().getKeystorePath()).isEqualTo(CERT_FILE_PATH + FileSystems.getDefault().getSeparator() + "keystorefilename"); + } + + @Test + public void getKeystorePath_whenConfigured_yieldPathAndFile() { + // when + when(systemPropertyHelper.getAAIKeystoreFilename()).thenReturn(Optional.empty()); + + //then + assertThat(createTestSubject().getKeystorePath()).isEqualTo(""); + } + + @Test + public void getKeystorePath_whenConfiguredWithSlash_yieldFilenameWithoutPath() { + // when + final String filenameWithSlash = "/path/to/keystorefilename"; + when(systemPropertyHelper.getAAIKeystoreFilename()).thenReturn(Optional.of(filenameWithSlash)); + + //then + assertThat(createTestSubject().getKeystorePath()).isEqualTo(filenameWithSlash); + } + @Test public void testGetUnsecuredClient() throws Exception { // when -- cgit 1.2.3-korg