1 package ch.qos.logback.classic.net; 2 3 import static org.junit.Assert.assertEquals; 4 import static org.junit.Assert.assertTrue; 5 import static org.junit.Assert.fail; 6 7 import javax.mail.Address; 8 import javax.mail.MessagingException; 9 10 import org.junit.After; 11 import org.junit.Before; 12 import org.junit.Test; 13 14 import ch.qos.logback.classic.Level; 15 import ch.qos.logback.classic.LoggerContext; 16 import ch.qos.logback.classic.PatternLayout; 17 import ch.qos.logback.classic.spi.LoggingEvent; 18 import ch.qos.logback.core.Layout; 19 20 public class DilutedSMTPAppenderTest { 21 22 SMTPAppender appender; 23 24 @Before 25 public void setUp() throws Exception { 26 LoggerContext lc = new LoggerContext(); 27 appender = new SMTPAppender(); 28 appender.setContext(lc); 29 appender.setName("smtp"); 30 appender.setFrom("user@host.dom"); 31 appender.setLayout(buildLayout(lc)); 32 appender.setSMTPHost("mail2.qos.ch"); 33 appender.setSubject("logging report"); 34 appender.addTo("sebastien.nospam@qos.ch"); 35 appender.start(); 36 } 37 38 private static Layout<LoggingEvent> buildLayout(LoggerContext lc) { 39 PatternLayout layout = new PatternLayout(); 40 layout.setContext(lc); 41 layout.setFileHeader("Some header\n"); 42 layout.setPattern("%-4relative [%thread] %-5level %class - %msg%n"); 43 layout.setFileFooter("Some footer"); 44 layout.start(); 45 return layout; 46 } 47 48 @After 49 public void tearDown() throws Exception { 50 appender = null; 51 } 52 53 @Test 54 public void testStart() { 55 try { 56 Address[] addressArray = appender.getMessage().getFrom(); 57 Address address = addressArray[0]; 58 assertEquals("user@host.dom", address.toString()); 59 60 addressArray = null; 61 address = null; 62 63 addressArray = appender.getMessage().getAllRecipients(); 64 address = addressArray[0]; 65 assertEquals("sebastien.nospam@qos.ch", address.toString()); 66 67 assertEquals("logging report", appender.getSubject()); 68 69 assertTrue(appender.isStarted()); 70 71 } catch (MessagingException ex) { 72 fail("Unexpected exception."); 73 } 74 } 75 76 @Test 77 public void testAppendNonTriggeringEvent() { 78 LoggingEvent event = new LoggingEvent(); 79 event.setThreadName("thead name"); 80 event.setLevel(Level.DEBUG); 81 appender.subAppend(event); 82 assertEquals(1, appender.cb.length()); 83 } 84 85 @Test 86 public void testEntryConditionsCheck() { 87 appender.checkEntryConditions(); 88 assertEquals(0, appender.getContext().getStatusManager().getCount()); 89 } 90 91 @Test 92 public void testEntryConditionsCheckNoMessage() { 93 appender.setMessage(null); 94 appender.checkEntryConditions(); 95 assertEquals(1, appender.getContext().getStatusManager().getCount()); 96 } 97 98 @Test 99 public void testTriggeringPolicy() { 100 appender.setEvaluator(null); 101 appender.checkEntryConditions(); 102 assertEquals(1, appender.getContext().getStatusManager().getCount()); 103 } 104 105 @Test 106 public void testEntryConditionsCheckNoLayout() { 107 appender.setLayout(null); 108 appender.checkEntryConditions(); 109 assertEquals(1, appender.getContext().getStatusManager().getCount()); 110 } 111 112 113 114 115 }