View Javadoc
1   /*
2    * Licensed under the GPL License. You may not use this file except in compliance with the License.
3    * You may obtain a copy of the License at
4    *
5    *   https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
6    *
7    * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
8    * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
9    * PURPOSE.
10   */
11  package psiprobe.tools.logging.log4j2;
12  
13  import static org.junit.jupiter.api.Assertions.assertEquals;
14  import static org.junit.jupiter.api.Assertions.assertNotNull;
15  import static org.junit.jupiter.api.Assertions.assertTrue;
16  import static org.mockito.ArgumentMatchers.any;
17  import static org.mockito.ArgumentMatchers.eq;
18  import static org.mockito.Mockito.doReturn;
19  import static org.mockito.Mockito.mock;
20  import static org.mockito.Mockito.spy;
21  
22  import java.util.HashMap;
23  import java.util.Map;
24  
25  import org.junit.jupiter.api.BeforeEach;
26  import org.junit.jupiter.api.Test;
27  
28  /**
29   * The Class Log4J2LoggerConfigAccessorTest.
30   */
31  class Log4J2LoggerConfigAccessorTest {
32  
33    /** The accessor. */
34    private Log4J2LoggerConfigAccessor accessor;
35  
36    /** The mock target. */
37    private Object mockTarget;
38  
39    /** The mock logger context. */
40    private Log4J2LoggerContextAccessor mockLoggerContext;
41  
42    /**
43     * Sets the up.
44     */
45    @BeforeEach
46    void setUp() {
47      accessor = new Log4J2LoggerConfigAccessor();
48      mockTarget = mock(Object.class);
49      mockLoggerContext = mock(Log4J2LoggerContextAccessor.class);
50      accessor.setLoggerContext(mockLoggerContext);
51    }
52  
53    /**
54     * Test set and get context.
55     */
56    @Test
57    void testSetAndGetContext() {
58      accessor.setContext(true);
59      assertTrue(accessor.isContext());
60    }
61  
62    /**
63     * Test set target and get appenders.
64     */
65    @Test
66    void testSetTargetAndGetAppenders() {
67      Map<String, Object> appenderMap = new HashMap<>();
68      Object appender = mock(Object.class);
69      appenderMap.put("A1", appender);
70  
71      Log4J2AppenderAccessor wrapped = mock(Log4J2AppenderAccessor.class);
72  
73      Log4J2LoggerConfigAccessor spyAccessor = spy(accessor);
74      doReturn(appenderMap).when(spyAccessor).invokeMethod(any(), eq("getAppenders"), any(), any());
75      doReturn(wrapped).when(spyAccessor).wrapAppender(any());
76  
77      spyAccessor.setTarget(mockTarget);
78      assertEquals(1, spyAccessor.getAppenders().size());
79    }
80  
81    /**
82     * Test get appender by name.
83     */
84    @Test
85    void testGetAppenderByName() {
86      Map<String, Object> appenderMap = new HashMap<>();
87      Object appender = mock(Object.class);
88      appenderMap.put("A1", appender);
89  
90      Log4J2LoggerConfigAccessor spyAccessor = spy(accessor);
91      doReturn(appenderMap).when(spyAccessor).invokeMethod(any(), eq("getAppenders"), any(), any());
92      doReturn(new Log4J2AppenderAccessor()).when(spyAccessor).wrapAppender(any());
93  
94      spyAccessor.setTarget(mockTarget);
95      assertNotNull(spyAccessor.getAppender("A1"));
96    }
97  
98    /**
99     * Test is root.
100    */
101   @Test
102   void testIsRoot() {
103     Log4J2LoggerConfigAccessor spyAccessor = spy(accessor);
104     doReturn("").when(spyAccessor).getName();
105     assertTrue(spyAccessor.isRoot());
106   }
107 
108 }