public boolean isMatching(MessageId messageId) { return getComposedMessageId().getMessageId().equals(messageId); }
private Task.Result moveMessage(CassandraId newMailboxId, ComposedMessageId composedMessageId, MailboxSession session, MailboxMergingTask.Context context) { try { messageIdManager.setInMailboxesNoCheck(composedMessageId.getMessageId(), newMailboxId, session); context.incrementMovedCount(); return Task.Result.COMPLETED; } catch (MailboxException e) { LOGGER.warn("Failed moving message {}", composedMessageId.getMessageId(), e); context.incrementFailedCount(); return Task.Result.PARTIAL; } }
public void retrieveAndSaveAttachmentDetails(String user, String messageId, String attachmentId, ComposedMessageId composedMessageId) throws MailboxException { AttachmentId mailboxAttachmentId = mainStepdefs.messageIdProbe .retrieveAttachmentIds(composedMessageId.getMessageId(), user) .get(0); inputToMessageId.put(messageId, composedMessageId.getMessageId()); attachmentsByMessageId.put(messageId, attachmentId); blobIdByAttachmentId.put(attachmentId, mailboxAttachmentId.getId()); }
private CompletableFuture<Void> deleteUsingMailboxId(ComposedMessageIdWithMetaData composedMessageIdWithMetaData) { ComposedMessageId composedMessageId = composedMessageIdWithMetaData.getComposedMessageId(); CassandraMessageId messageId = (CassandraMessageId) composedMessageId.getMessageId(); CassandraId mailboxId = (CassandraId) composedMessageId.getMailboxId(); MessageUid uid = composedMessageId.getUid(); return CompletableFuture.allOf( imapUidDAO.delete(messageId, mailboxId), messageIdDAO.delete(mailboxId, uid) ).thenCompose(voidValue -> indexTableHandler.updateIndexOnDelete(composedMessageIdWithMetaData, mailboxId)); }
private CompletableFuture<Void> deleteIds(ComposedMessageIdWithMetaData metaData) { CassandraMessageId messageId = (CassandraMessageId) metaData.getComposedMessageId().getMessageId(); CassandraId mailboxId = (CassandraId) metaData.getComposedMessageId().getMailboxId(); return CompletableFuture.allOf( imapUidDAO.delete(messageId, mailboxId), messageIdDAO.delete(mailboxId, metaData.getComposedMessageId().getUid())) .thenCompose(voidValue -> indexTableHandler.updateIndexOnDelete(metaData, mailboxId)); }
@Given("^\"([^\"]*)\" mailbox \"([^\"]*)\" contains a big message \"([^\"]*)\"$") public void appendBigMessageToMailbox(String user, String mailbox, String messageId) throws Throwable { MailboxPath mailboxPath = MailboxPath.forUser(user, mailbox); ComposedMessageId composedMessageId = mainStepdefs.mailboxProbe.appendMessage(user, mailboxPath, AppendCommand.from(new ByteArrayInputStream( Strings.repeat("header: 0123456789\r\n", 128 * 1024) .getBytes(StandardCharsets.UTF_8)))); inputToMessageId.put(messageId, composedMessageId.getMessageId()); }
private void appendMessage(String messageName, String mailbox, Flags flags) throws Exception { ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z"); boolean isRecent = flags.contains(Flags.Flag.RECENT); MessageId id = mainStepdefs.mailboxProbe.appendMessage(userStepdefs.getConnectedUser(), MailboxPath.forUser(userStepdefs.getConnectedUser(), mailbox), new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), Date.from(dateTime.toInstant()), isRecent, flags) .getMessageId(); messageIdStepdefs.addMessageId(messageName, id); mainStepdefs.awaitMethod.run(); }
private MessageId appendMessage(String mailbox, ContentType contentType, String subject, String content, Optional<Map<String, String>> headers) throws Exception { ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z"); try { return mainStepdefs.mailboxProbe.appendMessage(userStepdefs.getConnectedUser(), MailboxPath.forUser(userStepdefs.getConnectedUser(), mailbox), new ByteArrayInputStream(message(contentType, subject, content, headers).getBytes(StandardCharsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags()).getMessageId(); } finally { mainStepdefs.awaitMethod.run(); } }
private void appendMessage(String messageName, String mailbox, String emlFileName) throws Exception { ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z"); MessageId id = mainStepdefs.mailboxProbe.appendMessage(userStepdefs.getConnectedUser(), MailboxPath.forUser(userStepdefs.getConnectedUser(), mailbox), ClassLoader.getSystemResourceAsStream(emlFileName), Date.from(dateTime.toInstant()), false, new Flags()) .getMessageId(); messageIdStepdefs.addMessageId(messageName, id); mainStepdefs.awaitMethod.run(); }
private CompletableFuture<ResultSet> retrieveRow(ComposedMessageIdWithMetaData messageId, FetchType fetchType) { CassandraMessageId cassandraMessageId = (CassandraMessageId) messageId.getComposedMessageId().getMessageId(); return cassandraAsyncExecutor.execute(retrieveSelect(fetchType) .bind() .setUUID(MESSAGE_ID, cassandraMessageId.get())); }
@Given("^\"([^\"]*)\" mailbox \"([^\"]*)\" contains a message \"([^\"]*)\"$") public void appendMessageToMailbox(String user, String mailbox, String messageId) throws Throwable { MailboxPath mailboxPath = MailboxPath.forUser(user, mailbox); ComposedMessageId composedMessageId = mainStepdefs.mailboxProbe.appendMessage(user, mailboxPath, AppendCommand.from(ClassLoader.getSystemResourceAsStream("eml/oneAttachment.eml"))); inputToMessageId.put(messageId, composedMessageId.getMessageId()); }
@Given("^the user has a message \"([^\"]*)\" in \"([^\"]*)\" mailbox, composed of a multipart with inlined text part and inlined html part$") public void appendMessageFromFileInlinedMultipart(String messageName, String mailbox) throws Exception { ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z"); MessageId id = mainStepdefs.mailboxProbe.appendMessage(userStepdefs.getConnectedUser(), MailboxPath.forUser(userStepdefs.getConnectedUser(), mailbox), ClassLoader.getSystemResourceAsStream("eml/inlinedMultipart.eml"), Date.from(dateTime.toInstant()), false, new Flags()) .getMessageId(); messageIdStepdefs.addMessageId(messageName, id); mainStepdefs.awaitMethod.run(); }
@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 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)); }
@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)); }
@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); } }
@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 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); }
@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); }