1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  package org.apache.james.transport.mailets;
22  
23  import junit.framework.TestCase;
24  import org.apache.mailet.base.test.FakeMailContext;
25  import org.apache.mailet.base.test.FakeMailetConfig;
26  import org.apache.mailet.base.test.MailUtil;
27  import org.apache.mailet.Mail;
28  import org.apache.mailet.Mailet;
29  
30  import javax.mail.MessagingException;
31  import javax.mail.internet.MimeMessage;
32  import javax.mail.internet.ParseException;
33  import java.io.UnsupportedEncodingException;
34  
35  public class AddSubjectPrefixTest extends TestCase {
36  
37      private MimeMessage mockedMimeMessage;
38  
39      private Mail mockedMail;
40  
41      private Mailet mailet;
42  
43      private final String SUBJECT_PREFIX = "JUNIT";
44  
45      private String subject = null;
46  
47      public AddSubjectPrefixTest(String arg0)
48              throws UnsupportedEncodingException {
49          super(arg0);
50      }
51  
52      private void setSubject(String subject) {
53          this.subject = subject;
54      }
55  
56      private void setupMockedMimeMessage() throws MessagingException {
57          mockedMimeMessage = MailUtil.createMimeMessageWithSubject(subject);
58      }
59  
60      private void setupMockedMail(MimeMessage m) throws ParseException {
61          mockedMail = MailUtil.createMockMail2Recipients(m);
62      }
63  
64      private void setupMailet() throws MessagingException {
65          setupMockedMimeMessage();
66          mailet = new AddSubjectPrefix();
67          FakeMailetConfig mci = new FakeMailetConfig("Test", new FakeMailContext());
68          mci.setProperty("subjectPrefix", SUBJECT_PREFIX);
69  
70          mailet.init(mci);
71      }
72  
73      private void setupInvalidMailet() throws MessagingException {
74          setupMockedMimeMessage();
75          mailet = new AddSubjectPrefix();
76          FakeMailetConfig mci = new FakeMailetConfig("Test", new FakeMailContext());
77          mci.setProperty("subjectPrefix", "");
78  
79          mailet.init(mci);
80      }
81  
82      
83      public void testSubjectPrefixWasAdded() throws MessagingException {
84          setSubject("test");
85          setupMockedMimeMessage();
86          setupMockedMail(mockedMimeMessage);
87          setupMailet();
88  
89          mailet.service(mockedMail);
90  
91          assertEquals(SUBJECT_PREFIX + " " + subject, mockedMail.getMessage().getSubject());
92  
93      }
94  
95      
96      public void testSubjectPrefixWasAddedWithoutSubject()
97              throws MessagingException {
98          setupMockedMimeMessage();
99          setupMockedMail(mockedMimeMessage);
100         setupMailet();
101 
102         mailet.service(mockedMail);
103 
104         assertEquals(SUBJECT_PREFIX, mockedMail.getMessage().getSubject());
105 
106     }
107 
108     
109     public void testThrowException() throws MessagingException {
110         boolean exceptionThrown = false;
111         setupMockedMimeMessage();
112         setupMockedMail(mockedMimeMessage);
113 
114         try {
115             setupInvalidMailet();
116         } catch (MessagingException m) {
117             exceptionThrown = true;
118         }
119         assertTrue(exceptionThrown);
120 
121     }
122 }