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 }