diff --git a/src/main/java/com/bettercloud/vault/VaultConfig.java b/src/main/java/com/bettercloud/vault/VaultConfig.java index 7d4545fd..67f0ca25 100644 --- a/src/main/java/com/bettercloud/vault/VaultConfig.java +++ b/src/main/java/com/bettercloud/vault/VaultConfig.java @@ -315,7 +315,7 @@ public VaultConfig build() throws VaultException { if (this.address == null) { final String addressFromEnv = environmentLoader.loadVariable(VAULT_ADDR); if (addressFromEnv != null) { - this.address = addressFromEnv; + address(addressFromEnv); } else { throw new VaultException("No address is set"); } diff --git a/src/test/java/com/bettercloud/vault/VaultConfigTests.java b/src/test/java/com/bettercloud/vault/VaultConfigTests.java index 3a49a45b..2897b4d8 100644 --- a/src/test/java/com/bettercloud/vault/VaultConfigTests.java +++ b/src/test/java/com/bettercloud/vault/VaultConfigTests.java @@ -106,6 +106,23 @@ public void testConfigConstructor_NormalizesAddress() throws VaultException { assertEquals("https://localhost:8200", config.getAddress()); } + /** + * Test creating a new VaultConfig via its constructor, take address from environment and ensuring + * that addresses are normalized to not have a trailing slash. + * + * @throws VaultException + */ + @Test + public void testConfigConstructor_NormalizesAddressFromEnv() throws VaultException { + final MockEnvironmentLoader mock = new MockEnvironmentLoader(); + mock.override("VAULT_ADDR", "https://localhost:8200/"); + + final VaultConfig config = new VaultConfig() + .environmentLoader(mock) + .build(); + assertEquals("https://localhost:8200", config.getAddress()); + } + /** * Test creating a new VaultConfig via its constructor, passing null address and token values AND * having them unavailable in the environment variables too. This should cause initialization failure.