Add DataSize serializer for configprops endpoint

See gh-32645
This commit is contained in:
Guirong Hu
2022-10-09 16:31:57 +08:00
committed by Phillip Webb
parent e35de7164e
commit 3b25132e38
2 changed files with 51 additions and 1 deletions

View File

@@ -46,6 +46,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.mock.env.MockPropertySource;
import org.springframework.util.unit.DataSize;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.entry;
@@ -168,6 +169,19 @@ class ConfigurationPropertiesReportEndpointTests {
(properties) -> assertThat(properties.get("mixedBoolean")).isEqualTo(true)));
}
@Test
void descriptorWithDataSizeProperty() {
String configSize = "1MB";
String stringifySize = DataSize.parse(configSize).toString();
this.contextRunner.withUserConfiguration(DataSizePropertiesConfiguration.class)
.withPropertyValues(String.format("data.size=%s", configSize)).run(assertProperties("data",
(properties) -> assertThat(properties.get("size")).isEqualTo(stringifySize), (inputs) -> {
Map<String, Object> size = (Map<String, Object>) inputs.get("size");
assertThat(size.get("value")).isEqualTo(configSize);
assertThat(size.get("origin")).isEqualTo("\"data.size\" from property source \"test\"");
}));
}
@Test
void sanitizeWithDefaultSettings() {
this.contextRunner.withUserConfiguration(TestPropertiesConfiguration.class)
@@ -690,6 +704,27 @@ class ConfigurationPropertiesReportEndpointTests {
}
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(DataSizeProperties.class)
static class DataSizePropertiesConfiguration {
}
@ConfigurationProperties("data")
public static class DataSizeProperties {
private DataSize size;
public DataSize getSize() {
return this.size;
}
public void setSize(DataSize size) {
this.size = size;
}
}
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(Gh4415Properties.class)
static class Gh4415PropertiesConfiguration {