Restore `endpoints.env.keys-to-sanitize` binding

Closes gh-10174
This commit is contained in:
Stephane Nicoll 2017-09-06 12:24:57 +02:00
parent 1cf7c32a1e
commit e244d75bd2
2 changed files with 37 additions and 0 deletions

View File

@ -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();

View File

@ -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<String, PropertyValueDescriptor> 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);
}
}
}