@Override protected MoveRequest createRequest(ImapCommand command, String tag, boolean useUids, IdRange[] idSet, String mailboxName) { return new MoveRequest(command, idSet, mailboxName, useUids, tag); }
@Test public void testQuotaParsing() throws DecodingException { MoveCommandParser parser = new MoveCommandParser(); ImapCommand command = ImapCommand.anyStateCommand("Command"); String commandString = " 42:69 foo \n"; InputStream inputStream = new ByteArrayInputStream(commandString.getBytes()); ImapRequestStreamLineReader lineReader = new ImapRequestStreamLineReader(inputStream, null); MoveRequest request = (MoveRequest) parser.decode(command, lineReader, "A003", null); MoveRequest expected = new MoveRequest(command, new IdRange[] {new IdRange(42, 69)}, "foo", false, "A003"); assertThat(request).isEqualTo(expected); } }
@Test public void processShouldRespondNoOnUnExistingTargetMailbox() throws Exception { MoveRequest moveRequest = new MoveRequest(ImapCommand.anyStateCommand("Name"), new IdRange[] {new IdRange(5, 6), new IdRange(1,3)}, ImapConstants.INBOX_NAME, true, TAG); MailboxSession.User user = mock(MailboxSession.User.class); when(user.getUserName()).thenReturn("username"); when(mockMailboxSession.getUser()).thenReturn(user); when(mockMailboxSession.getSessionId()).thenReturn(42L); when(mockImapSession.getState()).thenReturn(ImapSessionState.SELECTED); when(mockImapSession.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY)).thenReturn(mockMailboxSession); MailboxPath inbox = MailboxPath.inbox(mockMailboxSession); MailboxPath selected = new MailboxPath(inbox, "selected"); SelectedMailbox selectedMailbox = mock(SelectedMailbox.class); when(selectedMailbox.getLastUid()).thenReturn(Optional.of(MessageUid.of(8))); when(selectedMailbox.existsCount()).thenReturn(8L); when(selectedMailbox.getPath()).thenReturn(selected); when(mockImapSession.getSelected()).thenReturn(selectedMailbox); when(mockMailboxManager.mailboxExists(inbox, mockMailboxSession)).thenReturn(false); StatusResponse noResponse = mock(StatusResponse.class); when(mockStatusResponseFactory.taggedNo(any(String.class), any(ImapCommand.class), any(HumanReadableText.class), any(StatusResponse.ResponseCode.class))).thenReturn(noResponse); testee.process(moveRequest, mockResponder, mockImapSession); verify(mockMailboxManager).startProcessingRequest(mockMailboxSession); verify(mockMailboxManager).endProcessingRequest(mockMailboxSession); verify(mockMailboxManager).mailboxExists(inbox, mockMailboxSession); verify(mockResponder).respond(noResponse); verifyNoMoreInteractions(mockMailboxManager, mockResponder, mockNextProcessor); }
@Test public void processShouldNotHandleMoveRequests() { MoveRequest moveRequest = new MoveRequest(ImapCommand.anyStateCommand("Name"), new IdRange[] {new IdRange(4, 6)}, ImapConstants.INBOX_NAME, true, TAG); testee.process(moveRequest, mockResponder, mockImapSession); verify(mockNextProcessor).process(moveRequest, mockResponder, mockImapSession); verifyNoMoreInteractions(mockMailboxManager, mockResponder, mockNextProcessor); }
@Test public void processShouldRespondNoOnMailboxException() throws Exception { MoveRequest moveRequest = new MoveRequest(ImapCommand.anyStateCommand("Name"), new IdRange[] {new IdRange(5, 6), new IdRange(1,3)}, ImapConstants.INBOX_NAME, true, TAG); MailboxSession.User user = mock(MailboxSession.User.class); when(user.getUserName()).thenReturn("username"); when(mockMailboxSession.getUser()).thenReturn(user); when(mockMailboxSession.getSessionId()).thenReturn(42L); when(mockImapSession.getState()).thenReturn(ImapSessionState.SELECTED); when(mockImapSession.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY)).thenReturn(mockMailboxSession); MailboxPath inbox = MailboxPath.inbox(mockMailboxSession); MailboxPath selected = new MailboxPath(inbox, "selected"); SelectedMailbox selectedMailbox = mock(SelectedMailbox.class); when(selectedMailbox.getLastUid()).thenReturn(Optional.of(MessageUid.of(8))); when(selectedMailbox.existsCount()).thenReturn(8L); when(selectedMailbox.getPath()).thenReturn(selected); when(mockImapSession.getSelected()).thenReturn(selectedMailbox); when(mockMailboxManager.mailboxExists(inbox, mockMailboxSession)).thenThrow(new MailboxException()); StatusResponse noResponse = mock(StatusResponse.class); when(mockStatusResponseFactory.taggedNo(any(String.class), any(ImapCommand.class), any(HumanReadableText.class))).thenReturn(noResponse); testee.process(moveRequest, mockResponder, mockImapSession); verify(mockMailboxManager).startProcessingRequest(mockMailboxSession); verify(mockMailboxManager).endProcessingRequest(mockMailboxSession); verify(mockMailboxManager).mailboxExists(inbox, mockMailboxSession); verify(mockResponder).respond(noResponse); verifyNoMoreInteractions(mockMailboxManager, mockResponder, mockNextProcessor); }
@Test public void processShouldWorkWithMultipleRanges() throws Exception { MoveRequest moveRequest = new MoveRequest(ImapCommand.anyStateCommand("Name"), new IdRange[] {new IdRange(5, 6), new IdRange(1,3)}, ImapConstants.INBOX_NAME, true, TAG);
@Test public void processShouldWork() throws Exception { MoveRequest moveRequest = new MoveRequest(ImapCommand.anyStateCommand("Name"), new IdRange[] {new IdRange(4, 6)}, ImapConstants.INBOX_NAME, true, TAG);