You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rc...@apache.org on 2019/11/25 09:06:55 UTC

[james-project] 12/22: JAMES-2987 Add tests for fromMessageResults in MessageFullViewFactoryTest

This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 5e01be7154344eb1574f42228cb03c70344fc3c1
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Thu Nov 21 17:59:00 2019 +0700

    JAMES-2987 Add tests for fromMessageResults in MessageFullViewFactoryTest
---
 .../message/view/MessageFullViewFactoryTest.java   | 103 ++++++++++++++++++++-
 1 file changed, 102 insertions(+), 1 deletion(-)

diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java
index a19e46a..ad13156 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java
@@ -23,9 +23,13 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.io.ByteArrayInputStream;
 import java.nio.charset.StandardCharsets;
 import java.time.Instant;
+import java.util.List;
 import java.util.Optional;
 
+import javax.mail.Flags;
+
 import org.apache.commons.lang3.StringUtils;
+import org.apache.james.core.Username;
 import org.apache.james.jmap.draft.model.Attachment;
 import org.apache.james.jmap.draft.model.BlobId;
 import org.apache.james.jmap.draft.model.Emailer;
@@ -36,14 +40,26 @@ import org.apache.james.jmap.draft.model.Number;
 import org.apache.james.jmap.draft.model.message.view.MessageFullViewFactory.MetaDataWithContent;
 import org.apache.james.jmap.draft.utils.HtmlTextExtractor;
 import org.apache.james.jmap.draft.utils.JsoupHtmlTextExtractor;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageIdManager;
+import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.inmemory.InMemoryId;
+import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.model.AttachmentId;
 import org.apache.james.mailbox.model.Cid;
+import org.apache.james.mailbox.model.ComposedMessageId;
+import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.TestMessageId;
+import org.apache.james.util.ClassLoaderUtils;
 import org.apache.james.util.mime.MessageContentExtractor;
