From e244d75bd2ba96be8450171d26366481a1e37879 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Wed, 6 Sep 2017 12:24:57 +0200 Subject: [PATCH] Restore `endpoints.env.keys-to-sanitize` binding Closes gh-10174 --- .../actuate/endpoint/EnvironmentEndpoint.java | 2 ++ .../endpoint/EnvironmentEndpointTests.java | 35 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpoint.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpoint.java index 960a2ba1838..02fa5035d2c 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpoint.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpoint.java @@ -27,6 +27,7 @@ import java.util.stream.Stream; import org.springframework.boot.actuate.endpoint.EnvironmentEndpoint.EnvironmentDescriptor.PropertySourceDescriptor; import org.springframework.boot.actuate.endpoint.EnvironmentEndpoint.EnvironmentDescriptor.PropertySourceDescriptor.PropertyValueDescriptor; +import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.endpoint.Endpoint; import org.springframework.boot.endpoint.ReadOperation; import org.springframework.boot.endpoint.Selector; @@ -54,6 +55,7 @@ import org.springframework.web.bind.annotation.ResponseStatus; * @author Madhura Bhave */ @Endpoint(id = "env") +@ConfigurationProperties("endpoints.env") public class EnvironmentEndpoint { private final Sanitizer sanitizer = new Sanitizer(); diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpointTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpointTests.java index ecb27f7e00d..cc58c26a26d 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpointTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/EnvironmentEndpointTests.java @@ -26,8 +26,13 @@ import org.junit.Test; import org.springframework.boot.actuate.endpoint.EnvironmentEndpoint.EnvironmentDescriptor; import org.springframework.boot.actuate.endpoint.EnvironmentEndpoint.EnvironmentDescriptor.PropertySourceDescriptor; import org.springframework.boot.actuate.endpoint.EnvironmentEndpoint.EnvironmentDescriptor.PropertySourceDescriptor.PropertyValueDescriptor; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.util.TestPropertyValues; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.core.env.CompositePropertySource; +import org.springframework.core.env.Environment; import org.springframework.core.env.MapPropertySource; import org.springframework.core.env.MutablePropertySources; import org.springframework.core.env.StandardEnvironment; @@ -147,6 +152,23 @@ public class EnvironmentEndpointTests { clearSystemProperties("dbPassword", "apiKey"); } + @Test + public void keysToSanitizeCanBeConfiguredViaTheEnvironment() throws Exception { + ApplicationContextRunner tester = new ApplicationContextRunner() + .withSystemProperties("dbPassword=123456", "apiKey=123456") + .withPropertyValues("endpoints.env.keys-to-sanitize=.*pass.*") + .withUserConfiguration(Config.class); + tester.run((context) -> { + EnvironmentEndpoint endpoint = context + .getBean(EnvironmentEndpoint.class); + EnvironmentDescriptor env = endpoint.environment(null); + Map systemProperties = getSource( + "systemProperties", env).getProperties(); + assertThat(systemProperties.get("dbPassword").getValue()).isEqualTo("******"); + assertThat(systemProperties.get("apiKey").getValue()).isEqualTo("123456"); + }); + } + @Test public void propertyWithPlaceholderResolved() { StandardEnvironment environment = new StandardEnvironment(); @@ -220,4 +242,17 @@ public class EnvironmentEndpointTests { .filter((source) -> name.equals(source.getName())).findFirst().get(); } + + @Configuration + @EnableConfigurationProperties + static class Config { + + @Bean + public EnvironmentEndpoint environmentEndpoint(Environment environment) { + return new EnvironmentEndpoint(environment); + } + + } + + }