}
}
@Test
public void testMultipart() {
Parser parser = new RFC822Parser();
Metadata metadata = new Metadata();
InputStream stream = getStream("test-documents/testRFC822-multipart");
ContentHandler handler = mock(XHTMLContentHandler.class);
try {
parser.parse(stream, handler, metadata, new ParseContext());
verify(handler).startDocument();
//4 body-part divs -- two outer bodies and two inner bodies
verify(handler, times(4)).startElement(eq(XHTMLContentHandler.XHTML), eq("div"), eq("div"), any(Attributes.class));
verify(handler, times(4)).endElement(XHTMLContentHandler.XHTML, "div", "div");
//5 paragraph elements, 4 for body-parts and 1 for encompassing message
verify(handler, times(5)).startElement(eq(XHTMLContentHandler.XHTML), eq("p"), eq("p"), any(Attributes.class));
verify(handler, times(5)).endElement(XHTMLContentHandler.XHTML, "p", "p");
verify(handler).endDocument();
} catch (Exception e) {
fail("Exception thrown: " + e.getMessage());
}
//repeat, this time looking at content
parser = new RFC822Parser();
metadata = new Metadata();
stream = getStream("test-documents/testRFC822-multipart");
handler = new BodyContentHandler();
try {
parser.parse(stream, handler, metadata, new ParseContext());
//tests correct decoding of quoted printable text, including UTF-8 bytes into Unicode
String bodyText = handler.toString();
assertTrue(bodyText.contains("body 1"));
assertTrue(bodyText.contains("body 2"));
assertFalse(bodyText.contains("R0lGODlhNgE8AMQAA")); //part of encoded gif