From 650886bce7e1e446fedc21c8f83538dc0c643544 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 14 Sep 2021 08:34:04 +0200 Subject: [PATCH] Consider spring.cloud.vault.kv.application-name using the Config Data API. Resolves gh-608 --- .../VaultConfigDataLocationResolver.java | 5 ++-- ...PropertySourceLocatorIntegrationTests.java | 23 ++++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultConfigDataLocationResolver.java b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultConfigDataLocationResolver.java index 9fdaec47..72b27cae 100644 --- a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultConfigDataLocationResolver.java +++ b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultConfigDataLocationResolver.java @@ -191,8 +191,9 @@ public class VaultConfigDataLocationResolver implements ConfigDataLocationResolv Binder binder = context.getBinder(); - kvProperties.setApplicationName(binder.bind("spring.cloud.vault.application-name", String.class) - .orElseGet(() -> binder.bind("spring.application.name", String.class).orElse(""))); + kvProperties.setApplicationName(binder.bind("spring.cloud.vault.kv.application-name", String.class) + .orElseGet(() -> binder.bind("spring.cloud.vault.application-name", String.class) + .orElseGet(() -> binder.bind("spring.application.name", String.class).orElse("")))); kvProperties.setProfiles(profiles.getActive()); return kvProperties; diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultPropertySourceLocatorIntegrationTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultPropertySourceLocatorIntegrationTests.java index 1eeb1d60..cf89bccd 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultPropertySourceLocatorIntegrationTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultPropertySourceLocatorIntegrationTests.java @@ -41,9 +41,8 @@ import static org.assertj.core.api.Assertions.assertThat; */ @RunWith(SpringRunner.class) @SpringBootTest(classes = VaultPropertySourceLocatorIntegrationTests.TestApplication.class, - properties = { "spring.application.name=wintermute", "spring.cloud.vault.application-name=neuromancer", - "spring.cloud.vault.kv.application-name=neuromancer,icebreaker", - "spring.cloud.bootstrap.enabled=true" }) + properties = { "spring.cloud.vault.kv.application-name=neuromancer,icebreaker", + "spring.cloud.bootstrap.enabled=false", "spring.config.import=vault://" }) @ActiveProfiles({ "integrationtest" }) public class VaultPropertySourceLocatorIntegrationTests extends IntegrationTestSupport { @@ -60,27 +59,29 @@ public class VaultPropertySourceLocatorIntegrationTests extends IntegrationTestS vaultRule.before(); vaultRule.prepare().getVaultOperations().write("secret/wintermute", - Collections.singletonMap("vault.value", "spring.application.name value")); + Collections.singletonMap("vault.value", "wintermute")); vaultRule.prepare().getVaultOperations().write("secret/wintermute/integrationtest", - Collections.singletonMap("vault.value", "spring.application.name:integrationtest value")); + Collections.singletonMap("vault.value", "integrationtest wintermute")); + vaultRule.prepare().getVaultOperations().write("secret/neuromancer", - Collections.singletonMap("vault.value", "spring.cloud.vault.applicationName value")); + Collections.singletonMap("vault.value", "neuromancer")); vaultRule.prepare().getVaultOperations().write("secret/neuromancer/integrationtest", - Collections.singletonMap("vault.value", "spring.cloud.vault.applicationName:integrationtest value")); + Collections.singletonMap("vault.value", "integrationtest neuromancer")); + vaultRule.prepare().getVaultOperations().write("secret/icebreaker", - Collections.singletonMap("icebreaker.value", "additional context value")); + Collections.singletonMap("icebreaker.value", "icebreaker")); vaultRule.prepare().getVaultOperations().write("secret/icebreaker/integrationtest", - Collections.singletonMap("icebreaker.value", "additional context:integrationtest value")); + Collections.singletonMap("icebreaker.value", "integrationtest icebreaker")); } @Test public void getsSecretFromVaultUsingVaultApplicationName() { - assertThat(this.configValue).isEqualTo("spring.cloud.vault.applicationName:integrationtest value"); + assertThat(this.configValue).isEqualTo("integrationtest neuromancer"); } @Test public void getsSecretFromVaultUsingAdditionalContext() { - assertThat(this.additionalValue).isEqualTo("additional context:integrationtest value"); + assertThat(this.additionalValue).isEqualTo("integrationtest icebreaker"); } @SpringBootApplication