1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.mail.util;
18
19 import junit.framework.TestCase;
20
21 import javax.activation.DataSource;
22 import javax.mail.Session;
23 import javax.mail.internet.MimeMessage;
24 import java.io.File;
25 import java.util.List;
26 import java.util.Properties;
27
28
29
30
31 public class MimeMessageParserTest
32 extends TestCase
33 {
34
35
36
37
38
39 public MimeMessageParserTest(String name)
40 {
41 super(name);
42 }
43
44
45
46
47
48 public void testParseSimpleEmail() throws Exception
49 {
50 Session session = Session.getDefaultInstance(new Properties());
51 MimeMessage message = MimeMessageUtils.createMimeMessage(session, new File("./src/test/resources/eml/simple.eml"));
52 MimeMessageParser mimeMessageParser = new MimeMessageParser(message);
53
54 mimeMessageParser.parse();
55
56 assertEquals("Test HTML Send #1 Subject (wo charset)", mimeMessageParser.getSubject());
57 assertNotNull(mimeMessageParser.getMimeMessage());
58 assertTrue(mimeMessageParser.isMultipart());
59 assertFalse(mimeMessageParser.hasHtmlContent());
60 assertTrue(mimeMessageParser.hasPlainContent());
61 assertNotNull(mimeMessageParser.getPlainContent());
62 assertNull(mimeMessageParser.getHtmlContent());
63 assertTrue(mimeMessageParser.getTo().size() == 1);
64 assertTrue(mimeMessageParser.getCc().size() == 0);
65 assertTrue(mimeMessageParser.getBcc().size() == 0);
66 assertEquals("test_from@apache.org", mimeMessageParser.getFrom());
67 assertEquals("test_from@apache.org", mimeMessageParser.getReplyTo());
68 assertFalse(mimeMessageParser.hasAttachments());
69 }
70
71 public void testParseSimpleReplyEmail() throws Exception
72 {
73 Session session = Session.getDefaultInstance(new Properties());
74 MimeMessage message = MimeMessageUtils.createMimeMessage(session, new File("./src/test/resources/eml/simple-reply.eml"));
75 MimeMessageParser mimeMessageParser = new MimeMessageParser(message);
76
77 mimeMessageParser.parse();
78
79 assertEquals("Re: java.lang.NoClassDefFoundError: org/bouncycastle/asn1/pkcs/PrivateKeyInfo", mimeMessageParser.getSubject());
80 assertNotNull(mimeMessageParser.getMimeMessage());
81 assertFalse(mimeMessageParser.isMultipart());
82 assertFalse(mimeMessageParser.hasHtmlContent());
83 assertTrue(mimeMessageParser.hasPlainContent());
84 assertNotNull(mimeMessageParser.getPlainContent());
85 assertNull(mimeMessageParser.getHtmlContent());
86 assertTrue(mimeMessageParser.getTo().size() == 1);
87 assertTrue(mimeMessageParser.getCc().size() == 0);
88 assertTrue(mimeMessageParser.getBcc().size() == 0);
89 assertEquals("coheigea@apache.org", mimeMessageParser.getFrom());
90 assertEquals("dev@ws.apache.org", mimeMessageParser.getReplyTo());
91 assertFalse(mimeMessageParser.hasAttachments());
92 }
93
94 public void testParseHtmlEmailWithAttachments() throws Exception
95 {
96 DataSource dataSource;
97 Session session = Session.getDefaultInstance(new Properties());
98 MimeMessage message = MimeMessageUtils.createMimeMessage(session, new File("./src/test/resources/eml/html-attachment.eml"));
99 MimeMessageParser mimeMessageParser = new MimeMessageParser(message);
100
101 mimeMessageParser.parse();
102
103 assertEquals("Test", mimeMessageParser.getSubject());
104 assertNotNull(mimeMessageParser.getMimeMessage());
105 assertTrue(mimeMessageParser.isMultipart());
106 assertTrue(mimeMessageParser.hasHtmlContent());
107 assertTrue(mimeMessageParser.hasPlainContent());
108 assertNotNull(mimeMessageParser.getPlainContent());
109 assertNotNull(mimeMessageParser.getHtmlContent());
110 assertTrue(mimeMessageParser.getTo().size() == 1);
111 assertTrue(mimeMessageParser.getCc().size() == 0);
112 assertTrue(mimeMessageParser.getBcc().size() == 0);
113 assertEquals("siegfried.goeschl@it20one.at", mimeMessageParser.getFrom());
114 assertEquals("siegfried.goeschl@it20one.at", mimeMessageParser.getReplyTo());
115 assertTrue(mimeMessageParser.hasAttachments());
116 List<?> attachmentList = mimeMessageParser.getAttachmentList();
117 assertTrue(attachmentList.size() == 2);
118
119 dataSource = mimeMessageParser.findAttachmentByName("Wasserlilien.jpg");
120 assertNotNull(dataSource);
121 assertEquals("image/jpeg", dataSource.getContentType());
122
123 dataSource = mimeMessageParser.findAttachmentByName("it20one.pdf");
124 assertNotNull(dataSource);
125 assertEquals("application/pdf", dataSource.getContentType());
126 }
127
128
129
130
131
132
133
134 public void testParseMultipartReport() throws Exception
135 {
136 DataSource dataSource;
137 Session session = Session.getDefaultInstance(new Properties());
138 MimeMessage message = MimeMessageUtils.createMimeMessage(session, new File("./src/test/resources/eml/multipart-report.eml"));
139 MimeMessageParser mimeMessageParser = new MimeMessageParser(message);
140
141 mimeMessageParser.parse();
142
143 assertEquals("Gelesen: ", mimeMessageParser.getSubject());
144 assertNotNull(mimeMessageParser.getMimeMessage());
145 assertTrue(mimeMessageParser.isMultipart());
146 assertTrue(mimeMessageParser.hasHtmlContent());
147 assertFalse(mimeMessageParser.hasPlainContent());
148 assertNull(mimeMessageParser.getPlainContent());
149 assertNotNull(mimeMessageParser.getHtmlContent());
150 assertTrue(mimeMessageParser.getTo().size() == 1);
151 assertTrue(mimeMessageParser.getCc().size() == 0);
152 assertTrue(mimeMessageParser.getBcc().size() == 0);
153 assertEquals("siegfried.goeschl@it20one.at", mimeMessageParser.getFrom());
154 assertEquals("siegfried.goeschl@it20one.at", mimeMessageParser.getReplyTo());
155 assertTrue(mimeMessageParser.hasAttachments());
156 List<?> attachmentList = mimeMessageParser.getAttachmentList();
157 assertTrue(attachmentList.size() == 1);
158
159 dataSource = (DataSource) attachmentList.get(0);
160 assertNotNull(dataSource);
161 assertNull(dataSource.getName());
162 assertEquals("message/disposition-notification", dataSource.getContentType());
163 }
164
165
166
167
168
169
170
171 public void testAttachmentOnly() throws Exception
172 {
173 DataSource dataSource;
174 Session session = Session.getDefaultInstance(new Properties());
175 MimeMessage message = MimeMessageUtils.createMimeMessage(session, new File("./src/test/resources/eml/attachment-only.eml"));
176 MimeMessageParser mimeMessageParser = new MimeMessageParser(message);
177
178 mimeMessageParser.parse();
179
180 assertEquals("Kunde 100029 Auftrag 3600", mimeMessageParser.getSubject());
181 assertNotNull(mimeMessageParser.getMimeMessage());
182 assertFalse(mimeMessageParser.isMultipart());
183 assertFalse(mimeMessageParser.hasHtmlContent());
184 assertFalse(mimeMessageParser.hasPlainContent());
185 assertNull(mimeMessageParser.getPlainContent());
186 assertNull(mimeMessageParser.getHtmlContent());
187 assertTrue(mimeMessageParser.getTo().size() == 1);
188 assertTrue(mimeMessageParser.getCc().size() == 0);
189 assertTrue(mimeMessageParser.getBcc().size() == 0);
190 assertEquals("siegfried.goeschl@it20one.at", mimeMessageParser.getFrom());
191 assertEquals("siegfried.goeschl@it20one.at", mimeMessageParser.getReplyTo());
192 assertTrue(mimeMessageParser.hasAttachments());
193 List<?> attachmentList = mimeMessageParser.getAttachmentList();
194 assertTrue(attachmentList.size() == 1);
195
196 dataSource = mimeMessageParser.findAttachmentByName("Kunde 100029 Auftrag 3600.pdf");
197 assertNotNull(dataSource);
198 assertEquals("application/pdf", dataSource.getContentType());
199 }
200
201
202
203
204
205
206
207
208 public void testParseNoHeaderSeperatorWithOutOfMemory() throws Exception
209 {
210 Session session = Session.getDefaultInstance(new Properties());
211 MimeMessage message = MimeMessageUtils.createMimeMessage(session, new File("./src/test/resources/eml/outofmemory-no-header-seperation.eml"));
212 MimeMessageParser mimeMessageParser = new MimeMessageParser(message);
213
214 mimeMessageParser.parse();
215
216 assertEquals("A corrupt Attachment", mimeMessageParser.getSubject());
217 assertNotNull(mimeMessageParser.getMimeMessage());
218 assertTrue(mimeMessageParser.isMultipart());
219 assertFalse(mimeMessageParser.hasHtmlContent());
220 assertFalse(mimeMessageParser.hasPlainContent());
221 assertNull(mimeMessageParser.getPlainContent());
222 assertNull(mimeMessageParser.getHtmlContent());
223 assertEquals(mimeMessageParser.getTo().size(), 1);
224 assertEquals(mimeMessageParser.getCc().size(), 0);
225 assertEquals(mimeMessageParser.getBcc().size(), 0);
226 }
227 }