Home / Class/ StructuredLoggingJsonPropertiesJsonMembersCustomizerTests Class — spring-boot Architecture

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

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free