Repository: james-project Updated Branches: refs/heads/master 699e9ffd9 -> 84fb8f6ca
JAMES-1872 Add integration test for JMAP for getting messages using two times the same CID Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/84fb8f6c Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/84fb8f6c Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/84fb8f6c Branch: refs/heads/master Commit: 84fb8f6ca47b054be12a1328534a9c1ec8713ad9 Parents: 2c1ef3b Author: Quynh Nguyen <[email protected]> Authored: Mon Mar 27 14:23:04 2017 +0700 Committer: benwa <[email protected]> Committed: Thu Mar 30 11:28:03 2017 +0700 ---------------------------------------------------------------------- .../cucumber/GetMessagesMethodStepdefs.java | 17 +++++++++++++---- .../test/resources/cucumber/GetMessages.feature | 12 ++++++++++-- 2 files changed, 23 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/84fb8f6c/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java index c097957..c88b52e 100644 --- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java +++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java @@ -218,13 +218,18 @@ public class GetMessagesMethodStepdefs { appendMessage(messageName, "eml/htmlBodyWithManyEmptyTags.eml"); } + @Given("^the user has a message \"([^\"]*)\" in the \"([^\"]*)\" mailbox with multiple same inlined attachments \"([^\"]*)\"$") + public void appendMessageWithSameInlinedAttachmentsToMailbox(String messageName, String mailbox, String attachmentId) throws Throwable { + appendMessage(messageName, "eml/sameInlinedImages.eml"); + } + private void appendMessage(String messageName, String emlFileName) throws Exception { ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z"); MessageId id = mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).appendMessage(userStepdefs.lastConnectedUser, - new MailboxPath(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, DefaultMailboxes.INBOX), + new MailboxPath(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, DefaultMailboxes.INBOX), ClassLoader.getSystemResourceAsStream(emlFileName), Date.from(dateTime.toInstant()), false, new Flags()) - .getMessageId(); + .getMessageId(); messageIdsByName.put(messageName, id); } @@ -260,7 +265,7 @@ public class GetMessagesMethodStepdefs { public void requestUnknownMessage() throws Throwable { askMessages(ImmutableList.of(mainStepdefs.messageIdFactory.generate())); } - + private void askMessages(List<MessageId> messageIds) throws Exception { requestedMessageIds = messageIds; String serializedIds = requestedMessageIds.stream() @@ -372,7 +377,6 @@ public class GetMessagesMethodStepdefs { .serialize())) .distinct() .collect(Guavate.toImmutableList()); - assertThat(jsonPath.<JSONArray>read(FIRST_MESSAGE + ".mailboxIds")) .hasSize(2) .containsOnlyElementsOf(values); @@ -446,6 +450,11 @@ public class GetMessagesMethodStepdefs { assertThat(jsonPath.<List<Object>>read(ATTACHMENTS)).hasSize(numberOfAttachments); } + @Then("^the list of attachments of the message contains only one attachment with cid \"([^\"]*)\"?$") + public void assertAttachmentsAndItsCid(String cid) throws Throwable { + assertThat(jsonPath.<String>read(FIRST_ATTACHMENT + ".cid")).isEqualTo(cid); + } + @Then("^the first attachment is:$") public void assertFirstAttachment(DataTable attachmentProperties) throws Throwable { assertAttachment(FIRST_ATTACHMENT, attachmentProperties); http://git-wip-us.apache.org/repos/asf/james-project/blob/84fb8f6c/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature index 5a860ee..0018491 100644 --- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature +++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/GetMessages.feature @@ -128,7 +128,7 @@ Feature: GetMessages method Then no error is returned And the list of messages is empty And the notFound list should contain the requested message id - + Scenario: Retrieving message should return mandatory properties when not asked Given the user has a message "m1" in "INBOX" mailbox with subject "my test subject", content "testmail" When the user is getting messages "m1" with properties "subject" @@ -210,7 +210,7 @@ Feature: GetMessages method And the list should contain 1 message And the textBody of the message is "Hello text body\n" And the htmlBody of the message is "<html>Hello html body</html>\n" - + Scenario: Retrieving message with more than 1000 char by line should return message when exists Given the user has a message "m1" in "INBOX" mailbox beginning by a long line When the user ask for messages "m1" @@ -268,3 +268,11 @@ Feature: GetMessages method Then no error is returned And the list should contain 1 message And the preview of the message is not empty + + Scenario: Retrieving message which contains multiple same inlined attachments + Given the user has a message "m1" in the "inbox" mailbox with multiple same inlined attachments "ia1" + When the user ask for messages "m1" + Then no error is returned + And the list should contain 1 message + And the hasAttachment of the message is "false" + And the list of attachments of the message contains only one attachment with cid "[email protected]" --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
