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]
