Merge pull request #34615 from RohanGoyal17

* pr/34615:
  Polish 'Add SanitizableData.withSanitizedValue method'
  Add SanitizableData.withSanitizedValue method

Closes gh-34615
This commit is contained in:
Phillip Webb
2023-03-15 15:18:40 -07:00
2 changed files with 82 additions and 1 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2021 the original author or authors.
* Copyright 2012-2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,6 +22,7 @@ import org.springframework.core.env.PropertySource;
* Value object that represents the data that can be used by a {@link SanitizingFunction}.
*
* @author Madhura Bhave
* @author Rohan Goyal
* @since 2.6.0
**/
public final class SanitizableData {
@@ -74,6 +75,15 @@ public final class SanitizableData {
return this.value;
}
/**
* Return a new {@link SanitizableData} instance with sanatized value.
* @return a new sanitizable data instance.
* @since 3.1.0
*/
public SanitizableData withSanitizedValue() {
return withValue(SANITIZED_VALUE);
}
/**
* Return a new {@link SanitizableData} instance with a different value.
* @param value the new value (often {@link #SANITIZED_VALUE}

View File

@@ -0,0 +1,71 @@
/*
* Copyright 2012-2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.actuate.endpoint;
import java.util.Map;
import org.junit.jupiter.api.Test;
import org.springframework.core.env.MapPropertySource;
import org.springframework.core.env.PropertySource;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests for {@link SanitizableData}.
*
* @author Phillip Webb
*/
class SanitizableDataTests {
private final PropertySource<?> propertySource = new MapPropertySource("test", Map.of("key", "value"));
@Test
void getPropertySourceReturnsPropertySource() {
SanitizableData data = new SanitizableData(this.propertySource, "key", "value");
assertThat(data.getPropertySource()).isSameAs(this.propertySource);
}
@Test
void getKeyReturnsKey() {
SanitizableData data = new SanitizableData(this.propertySource, "key", "value");
assertThat(data.getKey()).isEqualTo("key");
}
@Test
void getValueReturnsValue() {
SanitizableData data = new SanitizableData(this.propertySource, "key", "value");
assertThat(data.getValue()).isEqualTo("value");
}
@Test
void withSanitizedValueReturnsNewInstanceWithSanitizedValue() {
SanitizableData data = new SanitizableData(this.propertySource, "key", "value");
SanitizableData sanitized = data.withSanitizedValue();
assertThat(data.getValue()).isEqualTo("value");
assertThat(sanitized.getValue()).isEqualTo("******");
}
@Test
void withValueReturnsNewInstanceWithNewValue() {
SanitizableData data = new SanitizableData(this.propertySource, "key", "value");
SanitizableData sanitized = data.withValue("eulav");
assertThat(data.getValue()).isEqualTo("value");
assertThat(sanitized.getValue()).isEqualTo("eulav");
}
}