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 <[email protected]>
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 <alice@local>")
+            .put("To", "bob <bob@local>")
+            .put("Subject", "Full message")
+            .put("Mime-Version", "1.0")
+            .put("Message-ID", 
"<[email protected]>")
+            .put("Cc", "jack <jack@local>, jacob <jacob@local>")
+            .put("Bcc", "alice <alice@local>")
+            .put("Reply-to", "alice <alice@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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to