@Override public void expunge() throws MessagingException { open(OPEN_MODE_RW); checkOpen(); try { executeSimpleCommand("EXPUNGE"); } catch (IOException ioe) { throw ioExceptionHandler(connection, ioe); } }
@Test public void sync_withRemoteFolderProvided_shouldNotOpenRemoteFolder() throws Exception { messageCountInRemoteFolder(1); imapSync.sync(FOLDER_NAME, syncConfig, listener, remoteFolder); verify(remoteFolder, never()).open(Folder.OPEN_MODE_RW); }
@Test public void open_withMessagingException_shouldThrowMessagingException() throws Exception { ImapFolder imapFolder = createFolder("Folder"); when(imapStore.getConnection()).thenReturn(imapConnection); doThrow(MessagingException.class).when(imapConnection).executeSimpleCommand("SELECT \"Folder\""); try { imapFolder.open(OPEN_MODE_RW); fail("Expected exception"); } catch (MessagingException ignored) { } }
@Test public void sync_withNoRemoteFolderProvided_shouldOpenRemoteFolderFromStore() throws Exception { messageCountInRemoteFolder(1); configureRemoteStoreWithFolder(); imapSync.sync(FOLDER_NAME, syncConfig, listener, null); verify(remoteFolder).open(Folder.OPEN_MODE_RO); }
@Test public void appendMessages_shouldIssueRespectiveCommand() throws Exception { ImapFolder folder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); folder.open(OPEN_MODE_RW); List<ImapMessage> messages = createImapMessages("1"); when(imapConnection.readResponse()).thenReturn(createImapResponse("x OK [APPENDUID 1 23]")); folder.appendMessages(messages); verify(imapConnection).sendCommand("APPEND \"Folder\" () {0}", false); }
@Test public void fetch_withBodySaneFetchProfile_shouldIssueRespectiveCommand() throws Exception { ImapFolder folder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RO); folder.open(OPEN_MODE_RO); when(imapConnection.readResponse(nullable(ImapResponseCallback.class))).thenReturn(createImapResponse("x OK")); List<ImapMessage> messages = createImapMessages("1"); FetchProfile fetchProfile = createFetchProfile(Item.BODY_SANE); when(storeConfig.getMaximumAutoDownloadMessageSize()).thenReturn(4096); folder.fetch(messages, fetchProfile, null); verify(imapConnection).sendCommand("UID FETCH 1 (UID BODY.PEEK[]<0.4096>)", false); }
@Test public void delete_fromTrashFolder_shouldIssueUidStoreFlagsCommand() throws Exception { ImapFolder folder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); List<ImapMessage> messages = singletonList(createImapMessage("23")); folder.open(OPEN_MODE_RW); folder.delete(messages, "Folder"); assertCommandWithIdsIssued("UID STORE 23 +FLAGS.SILENT (\\Deleted)"); }
@Test public void fetch_withStructureFetchProfile_shouldIssueRespectiveCommand() throws Exception { ImapFolder folder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RO); folder.open(OPEN_MODE_RO); when(imapConnection.readResponse(nullable(ImapResponseCallback.class))).thenReturn(createImapResponse("x OK")); List<ImapMessage> messages = createImapMessages("1"); FetchProfile fetchProfile = createFetchProfile(Item.STRUCTURE); folder.fetch(messages, fetchProfile, null); verify(imapConnection).sendCommand("UID FETCH 1 (UID BODYSTRUCTURE)", false); }
@Test public void open_readOnly_shouldOpenFolder() throws Exception { ImapFolder imapFolder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RO); imapFolder.open(OPEN_MODE_RO); assertTrue(imapFolder.isOpen()); }
@Test public void copyMessages() throws Exception { ImapFolder sourceFolder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); ImapFolder destinationFolder = createFolder("Destination"); List<ImapMessage> messages = singletonList(createImapMessage("1")); setupCopyResponse("x OK [COPYUID 23 1 101] Success"); sourceFolder.open(OPEN_MODE_RW); Map<String, String> uidMapping = sourceFolder.copyMessages(messages, destinationFolder); assertNotNull(uidMapping); assertEquals("101", uidMapping.get("1")); }
@Test public void moveMessages_shouldCopyMessages() throws Exception { ImapFolder sourceFolder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); ImapFolder destinationFolder = createFolder("Destination"); List<ImapMessage> messages = singletonList(createImapMessage("1")); setupCopyResponse("x OK [COPYUID 23 1 101] Success"); sourceFolder.open(OPEN_MODE_RW); Map<String, String> uidMapping = sourceFolder.moveMessages(messages, destinationFolder); assertNotNull(uidMapping); assertEquals("101", uidMapping.get("1")); }
@Test public void open_shouldFetchMessageCount() throws Exception { ImapFolder imapFolder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); imapFolder.open(OPEN_MODE_RW); assertEquals(23, imapFolder.getMessageCount()); }
@Test public void open_readWrite_shouldMakeGetModeReturnReadWrite() throws Exception { ImapFolder imapFolder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); imapFolder.open(OPEN_MODE_RW); assertEquals(OPEN_MODE_RW, imapFolder.getMode()); }
@Test public void open_readOnly_shouldMakeGetModeReturnReadOnly() throws Exception { ImapFolder imapFolder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RO); imapFolder.open(OPEN_MODE_RO); assertEquals(OPEN_MODE_RO, imapFolder.getMode()); }
@Test public void getUidFromMessageId() throws Exception { ImapFolder folder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); folder.open(OPEN_MODE_RW); setupUidSearchResponses("* SEARCH 23"); String uid = folder.getUidFromMessageId("<00000000.0000000@example.org>"); assertEquals("23", uid); }
@Test public void close_shouldCloseImapFolder() throws Exception { ImapFolder imapFolder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); imapFolder.open(OPEN_MODE_RW); imapFolder.close(); assertFalse(imapFolder.isOpen()); }
@Test public void getHighestUid() throws Exception { ImapFolder folder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); setupUidSearchResponses("* SEARCH 42"); folder.open(OPEN_MODE_RW); long highestUid = folder.getHighestUid(); assertEquals(42L, highestUid); }
@Test public void getUidFromMessageId_withMessageIdHeader_shouldIssueUidSearchCommand() throws Exception { ImapFolder folder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); folder.open(OPEN_MODE_RW); setupUidSearchResponses("1 OK SEARCH Completed"); folder.getUidFromMessageId("<00000000.0000000@example.org>"); assertCommandIssued("UID SEARCH HEADER MESSAGE-ID \"<00000000.0000000@example.org>\""); }
@Test public void getMessages_sequenceNumbers() throws Exception { ImapFolder folder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); setupUidSearchResponses("* SEARCH 17", "* SEARCH 18", "* SEARCH 49"); folder.open(OPEN_MODE_RW); List<ImapMessage> messages = folder.getMessages(newSet(1L, 2L, 5L), false, null); assertNotNull(messages); assertEquals(newSet("17", "18", "49"), extractMessageUids(messages)); }