View Javadoc
1   package emissary.test.core.junit5;
2   
3   import ch.qos.logback.classic.Level;
4   import org.junit.jupiter.api.Test;
5   import org.opentest4j.AssertionFailedError;
6   import org.slf4j.Logger;
7   import org.slf4j.LoggerFactory;
8   
9   import java.util.ArrayList;
10  import java.util.List;
11  
12  import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
13  import static org.junit.jupiter.api.Assertions.assertNotNull;
14  import static org.junit.jupiter.api.Assertions.assertThrows;
15  import static org.junit.jupiter.api.Assertions.assertTrue;
16  
17  class LogbackTesterTest extends UnitTest {
18      @SuppressWarnings("HidingField")
19      protected Logger logger = LoggerFactory.getLogger("TESTY");
20  
21      @Test
22      void canCreateTester() {
23          LogbackTester logBackTester = new LogbackTester(logger.getName());
24          assertNotNull(logBackTester);
25      }
26  
27      @Test
28      void canCheckSingleEvent() {
29          LogbackTester logBackTester = new LogbackTester(logger.getName());
30          assertNotNull(logBackTester);
31          List<LogbackTester.SimplifiedLogEvent> events = new ArrayList<>();
32          LogbackTester.SimplifiedLogEvent event2 = new LogbackTester.SimplifiedLogEvent(Level.WARN, "Not good news.", new Exception("worse news"));
33          events.add(event2);
34          logger.warn("Not good news.", new Exception("worse news"));
35          assertDoesNotThrow(() -> logBackTester.checkLogList(events));
36      }
37  
38      @Test
39      void canDetectWrongMessage() {
40          LogbackTester logBackTester = new LogbackTester(logger.getName());
41          assertNotNull(logBackTester, "Expected tester to not be null.");
42          List<LogbackTester.SimplifiedLogEvent> events = new ArrayList<>();
43          LogbackTester.SimplifiedLogEvent event2 = new LogbackTester.SimplifiedLogEvent(Level.WARN, "Wrong Message.", new Exception("worse news"));
44          events.add(event2);
45          logger.warn("Not good news.", new Exception("worse news"));
46          AssertionFailedError thrownException =
47                  assertThrows(AssertionFailedError.class, () -> logBackTester.checkLogList(events), "Expected an exception.");
48          assertTrue(thrownException.getMessage().startsWith("Messages not equal"));
49      }
50  
51      @Test
52      void canDetectWrongLevel() {
53          LogbackTester logBackTester = new LogbackTester(logger.getName());
54          assertNotNull(logBackTester, "Expected tester to not be null.");
55          List<LogbackTester.SimplifiedLogEvent> events = new ArrayList<>();
56          LogbackTester.SimplifiedLogEvent event3 = new LogbackTester.SimplifiedLogEvent(Level.INFO, "Not good news.", new Exception("worse news"));
57          events.add(event3);
58          logger.warn("Not good news.", new Exception("worse news"));
59          AssertionFailedError thrownException =
60                  assertThrows(AssertionFailedError.class, () -> logBackTester.checkLogList(events), "Expected an exception.");
61          assertTrue(thrownException.getMessage().startsWith("Levels not equal"));
62      }
63  
64      @Test
65      void canDetectWrongThrowable() {
66          LogbackTester logBackTester = new LogbackTester(logger.getName());
67          assertNotNull(logBackTester, "Expected tester to not be null.");
68          List<LogbackTester.SimplifiedLogEvent> events = new ArrayList<>();
69          LogbackTester.SimplifiedLogEvent event4 = new LogbackTester.SimplifiedLogEvent(Level.WARN, "Not good news.", new Exception("something"));
70          events.add(event4);
71          logger.warn("Not good news.", new Throwable("worse news"));
72          AssertionFailedError thrownException =
73                  assertThrows(AssertionFailedError.class, () -> logBackTester.checkLogList(events), "Expected an exception.");
74          assertTrue(thrownException.getMessage().startsWith("Exception class name not"));
75      }
76  
77      @Test
78      void canDetectWrongThrowableMessage() {
79          LogbackTester logBackTester = new LogbackTester(logger.getName());
80          assertNotNull(logBackTester, "Expected tester to not be null.");
81          List<LogbackTester.SimplifiedLogEvent> events = new ArrayList<>();
82          LogbackTester.SimplifiedLogEvent event4 = new LogbackTester.SimplifiedLogEvent(Level.WARN, "Not good news.", new Exception("something"));
83          events.add(event4);
84          logger.warn("Not good news.", new Exception("worse news"));
85          AssertionFailedError thrownException =
86                  assertThrows(AssertionFailedError.class, () -> logBackTester.checkLogList(events), "Expected an exception.");
87          assertTrue(thrownException.getMessage().startsWith("Exception message not equal for"), thrownException.getMessage());
88      }
89  
90  }