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

Reply via email to