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