private List<NamespaceResponse.Namespace> buildSharedNamespaces(final MailboxSession mailboxSession, ImapSession session) { List<NamespaceResponse.Namespace> sharedNamespaces = null; final Collection<String> sharedSpaces = mailboxSession.getSharedSpaces(); if (session.supportMultipleNamespaces() && !sharedSpaces.isEmpty()) { sharedNamespaces = new ArrayList<NamespaceResponse.Namespace>(sharedSpaces.size()); for (String space : sharedSpaces) { sharedNamespaces.add(new NamespaceResponse.Namespace(space, mailboxSession.getPathDelimiter())); } } return sharedNamespaces; }
private List<NamespaceResponse.Namespace> buildSharedNamespaces(MailboxSession mailboxSession, ImapSession session) { List<NamespaceResponse.Namespace> sharedNamespaces = null; final Collection<String> sharedSpaces = mailboxSession.getSharedSpaces(); if (session.supportMultipleNamespaces() && !sharedSpaces.isEmpty()) { sharedNamespaces = new ArrayList<>(sharedSpaces.size()); for (String space : sharedSpaces) { sharedNamespaces.add(new NamespaceResponse.Namespace(space, mailboxSession.getPathDelimiter())); } } return sharedNamespaces; }
private List<NamespaceResponse.Namespace> buildOtherUsersSpaces(final MailboxSession mailboxSession, ImapSession session) { final String otherUsersSpace = mailboxSession.getOtherUsersSpace(); final List<NamespaceResponse.Namespace> otherUsersSpaces; if (session.supportMultipleNamespaces() == false || otherUsersSpace == null) { otherUsersSpaces = null; } else { otherUsersSpaces = new ArrayList<NamespaceResponse.Namespace>(1); otherUsersSpaces.add(new NamespaceResponse.Namespace(otherUsersSpace, mailboxSession.getPathDelimiter())); } return otherUsersSpaces; }
@Test public void testTwoPersonalNamespaceShouldWritePrefixThenDeliminatorThenNilNil() throws Exception { final String aPrefix = "A Prefix"; final String aDeliminator = "@"; final String anotherPrefix = "Another Prefix"; final String anotherDeliminator = "^"; List<NamespaceResponse.Namespace> namespaces = new ArrayList<>(); namespaces.add(new NamespaceResponse.Namespace(aPrefix, aDeliminator .charAt(0))); namespaces.add(new NamespaceResponse.Namespace(anotherPrefix, anotherDeliminator.charAt(0))); subject.doEncode(new NamespaceResponse(namespaces, null, null), mockComposer, dummySession); InOrder inOrder = Mockito.inOrder(mockComposer); inOrder.verify(mockComposer, times(1)).untagged(); inOrder.verify(mockComposer, times(1)).commandName(ImapConstants.NAMESPACE_COMMAND_NAME); inOrder.verify(mockComposer, times(2)).openParen(); inOrder.verify(mockComposer, times(1)).quote(aPrefix + aDeliminator); inOrder.verify(mockComposer, times(1)).quote(aDeliminator); inOrder.verify(mockComposer, times(1)).closeParen(); inOrder.verify(mockComposer, times(1)).openParen(); inOrder.verify(mockComposer, times(1)).quote(anotherPrefix + anotherDeliminator); inOrder.verify(mockComposer, times(1)).quote(anotherDeliminator); inOrder.verify(mockComposer, times(2)).closeParen(); inOrder.verify(mockComposer, times(2)).nil(); inOrder.verify(mockComposer, times(1)).end(); }
@Test public void testOneUsersNamespaceShouldWriteNilThenPrefixThenDeliminatorThenNil() throws Exception { final String aPrefix = "A Prefix"; final String aDeliminator = "@"; List<NamespaceResponse.Namespace> namespaces = new ArrayList<>(); namespaces.add(new NamespaceResponse.Namespace(aPrefix, aDeliminator .charAt(0))); subject.doEncode(new NamespaceResponse(null, namespaces, null), mockComposer, dummySession); InOrder inOrder = Mockito.inOrder(mockComposer); inOrder.verify(mockComposer, times(1)).untagged(); inOrder.verify(mockComposer, times(1)).commandName(ImapConstants.NAMESPACE_COMMAND_NAME); inOrder.verify(mockComposer, times(1)).nil(); inOrder.verify(mockComposer, times(2)).openParen(); inOrder.verify(mockComposer, times(1)).quote(aPrefix + aDeliminator); inOrder.verify(mockComposer, times(1)).quote(aDeliminator); inOrder.verify(mockComposer, times(2)).closeParen(); inOrder.verify(mockComposer, times(1)).nil(); inOrder.verify(mockComposer, times(1)).end(); }
@Test public void testOneSharedNamespaceShouldWriteNilThenPrefixThenDeliminatorThenNil() throws Exception { final String aPrefix = "A Prefix"; final String aDeliminator = "@"; List<NamespaceResponse.Namespace> namespaces = new ArrayList<>(); namespaces.add(new NamespaceResponse.Namespace(aPrefix, aDeliminator .charAt(0))); subject.doEncode(new NamespaceResponse(null, null, namespaces), mockComposer, dummySession); InOrder inOrder = Mockito.inOrder(mockComposer); inOrder.verify(mockComposer, times(1)).untagged(); inOrder.verify(mockComposer, times(1)).commandName(ImapConstants.NAMESPACE_COMMAND_NAME); inOrder.verify(mockComposer, times(2)).nil(); inOrder.verify(mockComposer, times(2)).openParen(); inOrder.verify(mockComposer, times(1)).quote(aPrefix + aDeliminator); inOrder.verify(mockComposer, times(1)).quote(aDeliminator); inOrder.verify(mockComposer, times(2)).closeParen(); inOrder.verify(mockComposer, times(1)).end(); }
@Test public void testNamespaceResponseShouldContainSharedSpaces() { when(imapSessionStub.supportMultipleNamespaces()).thenReturn(true); when(imapSessionStub.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY)).thenReturn(mailboxSessionStub); when(imapSessionStub.getAttribute(EnableProcessor.ENABLED_CAPABILITIES)).thenReturn(null); when(mailboxSessionStub.getPersonalSpace()).thenReturn(PERSONAL_PREFIX); when(mailboxSessionStub.getOtherUsersSpace()).thenReturn(USERS_PREFIX); when(mailboxSessionStub.getSharedSpaces()).thenReturn(Arrays.asList(SHARED_PREFIX)); when(mailboxSessionStub.getPathDelimiter()).thenReturn(MailboxConstants.DEFAULT_DELIMITER); when(imapSessionStub.getState()).thenReturn(ImapSessionState.AUTHENTICATED); when(statusResponseStub.taggedOk(anyString(), any(ImapCommand.class), any(HumanReadableText.class))) .thenReturn(mock(StatusResponse.class)); final List<NamespaceResponse.Namespace> sharedSpaces = new ArrayList<>(); sharedSpaces.add(new NamespaceResponse.Namespace(SHARED_PREFIX, MailboxConstants.DEFAULT_DELIMITER)); final NamespaceResponse response = buildResponse(sharedSpaces); final Responder responderMock = mock(Responder.class); subject.doProcess(namespaceRequest, responderMock, imapSessionStub); verify(responderMock, times(1)).respond(response); verify(responderMock, times(1)).respond(any(StatusResponse.class)); verifyNoMoreInteractions(responderMock); }
@Test public void testOnePersonalNamespaceShouldWritePrefixThenDeliminatorThenNilNil() throws Exception { final String aPrefix = "A Prefix"; final String aDeliminator = "@"; List<NamespaceResponse.Namespace> namespaces = new ArrayList<>(); namespaces.add(new NamespaceResponse.Namespace(aPrefix, aDeliminator .charAt(0))); subject.doEncode(new NamespaceResponse(namespaces, null, null), mockComposer, dummySession); InOrder inOrder = Mockito.inOrder(mockComposer); inOrder.verify(mockComposer, times(1)).untagged(); inOrder.verify(mockComposer, times(1)).commandName(ImapConstants.NAMESPACE_COMMAND_NAME); inOrder.verify(mockComposer, times(2)).openParen(); inOrder.verify(mockComposer, times(1)).quote(aPrefix + aDeliminator); inOrder.verify(mockComposer, times(1)).quote(aDeliminator); inOrder.verify(mockComposer, times(2)).closeParen(); inOrder.verify(mockComposer, times(2)).nil(); inOrder.verify(mockComposer, times(1)).end(); }
/** * Builds personal namespaces from the session. * * @param mailboxSession * not null * @return personal namespaces, not null */ private List<NamespaceResponse.Namespace> buildPersonalNamespaces(MailboxSession mailboxSession, ImapSession session) { final List<NamespaceResponse.Namespace> personalSpaces = new ArrayList<>(); String personal = ""; if (session.supportMultipleNamespaces()) { personal = mailboxSession.getPersonalSpace(); } personalSpaces.add(new NamespaceResponse.Namespace(personal, mailboxSession.getPathDelimiter())); return personalSpaces; }
/** * Builds personal namespaces from the session. * * @param mailboxSession * not null * @return personal namespaces, not null */ private List<NamespaceResponse.Namespace> buildPersonalNamespaces(final MailboxSession mailboxSession, ImapSession session) { final List<NamespaceResponse.Namespace> personalSpaces = new ArrayList<NamespaceResponse.Namespace>(); String personal = ""; if (session.supportMultipleNamespaces()) { personal = mailboxSession.getPersonalSpace(); } personalSpaces.add(new NamespaceResponse.Namespace(personal, mailboxSession.getPathDelimiter())); return personalSpaces; }
private List<NamespaceResponse.Namespace> buildOtherUsersSpaces(MailboxSession mailboxSession, ImapSession session) { final String otherUsersSpace = mailboxSession.getOtherUsersSpace(); final List<NamespaceResponse.Namespace> otherUsersSpaces; if (session.supportMultipleNamespaces() == false || otherUsersSpace == null) { otherUsersSpaces = null; } else { otherUsersSpaces = new ArrayList<>(1); otherUsersSpaces.add(new NamespaceResponse.Namespace(otherUsersSpace, mailboxSession.getPathDelimiter())); } return otherUsersSpaces; }
private NamespaceResponse buildResponse(List<NamespaceResponse.Namespace> sharedSpaces) { final List<NamespaceResponse.Namespace> personalSpaces = new ArrayList<>(); personalSpaces.add(new NamespaceResponse.Namespace(PERSONAL_PREFIX, MailboxConstants.DEFAULT_DELIMITER)); final List<NamespaceResponse.Namespace> otherUsersSpaces = new ArrayList<>(); otherUsersSpaces.add(new NamespaceResponse.Namespace(USERS_PREFIX, MailboxConstants.DEFAULT_DELIMITER)); return new NamespaceResponse(personalSpaces, otherUsersSpaces, sharedSpaces); } }