+import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -54,22 +70,107 @@ class MessageFullViewFactoryTest {
     private static final String FORWARDED = "forwarded";
     private static final InMemoryId MAILBOX_ID = InMemoryId.of(18L);
     private static final Instant INTERNAL_DATE = Instant.parse("2012-02-03T14:30:42Z");
+    private static final Username BOB = Username.of("bob@local");
 
+    private MessageIdManager messageIdManager;
+    private MailboxSession session;
+    private MessageManager bobInbox;
+    private MessageManager bobMailbox;
+    private ComposedMessageId message1;
     private MessageFullViewFactory messageFullViewFactory;
 
     @BeforeEach
-    void setUp() {
+    void setUp() throws Exception {
         HtmlTextExtractor htmlTextExtractor = new JsoupHtmlTextExtractor();
 
         MessagePreviewGenerator messagePreview = new MessagePreviewGenerator();
         MessageContentExtractor messageContentExtractor = new MessageContentExtractor();
 
         InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
+        messageIdManager = resources.getMessageIdManager();
+        InMemoryMailboxManager mailboxManager = resources.getMailboxManager();
+
+        session = mailboxManager.createSystemSession(BOB);
+        MailboxId bobInboxId = mailboxManager.createMailbox(MailboxPath.inbox(session), session).get();
+        MailboxId bobMailboxId = mailboxManager.createMailbox(MailboxPath.forUser(BOB, "anotherMailbox"), session).get();
+
+        bobInbox = mailboxManager.getMailbox(bobInboxId, session);
+        bobMailbox = mailboxManager.getMailbox(bobMailboxId, session);
+
+        message1 = bobInbox.appendMessage(MessageManager.AppendCommand.builder()
+                .withFlags(new Flags(Flags.Flag.SEEN))
+                .build(ClassLoaderUtils.getSystemResourceAsSharedStream("fullMessage.eml")),
+            session);
 
         messageFullViewFactory = new MessageFullViewFactory(resources.getBlobManager(), messagePreview, messageContentExtractor, htmlTextExtractor);
     }
 
     @Test
+    void fromMessageResultsShouldReturnCorrectView() throws Exception {
+        List<MessageResult> messages = messageIdManager
+            .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroupImpl.MINIMAL, session);
+
+        Emailer bobEmail = Emailer.builder().name(BOB.getLocalPart()).email(BOB.asString()).build();
+        Emailer aliceEmail = Emailer.builder().name("alice").email("alice@local").build();
+        Emailer jackEmail = Emailer.builder().name("jack").email("jack@local").build();
+        Emailer jacobEmail = Emailer.builder().name("jacob").email("jacob@local").build();
+
+        ImmutableMap<String, String> headersMap = ImmutableMap.<String, String>builder()
+            .put("Content-Type", "multipart/mixed; boundary=\"------------7AF1D14DE1DFA16229726B54\"")
+            .put("Date", "Tue, 7 Jun 2016 16:23:37 +0200")
+            .put("From", "alice <al...@local>")
+            .put("To", "bob <bo...@local>")
+            .put("Subject", "Full message")
+            .put("Mime-Version", "1.0")
+            .put("Message-ID", "<1c...@open-paas.org>")
+            .put("Cc", "jack <ja...@local>, jacob <ja...@local>")
+            .put("Bcc", "alice <al...@local>")
+            .put("Reply-to", "alice <al...@local>")
+            .put("In-reply-to", "bob@local")
+            .build();
+
+        MessageFullView actual = messageFullViewFactory.fromMessageResults(messages);
+        SoftAssertions.assertSoftly(softly -> {
+            softly.assertThat(actual.getId()).isEqualTo(message1.getMessageId());
+            softly.assertThat(actual.getMailboxIds()).containsExactly(bobInbox.getId());
+            softly.assertThat(actual.getThreadId()).isEqualTo(message1.getMessageId().serialize());
+            softly.assertThat(actual.getSize()).isEqualTo(Number.fromLong(2255));
+            softly.assertThat(actual.getKeywords()).isEqualTo(Keywords.strictFactory().from(Keyword.SEEN).asMap());
+            softly.assertThat(actual.getBlobId()).isEqualTo(BlobId.of(message1.getMessageId().serialize()));
+            softly.assertThat(actual.getInReplyToMessageId()).isEqualTo(Optional.of(BOB.asString()));
+            softly.assertThat(actual.getHeaders()).isEqualTo(headersMap);
+            softly.assertThat(actual.getFrom()).isEqualTo(Optional.of(aliceEmail));
+            softly.assertThat(actual.getTo()).isEqualTo(ImmutableList.of(bobEmail));
+            softly.assertThat(actual.getCc()).isEqualTo(ImmutableList.of(jackEmail, jacobEmail));
+            softly.assertThat(actual.getBcc()).isEqualTo(ImmutableList.of(aliceEmail));
+            softly.assertThat(actual.getReplyTo()).isEqualTo(ImmutableList.of(aliceEmail));
+            softly.assertThat(actual.getSubject()).isEqualTo("Full message");
+            softly.assertThat(actual.getDate()).isEqualTo("2016-06-07T14:23:37Z");
+            softly.assertThat(actual.isHasAttachment()).isEqualTo(true);
+            softly.assertThat(actual.getPreview()).isEqualTo("blabla bloblo");
+            softly.assertThat(actual.getTextBody()).isEqualTo(Optional.of("/blabla/\n*bloblo*\n"));
+            softly.assertThat(actual.getHtmlBody()).isEqualTo(Optional.of("<i>blabla</i>\n<b>bloblo</b>\n"));
+            softly.assertThat(actual.getAttachments()).hasSize(1);
+            softly.assertThat(actual.getAttachedMessages()).hasSize(0);
+        });
+    }
+
+    @Test
+    void fromMessageResultsShouldCombineKeywords() throws Exception {
+        messageIdManager.setInMailboxes(message1.getMessageId(), ImmutableList.of(bobInbox.getId(), bobMailbox.getId()), session);
+        bobMailbox.setFlags(new Flags(Flags.Flag.FLAGGED), MessageManager.FlagsUpdateMode.REPLACE, MessageRange.all(), session);
+
+        List<MessageResult> messages = messageIdManager
+            .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroupImpl.MINIMAL, session);
+
+        MessageFullView actual = messageFullViewFactory.fromMessageResults(messages);
+        SoftAssertions.assertSoftly(softly -> {
+            softly.assertThat(actual.getId()).isEqualTo(message1.getMessageId());
+            softly.assertThat(actual.getKeywords()).isEqualTo(Keywords.strictFactory().from(Keyword.SEEN, Keyword.FLAGGED).asMap());
+        });
+    }
+
+    @Test
     void emptyMailShouldBeLoadedIntoMessage() throws Exception {
         MetaDataWithContent testMail = MetaDataWithContent.builder()
                 .uid(MessageUid.of(2))


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org