@Override public Map<String, String> moveMessages(List<? extends Message> messages, Folder folder) throws MessagingException { if (messages.isEmpty()) { return null; } Map<String, String> uidMapping = copyMessages(messages, folder); setFlags(messages, Collections.singleton(Flag.DELETED), true); return uidMapping; }
@Test public void copyMessages_withoutDestinationFolderOfWrongType_shouldThrow() throws Exception { ImapFolder sourceFolder = createFolder("Source"); Folder destinationFolder = mock(Folder.class); List<ImapMessage> messages = singletonList(mock(ImapMessage.class)); try { sourceFolder.copyMessages(messages, destinationFolder); fail("Expected exception"); } catch (MessagingException e) { assertEquals("ImapFolder.copyMessages passed non-ImapFolder", e.getMessage()); } }
@Test public void copyMessages_withEmptyMessageList_shouldReturnNull() throws Exception { ImapFolder sourceFolder = createFolder("Source"); ImapFolder destinationFolder = createFolder("Destination"); List<ImapMessage> messages = Collections.emptyList(); Map<String, String> uidMapping = sourceFolder.copyMessages(messages, destinationFolder); assertNull(uidMapping); }
@Test public void copyMessages_withClosedFolder_shouldThrow() throws Exception { ImapFolder sourceFolder = createFolder("Source"); ImapFolder destinationFolder = createFolder("Destination"); when(imapStore.getConnection()).thenReturn(imapConnection); when(imapStore.getCombinedPrefix()).thenReturn(""); List<ImapMessage> messages = singletonList(mock(ImapMessage.class)); try { sourceFolder.copyMessages(messages, destinationFolder); fail("Expected exception"); } catch (MessagingException e) { assertEquals("Folder Source is not open.", e.getMessage()); } }
return remoteSrcFolder.copyMessages(messages, remoteDestFolder); } else { return remoteSrcFolder.moveMessages(messages, remoteDestFolder);
@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")); }