@Test public void extractReportShouldRejectSecondPartWithBadContentType() throws IOException { ExtractMDNOriginalJMAPMessageId testee = new ExtractMDNOriginalJMAPMessageId(mock(MailboxManager.class)); Message message = Message.Builder.of() .setBody(MultipartBuilder.create() .setSubType("report") .addTextPart("first", StandardCharsets.UTF_8) .addTextPart("second", StandardCharsets.UTF_8) .build()) .build(); assertThat(testee.extractReport(message)).isEmpty(); }
@Test public void extractReportShouldRejectMultipartWithSinglePart() throws Exception { ExtractMDNOriginalJMAPMessageId testee = new ExtractMDNOriginalJMAPMessageId(mock(MailboxManager.class)); Message message = Message.Builder.of() .setBody( MultipartBuilder.create() .setSubType("report") .addTextPart("content", StandardCharsets.UTF_8) .build()) .build(); assertThat(testee.extractReport(message)).isEmpty(); }
@Test public void extractReportShouldExtractMDNWhenValidMDN() throws IOException { ExtractMDNOriginalJMAPMessageId testee = new ExtractMDNOriginalJMAPMessageId(mock(MailboxManager.class)); BodyPart mdn = BodyPartBuilder .create() .setBody(SingleBodyBuilder.create() .setText( "Reporting-UA: linagora.com; Evolution 3.26.5-1+b1 \n" + "Final-Recipient: rfc822; homer@linagora.com\n" + "Original-Message-ID: <1521557867.2614.0.camel@apache.org>\n" + "Disposition: manual-action/MDN-sent-manually;displayed\n") .buildText()) .setContentType("message/disposition-notification") .build(); Message message = Message.Builder.of() .setBody(MultipartBuilder.create("report") .addTextPart("first", StandardCharsets.UTF_8) .addBodyPart(mdn) .build()) .build(); assertThat(testee.extractReport(message)) .isNotEmpty() .contains(mdn); } }