StructuredLoggingJsonPropertiesJsonMembersCustomizerTests Class — spring-boot Architecture
Architecture documentation for the StructuredLoggingJsonPropertiesJsonMembersCustomizerTests class in StructuredLoggingJsonPropertiesJsonMembersCustomizerTests.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot/src/test/java/org/springframework/boot/logging/structured/StructuredLoggingJsonPropertiesJsonMembersCustomizerTests.java lines 42–172
@ExtendWith(MockitoExtension.class)
class StructuredLoggingJsonPropertiesJsonMembersCustomizerTests {
@Mock
@SuppressWarnings({ "rawtypes", "NullAway.Init" })
private Instantiator instantiator;
@Test
void customizeWhenHasExcludeFiltersMember() {
StructuredLoggingJsonProperties properties = new StructuredLoggingJsonProperties(Collections.emptySet(),
Set.of("a"), Collections.emptyMap(), Collections.emptyMap(), null, null, null);
StructuredLoggingJsonPropertiesJsonMembersCustomizer customizer = new StructuredLoggingJsonPropertiesJsonMembersCustomizer(
this.instantiator, properties, false);
assertThat(writeSampleJson(customizer)).doesNotContain("a").contains("b");
}
@Test
void customizeWhenHasIncludeFiltersOtherMembers() {
StructuredLoggingJsonProperties properties = new StructuredLoggingJsonProperties(Set.of("a"),
Collections.emptySet(), Collections.emptyMap(), Collections.emptyMap(), null, null, null);
StructuredLoggingJsonPropertiesJsonMembersCustomizer customizer = new StructuredLoggingJsonPropertiesJsonMembersCustomizer(
this.instantiator, properties, false);
assertThat(writeSampleJson(customizer)).contains("a")
.doesNotContain("b")
.doesNotContain("c")
.doesNotContain("d");
}
@Test
void customizeWhenHasIncludeAndExcludeFiltersMembers() {
StructuredLoggingJsonProperties properties = new StructuredLoggingJsonProperties(Set.of("a", "b"), Set.of("b"),
Collections.emptyMap(), Collections.emptyMap(), null, null, null);
StructuredLoggingJsonPropertiesJsonMembersCustomizer customizer = new StructuredLoggingJsonPropertiesJsonMembersCustomizer(
this.instantiator, properties, false);
assertThat(writeSampleJson(customizer)).contains("a")
.doesNotContain("b")
.doesNotContain("c")
.doesNotContain("d");
}
@Test
void customizeWhenHasRenameRenamesMember() {
StructuredLoggingJsonProperties properties = new StructuredLoggingJsonProperties(Collections.emptySet(),
Collections.emptySet(), Map.of("a", "z"), Collections.emptyMap(), null, null, null);
StructuredLoggingJsonPropertiesJsonMembersCustomizer customizer = new StructuredLoggingJsonPropertiesJsonMembersCustomizer(
this.instantiator, properties, false);
assertThat(writeSampleJson(customizer)).contains("\"z\":\"a\"");
}
@Test
void customizeWhenHasAddAddsMember() {
StructuredLoggingJsonProperties properties = new StructuredLoggingJsonProperties(Collections.emptySet(),
Collections.emptySet(), Collections.emptyMap(), Map.of("z", "z"), null, null, null);
StructuredLoggingJsonPropertiesJsonMembersCustomizer customizer = new StructuredLoggingJsonPropertiesJsonMembersCustomizer(
this.instantiator, properties, false);
assertThat(writeSampleJson(customizer)).contains("\"z\":\"z\"");
}
@Test
void customizeWhenHasNestedAddAddsMember() {
StructuredLoggingJsonProperties properties = new StructuredLoggingJsonProperties(Collections.emptySet(),
Collections.emptySet(), Collections.emptyMap(), Map.of("y.z", "yz"), null, null, null);
StructuredLoggingJsonPropertiesJsonMembersCustomizer customizer = new StructuredLoggingJsonPropertiesJsonMembersCustomizer(
this.instantiator, properties, true);
assertThat(writeSampleJson(customizer)).contains("\"y\":{\"z\":\"yz\"}");
}
@Test
@SuppressWarnings("unchecked")
void customizeWhenHasCustomizerCustomizesMember() {
StructuredLoggingJsonMembersCustomizer<?> uppercaseCustomizer = (members) -> members
.applyingNameProcessor(NameProcessor.of(String::toUpperCase));
given(this.instantiator.instantiateType(TestCustomizer.class)).willReturn(uppercaseCustomizer);
StructuredLoggingJsonProperties properties = new StructuredLoggingJsonProperties(Collections.emptySet(),
Collections.emptySet(), Collections.emptyMap(), Collections.emptyMap(), null, null,
Set.of(TestCustomizer.class));
StructuredLoggingJsonPropertiesJsonMembersCustomizer customizer = new StructuredLoggingJsonPropertiesJsonMembersCustomizer(
this.instantiator, properties, false);
assertThat(writeSampleJson(customizer)).contains("\"A\":\"a\"");
}
@Test
@SuppressWarnings("unchecked")
void customizeWhenHasCustomizersCustomizesMember() {
given(this.instantiator.instantiateType(FooCustomizer.class)).willReturn(new FooCustomizer());
given(this.instantiator.instantiateType(BarCustomizer.class)).willReturn(new BarCustomizer());
StructuredLoggingJsonProperties properties = new StructuredLoggingJsonProperties(Collections.emptySet(),
Collections.emptySet(), Collections.emptyMap(), Collections.emptyMap(), null, null,
Set.of(FooCustomizer.class, BarCustomizer.class));
StructuredLoggingJsonPropertiesJsonMembersCustomizer customizer = new StructuredLoggingJsonPropertiesJsonMembersCustomizer(
this.instantiator, properties, false);
assertThat(writeSampleJson(customizer)).contains("\"foo\":\"foo\"").contains("\"bar\":\"bar\"");
}
@SuppressWarnings({ "rawtypes", "unchecked" })
private String writeSampleJson(StructuredLoggingJsonMembersCustomizer customizer) {
return JsonWriter.of((members) -> {
members.add("a", "a");
members.add("b", "b");
members.add("c", "c");
customizer.customize(members);
}).writeToString(new Object());
}
static class TestCustomizer implements StructuredLoggingJsonMembersCustomizer<String> {
@Override
public void customize(Members<String> members) {
}
}
static class FooCustomizer implements StructuredLoggingJsonMembersCustomizer<String> {
@Override
public void customize(Members<String> members) {
members.add("foo", "foo");
}
}
static class BarCustomizer implements StructuredLoggingJsonMembersCustomizer<String> {
@Override
public void customize(Members<String> members) {
members.add("bar", "bar");
}
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free