@Override public Collection<String> listSubscriptions(String user) throws Exception { MailboxSession mailboxSession = mailboxManager.createSystemSession(user); return subscriptionManager.subscriptions(mailboxSession); }
private void expectSubscriptions() throws Exception { when(session.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY)).thenReturn(mailboxSession); when(mailboxSession.getPathDelimiter()).thenReturn(HIERARCHY_DELIMITER); when(manager.subscriptions(mailboxSession)).thenReturn(subscriptions); } }
@Test public void user1ShouldNotHaveAnySubscriptionByDefault() throws SubscriptionException { assertThat(manager.subscriptions(session)).isEmpty(); }
@Test public void user1ShouldBeAbleToSubscribeOneMailbox() throws SubscriptionException { manager.subscribe(session, MAILBOX1); assertThat(manager.subscriptions(session)).containsExactly(MAILBOX1); }
private void listSubscriptions(ImapSession session, Responder responder, String referenceName, String mailboxName) throws SubscriptionException, MailboxException { MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session); Collection<String> mailboxes = getSubscriptionManager().subscriptions(mailboxSession); String decodedMailName = CharsetUtil.decodeModifiedUTF7(referenceName); MailboxNameExpression expression = new PrefixedRegex( decodedMailName, CharsetUtil.decodeModifiedUTF7(mailboxName), mailboxSession.getPathDelimiter()); Collection<String> mailboxResponses = new ArrayList<>(); for (String mailbox : mailboxes) { respond(responder, expression, mailbox, true, mailboxes, mailboxResponses, mailboxSession.getPathDelimiter()); } }
@Test public void subscribeShouldBeIdempotent() throws SubscriptionException { manager.subscribe(session, MAILBOX1); manager.subscribe(session, MAILBOX1); assertThat(manager.subscriptions(session)).containsExactly(MAILBOX1); }
@Test public void user1ShouldBeAbleToSubscribeTwoMailbox() throws SubscriptionException { manager.subscribe(session, MAILBOX1); manager.subscribe(session, MAILBOX2); assertThat(manager.subscriptions(session)).containsOnly(MAILBOX1, MAILBOX2); }
private void listSubscriptions(ImapSession session, Responder responder, final String referenceName, final String mailboxName) throws SubscriptionException, MailboxException { final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session); final Collection<String> mailboxes = getSubscriptionManager().subscriptions(mailboxSession); // If the mailboxName is fully qualified, ignore the reference name. String finalReferencename = referenceName; if (mailboxName.charAt(0) == MailboxConstants.NAMESPACE_PREFIX_CHAR) { finalReferencename = ""; } // Is the interpreted (combined) pattern relative? boolean isRelative = ((finalReferencename + mailboxName).charAt(0) != MailboxConstants.NAMESPACE_PREFIX_CHAR); MailboxPath basePath = null; if (isRelative) { basePath = new MailboxPath(MailboxConstants.USER_NAMESPACE, mailboxSession.getUser().getUserName(), CharsetUtil.decodeModifiedUTF7(finalReferencename)); } else { basePath = buildFullPath(session, CharsetUtil.decodeModifiedUTF7(finalReferencename)); } final MailboxQuery expression = new MailboxQuery(basePath, CharsetUtil.decodeModifiedUTF7(mailboxName), mailboxSession.getPathDelimiter()); final Collection<String> mailboxResponses = new ArrayList<String>(); for (final String mailbox : mailboxes) { respond(responder, expression, mailbox, true, mailboxes, mailboxResponses, mailboxSession.getPathDelimiter()); } }
@Test public void user1ShouldBeAbleToUnsubscribeOneMailbox() throws SubscriptionException { manager.subscribe(session, MAILBOX1); manager.subscribe(session, MAILBOX2); manager.unsubscribe(session, MAILBOX1); assertThat(manager.subscriptions(session)).containsExactly(MAILBOX2); }
@Test public void unsubscribeShouldBeIdempotent() throws SubscriptionException { manager.subscribe(session, MAILBOX1); manager.subscribe(session, MAILBOX2); manager.unsubscribe(session, MAILBOX1); manager.unsubscribe(session, MAILBOX1); assertThat(manager.subscriptions(session)).containsExactly(MAILBOX2); }