@Override public MailboxMapper getMailboxMapper(MailboxSession session) throws MailboxException { MailboxMapper mapper = (MailboxMapper) session.getAttributes().get(MAILBOXMAPPER); if (mapper == null) { mapper = createMailboxMapper(session); session.getAttributes().put(MAILBOXMAPPER, mapper); } return mapper; }
@Test public void createMailboxShouldCreateAMailbox() throws Exception { mailboxManagerManagement.createMailbox(MailboxConstants.USER_NAMESPACE, USER, "name"); assertThat(mapperFactory.createMailboxMapper(session).list()).hasSize(1); assertThat(mapperFactory.createMailboxMapper(session).findMailboxByPath(MailboxPath.forUser(USER, "name"))).isNotNull(); }
@Test public void createMailboxShouldNotCreateAdditionalMailboxesIfMailboxAlreadyExists() throws Exception { MailboxPath path = MailboxPath.forUser(USER, "name"); Mailbox mailbox = new SimpleMailbox(path, UID_VALIDITY); mapperFactory.createMailboxMapper(session).save(mailbox); assertThat(mapperFactory.createMailboxMapper(session).list()).containsExactly(mailbox); }
@Test public void deleteMailboxesShouldDeleteInbox() throws Exception { mapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "INBOX"), UID_VALIDITY)); mailboxManagerManagement.deleteMailboxes(USER); assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty(); }
@Test public void deleteMailboxesShouldNotDeleteMailboxesBelongingToOtherUsers() throws Exception { Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser("userbis", "name"), UID_VALIDITY); mapperFactory.createMailboxMapper(session).save(mailbox); mailboxManagerManagement.deleteMailboxes(USER); assertThat(mapperFactory.createMailboxMapper(session).list()).containsExactly(mailbox); }
@Test public void deleteMailboxesShouldDeleteMailboxesWithEmptyNames() throws Exception { mapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, ""), UID_VALIDITY)); mailboxManagerManagement.deleteMailboxes(USER); assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty(); }
@Test public void deleteMailboxesShouldDeleteMailboxes() throws Exception { mapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY)); mailboxManagerManagement.deleteMailboxes(USER); assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty(); }
@Test public void deleteMailboxShouldDeleteGivenMailbox() throws Exception { mapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY)); mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER, "name"); assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty(); }
@Test public void importEmlFileToMailboxShouldImportEmlFileToGivenMailbox() throws Exception { Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY); mapperFactory.createMailboxMapper(session).save(mailbox); String emlpath = ClassLoader.getSystemResource("eml/frnog.eml").getFile(); mailboxManagerManagement.importEmlFileToMailbox(MailboxConstants.USER_NAMESPACE, USER, "name", emlpath); assertThat(mapperFactory.getMessageMapper(session).countMessagesInMailbox(mailbox)).isEqualTo(1); Iterator<MailboxMessage> iterator = mapperFactory.getMessageMapper(session).findInMailbox(mailbox, MessageRange.all(), MessageMapper.FetchType.Full, LIMIT); MailboxMessage mailboxMessage = iterator.next(); assertThat(IOUtils.toString(new FileInputStream(new File(emlpath)), StandardCharsets.UTF_8)) .isEqualTo(IOUtils.toString(mailboxMessage.getFullContent(), StandardCharsets.UTF_8)); }
@Test public void deleteMailboxesShouldDeleteMailboxesChildren() throws Exception { mapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "INBOX.test"), UID_VALIDITY)); mailboxManagerManagement.deleteMailboxes(USER); assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty(); }
@Test public void deleteMailboxesShouldDeleteMultipleMailboxes() throws Exception { mapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY)); mapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "INBOX"), UID_VALIDITY)); mapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "INBOX.test"), UID_VALIDITY)); mailboxManagerManagement.deleteMailboxes(USER); assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty(); }
@Test public void deleteMailboxesShouldNotDeleteMailboxesBelongingToNotPrivateNamespace() throws Exception { Mailbox mailbox = new SimpleMailbox(new MailboxPath("#top", USER, "name"), UID_VALIDITY); mapperFactory.createMailboxMapper(session).save(mailbox); mailboxManagerManagement.deleteMailboxes(USER); assertThat(mapperFactory.createMailboxMapper(session).list()).containsExactly(mailbox); }
@Test public void deleteMailboxShouldNotDeleteGivenMailboxIfWrongUser() throws Exception { Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser("userbis", "name"), UID_VALIDITY); mapperFactory.createMailboxMapper(session).save(mailbox); mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER, "name"); assertThat(mapperFactory.createMailboxMapper(session).list()).containsOnly(mailbox); }
@Test public void importEmlFileToMailboxShouldNotImportEmlFileWithWrongPathToGivenMailbox() throws Exception { Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY); mapperFactory.createMailboxMapper(session).save(mailbox); String emlpath = ClassLoader.getSystemResource("eml/frnog.eml").getFile(); mailboxManagerManagement.importEmlFileToMailbox(MailboxConstants.USER_NAMESPACE, USER, "name", "wrong_path" + emlpath); assertThat(mapperFactory.getMessageMapper(session).countMessagesInMailbox(mailbox)).isEqualTo(0); Iterator<MailboxMessage> iterator = mapperFactory.getMessageMapper(session).findInMailbox(mailbox, MessageRange.all(), MessageMapper.FetchType.Full, LIMIT); assertThat(iterator.hasNext()).isFalse(); }
@Test public void deleteMailboxShouldNotDeleteGivenMailboxIfWrongName() throws Exception { Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(USER, "wrong_name"), UID_VALIDITY); mapperFactory.createMailboxMapper(session).save(mailbox); mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER, "name"); assertThat(mapperFactory.createMailboxMapper(session).list()).containsOnly(mailbox); }
@Test public void deleteMailboxShouldNotDeleteGivenMailboxIfWrongNamespace() throws Exception { Mailbox mailbox = new SimpleMailbox(new MailboxPath("#top", USER, "name"), UID_VALIDITY); mapperFactory.createMailboxMapper(session).save(mailbox); mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER, "name"); assertThat(mapperFactory.createMailboxMapper(session).list()).containsOnly(mailbox); }
@Test public void createMailboxShouldThrowIfMailboxAlreadyExists() throws Exception { MailboxPath path = MailboxPath.forUser(USER, "name"); Mailbox mailbox = new SimpleMailbox(path, UID_VALIDITY); mapperFactory.createMailboxMapper(session).save(mailbox); assertThatThrownBy(() -> mailboxManagerManagement.createMailbox(MailboxConstants.USER_NAMESPACE, USER, "name")) .isInstanceOf(RuntimeException.class) .hasCauseInstanceOf(MailboxExistsException.class); }
@Test public void listMailboxesShouldReturnUserMailboxes() throws Exception { Mailbox mailbox1 = new SimpleMailbox(new MailboxPath("#top", USER, "name1"), UID_VALIDITY); Mailbox mailbox2 = new SimpleMailbox(MailboxPath.forUser(USER, "name2"), UID_VALIDITY); Mailbox mailbox3 = new SimpleMailbox(MailboxPath.forUser("other_user", "name3"), UID_VALIDITY); Mailbox mailbox4 = new SimpleMailbox(MailboxPath.forUser(USER, "name4"), UID_VALIDITY); Mailbox mailbox5 = new SimpleMailbox(MailboxPath.forUser(USER, "INBOX"), UID_VALIDITY); Mailbox mailbox6 = new SimpleMailbox(MailboxPath.forUser(USER, "INBOX.toto"), UID_VALIDITY); mapperFactory.createMailboxMapper(session).save(mailbox1); mapperFactory.createMailboxMapper(session).save(mailbox2); mapperFactory.createMailboxMapper(session).save(mailbox3); mapperFactory.createMailboxMapper(session).save(mailbox4); mapperFactory.createMailboxMapper(session).save(mailbox5); mapperFactory.createMailboxMapper(session).save(mailbox6); assertThat(mailboxManagerManagement.listMailboxes(USER)).containsOnly("name2", "name4", "INBOX", "INBOX.toto"); }