@Test public void builderBuildsMapperWithMixInsIfConfigured() { // given JacksonJsonLayout.Builder builder = spy(JacksonJsonLayout.newBuilder()); builder.withMixins(JacksonMixInTest.createDefaultTestBuilder().build()); ObjectMapper objectMapper = Mockito.mock(ObjectMapper.class); when(builder.createDefaultObjectMapper()).thenReturn(objectMapper); // when builder.build(); // then ArgumentCaptor<ExtendedLog4j2JsonModule> captor = ArgumentCaptor.forClass(ExtendedLog4j2JsonModule.class); verify(objectMapper).registerModule(captor.capture()); Module.SetupContext setupContext = mock(Module.SetupContext.class); captor.getValue().setupModule(setupContext); verify(setupContext).setMixInAnnotations(eq(LogEvent.class), eq(LogEventJacksonJsonMixIn.class)); }
@Test public void builderThrowsOnTargetClassNotFound() { // given JacksonMixIn.Builder builder = createDefaultTestBuilder(); String targetClass = "org.appenders.test.NonExistingClass"; builder.withTargetClass(targetClass); expectedException.expect(ConfigurationException.class); expectedException.expectMessage("Cannot load targetClass"); expectedException.expectMessage(targetClass); // when builder.build(); }
@Test public void builderThrowsOnMixInClassNotFound() { // given JacksonMixIn.Builder builder = createDefaultTestBuilder(); String mixInClass = "org.appenders.test.NonExistingClass"; builder.withMixInClass(mixInClass); expectedException.expect(ConfigurationException.class); expectedException.expectMessage("Cannot load mixInClass"); expectedException.expectMessage(mixInClass); // when builder.build(); }
@Test public void buiderSucceedsOnValidConfig() { // given JacksonMixIn.Builder builder = createDefaultTestBuilder(); // when JacksonMixIn jacksonMixIn = builder.build(); // then assertNotNull(jacksonMixIn); assertEquals(Log4jLogEvent.class, jacksonMixIn.getTargetClass()); assertEquals(LogEventJacksonJsonMixIn.class, jacksonMixIn.getMixInClass()); }
@Test public void builderThrowsOnNullTargetClass() { // given JacksonMixIn.Builder builder = createDefaultTestBuilder(); builder.withTargetClass(null); expectedException.expect(ConfigurationException.class); expectedException.expectMessage("No targetClass provided for " + JacksonMixIn.PLUGIN_NAME); // when builder.build(); }
@Test public void builderThrowsOnNullMixInClass() { // given JacksonMixIn.Builder builder = createDefaultTestBuilder(); builder.withMixInClass(null); expectedException.expect(ConfigurationException.class); expectedException.expectMessage("No mixInClass provided for " + JacksonMixIn.PLUGIN_NAME); // when builder.build(); }