MAILET-149 Integration test for multiple out of order ICS publish when several attachments
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d0b61696 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d0b61696 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d0b61696 Branch: refs/heads/master Commit: d0b6169635417f66c7495e12f6e857955288edb5 Parents: 229c4d3 Author: Benoit Tellier <[email protected]> Authored: Fri Jan 20 15:03:33 2017 +0700 Committer: Antoine Duprat <[email protected]> Committed: Mon Jan 23 16:19:25 2017 +0100 ---------------------------------------------------------------------- .../mailets/ICSAttachmentWorkflowTest.java | 86 ++++++++++++++------ 1 file changed, 63 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/d0b61696/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java index 376f5fe..9302fe7 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java @@ -47,6 +47,7 @@ import org.junit.rules.RuleChain; import org.junit.rules.TemporaryFolder; import com.google.common.base.Charsets; +import com.google.common.collect.ImmutableList; import com.jayway.awaitility.Awaitility; import com.jayway.awaitility.Duration; import com.jayway.awaitility.core.ConditionFactory; @@ -243,6 +244,7 @@ public class ICSAttachmentWorkflowTest { private MimeMessage messageWithoutICSAttached; private MimeMessage messageWithICSAttached; private MimeMessage messageWithICSBase64Attached; + private MimeMessage messageWithThreeICSAttached; @Before public void setup() throws Exception { @@ -349,6 +351,29 @@ public class ICSAttachmentWorkflowTest { MimeMessageBuilder.bodyPartFromBytes(ICS_BASE64.getBytes(Charsets.UTF_8))) .setSubject("test") .build(); + + messageWithThreeICSAttached = MimeMessageBuilder.mimeMessageBuilder() + .setMultipartWithBodyParts( + MimeMessageBuilder.bodyPartBuilder() + .data("simple text") + .build(), + MimeMessageBuilder.bodyPartBuilder() + .data(ICS_1.getBytes(Charsets.UTF_8)) + .filename("test1.txt") + .disposition("attachment") + .build(), + MimeMessageBuilder.bodyPartBuilder() + .data(ICS_2.getBytes(Charsets.UTF_8)) + .filename("test2.txt") + .disposition("attachment") + .build(), + MimeMessageBuilder.bodyPartBuilder() + .data(ICS_3.getBytes(Charsets.UTF_8)) + .filename("test3.txt") + .disposition("attachment") + .build()) + .setSubject("test") + .build(); } @After @@ -507,29 +532,6 @@ public class ICSAttachmentWorkflowTest { @Test public void headersShouldBeFilledOnlyWithOneICalAttachmentWhenMailHasSeveral() throws Exception { - MimeMessage messageWithThreeICSAttached = MimeMessageBuilder.mimeMessageBuilder() - .setMultipartWithBodyParts( - MimeMessageBuilder.bodyPartBuilder() - .data("simple text") - .build(), - MimeMessageBuilder.bodyPartBuilder() - .data(ICS_1.getBytes(Charsets.UTF_8)) - .filename("test1.txt") - .disposition("attachment") - .build(), - MimeMessageBuilder.bodyPartBuilder() - .data(ICS_2.getBytes(Charsets.UTF_8)) - .filename("test2.txt") - .disposition("attachment") - .build(), - MimeMessageBuilder.bodyPartBuilder() - .data(ICS_3.getBytes(Charsets.UTF_8)) - .filename("test3.txt") - .disposition("attachment") - .build()) - .setSubject("test") - .build(); - Mail mail = FakeMail.builder() .mimeMessage(messageWithThreeICSAttached) .sender(new MailAddress(FROM)) @@ -551,4 +553,42 @@ public class ICSAttachmentWorkflowTest { } } + @Test + public void pipelineShouldSendSeveralJSONOverRabbitMQWhenSeveralAttachments() throws Exception { + Mail mail = FakeMail.builder() + .mimeMessage(messageWithThreeICSAttached) + .sender(new MailAddress(FROM)) + .recipient(new MailAddress(RECIPIENT)) + .build(); + + try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, JAMES_APACHE_ORG); + IMAPMessageReader imapMessageReader = new IMAPMessageReader(LOCALHOST_IP, IMAP_PORT)) { + messageSender.sendMessage(mail); + calmlyAwait.atMost(Duration.ONE_MINUTE).until(messageSender::messageHasBeenSent); + calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> imapMessageReader.userReceivedMessage(RECIPIENT, PASSWORD)); + } + + Optional<String> content1 = amqpRule.readContent(); + assertThat(content1).isPresent(); + DocumentContext jsonPath1 = toJsonPath(content1.get()); + + Optional<String> content2 = amqpRule.readContent(); + assertThat(content2).isPresent(); + DocumentContext jsonPath2 = toJsonPath(content2.get()); + + Optional<String> content3 = amqpRule.readContent(); + assertThat(content3).isPresent(); + DocumentContext jsonPath3 = toJsonPath(content3.get()); + + assertThat( + ImmutableList.of(jsonPath1.read("uid"), + jsonPath2.read("uid"), + jsonPath3.read("uid"))) + .containsOnly(ICS_UID, + "f1514f44bf39311568d640727cff54e819573448d09d2e5677987ff29caa01a9e047feb2aab16e43439a608f28671ab7c10e754ce92be513f8e04ae9ff15e65a9819cf285a6962bd", + "f1514f44bf39311568d640727cff54e819573448d09d2e5677987ff29caa01a9e047feb2aab16e43439a608f28671ab7c10e754ce92be513f8e04ae9ff15e65a9819cf285a6962be"); + + assertThat(amqpRule.readContent()).isEmpty(); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
