@Override public ComposedMessageId appendMessage(String username, MailboxPath mailboxPath, InputStream message, Date internalDate, boolean isRecent, Flags flags) throws MailboxException { MailboxSession mailboxSession = mailboxManager.createSystemSession(username); MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, mailboxSession); return messageManager.appendMessage(message, internalDate, mailboxSession, isRecent, flags); }
public ComposedMessageId appendMessage(String username, MailboxPath mailboxPath, MessageManager.AppendCommand appendCommand) throws MailboxException { MailboxSession mailboxSession = mailboxManager.createSystemSession(username); MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, mailboxSession); return messageManager.appendMessage(appendCommand, mailboxSession); }
public MessageUid appendMessage(MessageManager messageManager, MailboxSession session, Flags flags) throws MailboxException, UnsupportedEncodingException { return messageManager.appendMessage(new ByteArrayInputStream(MockMail.MAIL_TEXT_PLAIN.getBytes(StandardCharsets.UTF_8)), Calendar.getInstance().getTime(), session, true, flags).getUid(); }
@Test public void processShouldCallAppendMessageWhenRequestHasNonEmptyCreate() throws MailboxException { // When sut.process(createMessageInOutbox, session); // Then verify(outbox).appendMessage(any(MessageManager.AppendCommand.class), any(MailboxSession.class)); }
private void setupTestMails(MailboxSession session, MessageManager mailbox) throws MailboxException { mailbox.appendMessage(MessageManager.AppendCommand.builder() .build(content), session); byte[] content2 = ("EMPTY").getBytes(); mailbox.appendMessage(MessageManager.AppendCommand.builder() .build(content2), session); }
@Override public void importEmlFileToMailbox(String namespace, String user, String name, String emlPath) throws Exception { MailboxSession mailboxSession = mailboxManager.createSystemSession(user); mailboxManager.startProcessingRequest(mailboxSession); MessageManager messageManager = mailboxManager.getMailbox(new MailboxPath(namespace, user, name), mailboxSession); InputStream emlFileAsStream = new FileInputStream(emlPath); messageManager.appendMessage(MessageManager.AppendCommand.builder() .recent() .build(emlFileAsStream), mailboxSession); mailboxManager.endProcessingRequest(mailboxSession); mailboxSession.close(); }
@Test public void folderParameterShouldBeInboxByDefault() throws Exception { when(usersRepository.supportVirtualHosting()).thenReturn(true); when(usersRepository.getUser(new MailAddress(USER))).thenReturn(USER); when(mailboxManager.getMailbox(eq(INBOX), any(MailboxSession.class))).thenReturn(messageManager); when(user.getUserName()).thenReturn(USER); testee.init(FakeMailetConfig.builder() .mailetName(MAILET_NAME) .mailetContext(mailetContext) .build()); testee.service(createMail()); verify(messageManager).appendMessage(any(MessageManager.AppendCommand.class), any(MailboxSession.class)); }
@Test public void processShouldReturnOnlyMandatoryPropertiesOnEmptyPropertyList() throws Exception { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(this.messageContent1), session); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId())) .properties(ImmutableList.of()) .build(); List<JmapResponse> result = testee.process(request, clientId, session).collect(Collectors.toList()); assertThat(result).hasSize(1); assertThat(result.get(0).getProperties()) .isEqualTo(Optional.of(ImmutableSet.of(MessageProperty.id))); }
@Test public void processShouldAddMandatoryPropertiesWhenNotInPropertyList() throws Exception { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent1), session); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId())) .properties(ImmutableList.of(MessageProperty.subject.asFieldName())) .build(); Set<MessageProperty> expected = Sets.newHashSet(MessageProperty.id, MessageProperty.subject); List<JmapResponse> result = testee.process(request, clientId, session).collect(Collectors.toList()); assertThat(result).hasSize(1); assertThat(result.get(0).getProperties()) .isEqualTo(Optional.of(expected)); }
@Test public void processShouldReturnAllPropertiesWhenNoPropertyGiven() throws Exception { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent1), session); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId())) .build(); List<JmapResponse> result = testee.process(request, clientId, session).collect(Collectors.toList()); assertThat(result).hasSize(1); assertThat(result.get(0).getProperties()) .isEqualTo(Optional.of(MessageProperty.allOutputProperties())); }
@Test public void processShouldReturnTextBodyWhenBodyInPropertyListAndEmptyHtmlBody() throws Exception { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent1), session); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId())) .properties(ImmutableList.of(MessageProperty.body.asFieldName())) .build(); Set<MessageProperty> expected = Sets.newHashSet(MessageProperty.id, MessageProperty.textBody); List<JmapResponse> result = testee.process(request, clientId, session).collect(Collectors.toList()); assertThat(result).hasSize(1); assertThat(result.get(0).getProperties()) .isEqualTo(Optional.of(expected)); }
@Override public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, MailboxSession session) { try { MessageManager messageManager = mailboxManager.getMailbox(mailboxId, session); MessageId messageId = messageManager.appendMessage(MessageManager.AppendCommand.builder() .withFlags(flags) .build(message), session) .getMessageId(); lastMessageIdUsed = Optional.of(messageId); return messageId; } catch (MailboxException | IOException e) { throw new RuntimeException(e); } }
private ComposedMessageId appendMessageToMailbox(MimeMessage mail, MailboxSession session, MailboxPath path) throws MailboxException, MessagingException { createMailboxIfNotExist(session, path); final MessageManager mailbox = mailboxManager.getMailbox(path, session); if (mailbox == null) { throw new MessagingException("Mailbox " + path + " for user " + session.getUser().getUserName() + " was not found on this server."); } return mailbox.appendMessage(MessageManager.AppendCommand.builder() .recent() .build(new MimeMessageInputStream(mail)), session); }
private static void appendMessage(MessageManager messageManager, MailboxSession mailboxSession) { try { messageManager.appendMessage( MessageManager.AppendCommand.builder() .recent() .withFlags(new Flags(Flags.Flag.RECENT)) .build(MockMail.MAIL_TEXT_PLAIN), mailboxSession); } catch (MailboxException e) { throw new RuntimeException(e); } } }
@Test public void doneShouldNotMoveMailFromOutboxToSentWhenNoMetadataProvided() throws Exception { MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME); mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); mailboxManager.createMailbox(SENT_MAILBOX_PATH, mailboxSession); MessageManager messageManager = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); messageManager.appendMessage(AppendCommand.from(message), mailboxSession); testee.done(true); MessageManager mailbox = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroupImpl.FULL_CONTENT, mailboxSession); assertThat(resultIterator).hasSize(1); }
@Test public void termsBetweenElasticSearchAndLuceneLimitDueTuNonAsciiCharsShouldBeTruncated() throws Exception { MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, INBOX); MockMailboxSession session = new MockMailboxSession(USERNAME); MessageManager messageManager = storeMailboxManager.getMailbox(mailboxPath, session); String recipient = "benwa@linagora.com"; ComposedMessageId composedMessageId = messageManager.appendMessage(MessageManager.AppendCommand.from( Message.Builder.of() .setTo(recipient) .setBody(Strings.repeat("0à2345678é", 3200), StandardCharsets.UTF_8)), session); embeddedElasticSearch.awaitForElasticSearch(); assertThat(messageManager.search(new SearchQuery(SearchQuery.address(SearchQuery.AddressType.To, recipient)), session)) .containsExactly(composedMessageId.getUid()); }
@Test public void doneShouldNotMoveMailFromOutboxToSentWhenInvalidMessageIdProvided() throws Exception { MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME); mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); mailboxManager.createMailbox(SENT_MAILBOX_PATH, mailboxSession); MessageManager messageManager = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); messageManager.appendMessage(AppendCommand.from(message), mailboxSession); mail.setAttribute(MailMetadata.MAIL_METADATA_USERNAME_ATTRIBUTE, USERNAME); mail.setAttribute(MailMetadata.MAIL_METADATA_MESSAGE_ID_ATTRIBUTE, "invalid"); testee.done(true); MessageManager mailbox = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroupImpl.FULL_CONTENT, mailboxSession); assertThat(resultIterator).hasSize(1); }
@Test(expected = MailboxRoleNotFoundException.class) public void doneShouldThrowWhenSentDoesNotExist() throws Exception { MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME); mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); MessageManager messageManager = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession); mail.setAttribute(MailMetadata.MAIL_METADATA_MESSAGE_ID_ATTRIBUTE, messageId.getMessageId().serialize()); mail.setAttribute(MailMetadata.MAIL_METADATA_USERNAME_ATTRIBUTE, USERNAME); testee.done(true); }
@Test public void doneShouldCopyMailFromOutboxToSentWhenSuccess() throws Exception { MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME); mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); mailboxManager.createMailbox(SENT_MAILBOX_PATH, mailboxSession); MessageManager messageManager = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession); mail.setAttribute(MailMetadata.MAIL_METADATA_MESSAGE_ID_ATTRIBUTE, messageId.getMessageId().serialize()); mail.setAttribute(MailMetadata.MAIL_METADATA_USERNAME_ATTRIBUTE, USERNAME); testee.done(true); MessageManager sentMailbox = mailboxManager.getMailbox(SENT_MAILBOX_PATH, mailboxSession); MessageResultIterator resultIterator = sentMailbox.getMessages(MessageRange.one(UID), FetchGroupImpl.FULL_CONTENT, mailboxSession); assertThat(resultIterator).hasSize(1); }
@Test public void doneShouldNotThrowWhenMessageIsNotInOutbox() throws Exception { MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME); mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); mailboxManager.createMailbox(SENT_MAILBOX_PATH, mailboxSession); MessageManager messageManager = mailboxManager.getMailbox(SENT_MAILBOX_PATH, mailboxSession); ComposedMessageId sentMessageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession); mail.setAttribute(MailMetadata.MAIL_METADATA_MESSAGE_ID_ATTRIBUTE, sentMessageId.getMessageId().serialize()); mail.setAttribute(MailMetadata.MAIL_METADATA_USERNAME_ATTRIBUTE, USERNAME); testee.done(true); }