MAILBOX-279: Add more testing with message's attachment
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d4debb50 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d4debb50 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d4debb50 Branch: refs/heads/master Commit: d4debb50691bd94d189283ac269b52e968ba7adf Parents: 20e6f63 Author: Quynh Nguyen <qngu...@linagora.com> Authored: Wed Dec 7 13:54:53 2016 +0700 Committer: Quynh Nguyen <qngu...@linagora.com> Committed: Mon Jan 9 15:11:51 2017 +0700 ---------------------------------------------------------------------- .../mailbox/store/mail/model/MessageAssert.java | 40 ++++++++++----- .../model/MessageWithAttachmentMapperTest.java | 51 ++++++++++++++------ 2 files changed, 62 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/d4debb50/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageAssert.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageAssert.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageAssert.java index b002da4..7267924 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageAssert.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageAssert.java @@ -25,6 +25,7 @@ import javax.mail.Flags; import org.apache.commons.io.IOUtils; import org.apache.james.mailbox.store.mail.MessageMapper; +import org.apache.james.mailbox.store.mail.MessageMapper.FetchType; import org.assertj.core.api.AbstractAssert; import com.google.common.base.Objects; @@ -39,7 +40,33 @@ public class MessageAssert extends AbstractAssert<MessageAssert, MailboxMessage> return new MessageAssert(actual); } + public MessageAssert isEqualTo(MailboxMessage expected, MessageMapper.FetchType usedFetchType) throws IOException { + isNotNull(); + if (!Objects.equal(actual.getUid(), expected.getUid())) { + failWithMessage("Expected UID to be <%s> but was <%s>", expected.getUid(), actual.getUid()); + } + return isEqualToWithoutUid(expected, usedFetchType); + } + + public MessageAssert isEqualToWithoutAttachment(MailboxMessage expected, MessageMapper.FetchType usedFetchType) throws IOException { + isNotNull(); + if (!Objects.equal(actual.getUid(), expected.getUid())) { + failWithMessage("Expected UID to be <%s> but was <%s>", expected.getUid(), actual.getUid()); + } + return isEqualToWithoutUidAndAttachment(expected, usedFetchType); + } + public MessageAssert isEqualToWithoutUid(MailboxMessage expected, MessageMapper.FetchType usedFetchType) throws IOException { + isEqualToWithoutUidAndAttachment(expected, usedFetchType); + if (usedFetchType == MessageMapper.FetchType.Full || usedFetchType == MessageMapper.FetchType.Body) { + if (!Objects.equal(actual.getAttachments(), expected.getAttachments())) { + failWithMessage("Expected attachments to be <%s> but was <%s>", expected.getAttachments(), actual.getAttachments()); + } + } + return this; + } + + public MessageAssert isEqualToWithoutUidAndAttachment(MailboxMessage expected, FetchType usedFetchType) throws IOException { isNotNull(); if (!Objects.equal(actual.getMailboxId(), expected.getMailboxId())) { failWithMessage("Expected Mailbox ID to be <%s> but was <%s>", expected.getMailboxId().toString(), actual.getMailboxId().toString()); @@ -74,22 +101,9 @@ public class MessageAssert extends AbstractAssert<MessageAssert, MailboxMessage> failWithMessage("Expected Body content to be <%s> but was <%s>", IOUtils.toString(expected.getBodyContent()), IOUtils.toString(actual.getBodyContent())); } } - if (usedFetchType == MessageMapper.FetchType.Full || usedFetchType == MessageMapper.FetchType.Body) { - if (!Objects.equal(actual.getAttachments(), expected.getAttachments())) { - failWithMessage("Expected attachments to be <%s> but was <%s>", expected.getAttachments(), actual.getAttachments()); - } - } return this; } - public MessageAssert isEqualTo(MailboxMessage expected, MessageMapper.FetchType usedFetchType) throws IOException { - isNotNull(); - if (!Objects.equal(actual.getUid(), expected.getUid())) { - failWithMessage("Expected UID to be <%s> but was <%s>", expected.getUid(), actual.getUid()); - } - return isEqualToWithoutUid(expected, usedFetchType); - } - public MessageAssert hasFlags(Flags flags) { if (flags.contains(Flags.Flag.ANSWERED) != actual.isAnswered()) { failWithMessage("Expected ANSWERED flag to be <%s> but was <%>", flags.contains(Flags.Flag.ANSWERED), actual.isAnswered()); http://git-wip-us.apache.org/repos/asf/james-project/blob/d4debb50/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java index 2bcecff..5497d14 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java @@ -19,6 +19,7 @@ package org.apache.james.mailbox.store.mail.model; +import static org.apache.james.mailbox.store.mail.model.MessageAssert.assertThat; import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; @@ -69,8 +70,8 @@ public class MessageWithAttachmentMapperTest<T extends MapperProvider> { private SimpleMailbox attachmentsMailbox; private SimpleMailboxMessage messageWithoutAttachment; - private SimpleMailboxMessage message7With1Attachment; - private SimpleMailboxMessage message8With2Attachments; + private SimpleMailboxMessage messageWith1Attachment; + private SimpleMailboxMessage messageWith2Attachments; @Rule public ExpectedException expected = ExpectedException.none(); @@ -101,13 +102,13 @@ public class MessageWithAttachmentMapperTest<T extends MapperProvider> { .type("content") .build(); attachmentMapper.storeAttachment(attachment2); - message7With1Attachment = createMessage(attachmentsMailbox, mapperProvider.generateMessageId(), "Subject: Test7 \n\nBody7\n.\n", BODY_START, new PropertyBuilder(), + messageWith1Attachment = createMessage(attachmentsMailbox, mapperProvider.generateMessageId(), "Subject: Test7 \n\nBody7\n.\n", BODY_START, new PropertyBuilder(), ImmutableList.of(MessageAttachment.builder() .attachment(attachment) .cid(Cid.from("cid")) .isInline(true) .build())); - message8With2Attachments = createMessage(attachmentsMailbox, mapperProvider.generateMessageId(), "Subject: Test8 \n\nBody8\n.\n", BODY_START, new PropertyBuilder(), + messageWith2Attachments = createMessage(attachmentsMailbox, mapperProvider.generateMessageId(), "Subject: Test8 \n\nBody8\n.\n", BODY_START, new PropertyBuilder(), ImmutableList.of( MessageAttachment.builder() .attachment(attachment) @@ -132,24 +133,24 @@ public class MessageWithAttachmentMapperTest<T extends MapperProvider> { public void messagesRetrievedUsingFetchTypeFullShouldHaveAttachmentsLoadedWhenOneAttachment() throws MailboxException, IOException{ saveMessages(); MessageMapper.FetchType fetchType = MessageMapper.FetchType.Full; - Iterator<MailboxMessage> retrievedMessageIterator = messageMapper.findInMailbox(attachmentsMailbox, MessageRange.one(message7With1Attachment.getUid()), fetchType, LIMIT); - assertThat(retrievedMessageIterator.next().getAttachments()).isEqualTo(message7With1Attachment.getAttachments()); + Iterator<MailboxMessage> retrievedMessageIterator = messageMapper.findInMailbox(attachmentsMailbox, MessageRange.one(messageWith1Attachment.getUid()), fetchType, LIMIT); + assertThat(retrievedMessageIterator.next().getAttachments()).isEqualTo(messageWith1Attachment.getAttachments()); } @ContractTest public void messagesRetrievedUsingFetchTypeFullShouldHaveAttachmentsLoadedWhenTwoAttachments() throws MailboxException, IOException{ saveMessages(); MessageMapper.FetchType fetchType = MessageMapper.FetchType.Full; - Iterator<MailboxMessage> retrievedMessageIterator = messageMapper.findInMailbox(attachmentsMailbox, MessageRange.one(message8With2Attachments.getUid()), fetchType, LIMIT); - assertThat(retrievedMessageIterator.next().getAttachments()).isEqualTo(message8With2Attachments.getAttachments()); + Iterator<MailboxMessage> retrievedMessageIterator = messageMapper.findInMailbox(attachmentsMailbox, MessageRange.one(messageWith2Attachments.getUid()), fetchType, LIMIT); + assertThat(retrievedMessageIterator.next().getAttachments()).isEqualTo(messageWith2Attachments.getAttachments()); } @ContractTest public void messagesRetrievedUsingFetchTypeBodyShouldHaveAttachmentsLoadedWhenOneAttachment() throws MailboxException, IOException{ saveMessages(); MessageMapper.FetchType fetchType = MessageMapper.FetchType.Body; - Iterator<MailboxMessage> retrievedMessageIterator = messageMapper.findInMailbox(attachmentsMailbox, MessageRange.one(message7With1Attachment.getUid()), fetchType, LIMIT); - assertThat(retrievedMessageIterator.next().getAttachments()).isEqualTo(message7With1Attachment.getAttachments()); + Iterator<MailboxMessage> retrievedMessageIterator = messageMapper.findInMailbox(attachmentsMailbox, MessageRange.one(messageWith1Attachment.getUid()), fetchType, LIMIT); + assertThat(retrievedMessageIterator.next().getAttachments()).isEqualTo(messageWith1Attachment.getAttachments()); } @ContractTest @@ -157,7 +158,7 @@ public class MessageWithAttachmentMapperTest<T extends MapperProvider> { Assume.assumeTrue(mapperProvider.supportPartialAttachmentFetch()); saveMessages(); MessageMapper.FetchType fetchType = MessageMapper.FetchType.Headers; - Iterator<MailboxMessage> retrievedMessageIterator = messageMapper.findInMailbox(attachmentsMailbox, MessageRange.one(message7With1Attachment.getUid()), fetchType, LIMIT); + Iterator<MailboxMessage> retrievedMessageIterator = messageMapper.findInMailbox(attachmentsMailbox, MessageRange.one(messageWith1Attachment.getUid()), fetchType, LIMIT); assertThat(retrievedMessageIterator.next().getAttachments()).isEmpty(); } @@ -166,7 +167,7 @@ public class MessageWithAttachmentMapperTest<T extends MapperProvider> { Assume.assumeTrue(mapperProvider.supportPartialAttachmentFetch()); saveMessages(); MessageMapper.FetchType fetchType = MessageMapper.FetchType.Metadata; - Iterator<MailboxMessage> retrievedMessageIterator = messageMapper.findInMailbox(attachmentsMailbox, MessageRange.one(message7With1Attachment.getUid()), fetchType, LIMIT); + Iterator<MailboxMessage> retrievedMessageIterator = messageMapper.findInMailbox(attachmentsMailbox, MessageRange.one(messageWith1Attachment.getUid()), fetchType, LIMIT); assertThat(retrievedMessageIterator.next().getAttachments()).isEmpty(); } @@ -178,6 +179,24 @@ public class MessageWithAttachmentMapperTest<T extends MapperProvider> { assertThat(retrievedMessageIterator.next().getAttachments()).isEmpty(); } + @ContractTest + public void messagesCanBeRetrievedInMailboxWithRangeTypeOne() throws MailboxException, IOException{ + saveMessages(); + MessageMapper.FetchType fetchType = MessageMapper.FetchType.Full; + int limit =10; + assertThat(messageMapper.findInMailbox(attachmentsMailbox, MessageRange.one(messageWith1Attachment.getUid()), fetchType, limit).next()) + .isEqualTo(messageWith1Attachment, fetchType); + } + + @ContractTest + public void messagesRetrievedUsingFetchTypeBodyShouldHaveBodyDataLoaded() throws MailboxException, IOException{ + saveMessages(); + MessageMapper.FetchType fetchType = MessageMapper.FetchType.Body; + Iterator<MailboxMessage> retrievedMessageIterator = messageMapper.findInMailbox(attachmentsMailbox, MessageRange.one(messageWith1Attachment.getUid()), fetchType, LIMIT); + assertThat(retrievedMessageIterator.next()).isEqualTo(messageWith1Attachment, fetchType); + assertThat(retrievedMessageIterator).isEmpty(); + } + private SimpleMailbox createMailbox(MailboxPath mailboxPath) { SimpleMailbox mailbox = new SimpleMailbox(mailboxPath, UID_VALIDITY); MailboxId id = mapperProvider.generateId(); @@ -188,10 +207,10 @@ public class MessageWithAttachmentMapperTest<T extends MapperProvider> { private void saveMessages() throws MailboxException { messageMapper.add(attachmentsMailbox, messageWithoutAttachment); messageWithoutAttachment.setModSeq(messageMapper.getHighestModSeq(attachmentsMailbox)); - messageMapper.add(attachmentsMailbox, message7With1Attachment); - message7With1Attachment.setModSeq(messageMapper.getHighestModSeq(attachmentsMailbox)); - messageMapper.add(attachmentsMailbox, message8With2Attachments); - message8With2Attachments.setModSeq(messageMapper.getHighestModSeq(attachmentsMailbox)); + messageMapper.add(attachmentsMailbox, messageWith1Attachment); + messageWith1Attachment.setModSeq(messageMapper.getHighestModSeq(attachmentsMailbox)); + messageMapper.add(attachmentsMailbox, messageWith2Attachments); + messageWith2Attachments.setModSeq(messageMapper.getHighestModSeq(attachmentsMailbox)); } private SimpleMailboxMessage createMessage(Mailbox mailbox, MessageId messageId, String content, int bodyStart, PropertyBuilder propertyBuilder, List<MessageAttachment> attachments) { --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org