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 }