Search in sources :

Example 1 with OpenIMAPFolderParams

use of com.zimbra.client.ZMailbox.OpenIMAPFolderParams in project zm-mailbox by Zimbra.

the class TestZClient method testOpenImapFolder.

@Test
public void testOpenImapFolder() throws Exception {
    Mailbox mbox = TestUtil.getMailbox(USER_NAME);
    ZMailbox zmbox = TestUtil.getZMailbox(USER_NAME);
    Folder folder = mbox.createFolder(null, "TestOpenImapFolder", new Folder.FolderOptions().setDefaultView(MailItem.Type.MESSAGE));
    ItemIdentifier folderId = folder.getFolderItemIdentifier();
    List<ImapMessage> expected = new LinkedList<ImapMessage>();
    for (int i = 1; i <= 10; i++) {
        Message msg = TestUtil.addMessage(mbox, folderId.id, String.format("imap message %s", i), System.currentTimeMillis());
        expected.add(new ImapMessage(msg));
    }
    // test pagination
    OpenIMAPFolderParams params = new OpenIMAPFolderParams(folderId);
    // test fetching all results
    params.setLimit(100);
    OpenIMAPFolderResponse result = zmbox.fetchImapFolderChunk(params);
    assertEquals(10, result.getImapMessageInfo().size());
    assertFalse(result.getHasMore());
    // test fetching first 5
    params.setLimit(5);
    result = zmbox.fetchImapFolderChunk(params);
    List<ImapMessageInfo> messages = result.getImapMessageInfo();
    assertEquals(5, messages.size());
    for (int i = 0; i < messages.size(); i++) {
        assertEquals(messages.get(i).getId(), expected.get(i).getMsgId());
    }
    assertTrue(result.getHasMore());
    // test fetching 5 items starting at 3rd item, (more results left)
    Integer cursorId = expected.get(2).getMsgId();
    params.setCursorId(String.valueOf(cursorId));
    result = zmbox.fetchImapFolderChunk(params);
    messages = result.getImapMessageInfo();
    assertEquals(5, messages.size());
    for (int i = 0; i < messages.size(); i++) {
        assertEquals(messages.get(i).getId(), expected.get(i + 3).getMsgId());
    }
    assertTrue(result.getHasMore());
    // test fetching 5 items starting at 7th item, exhausting all results
    cursorId = expected.get(6).getMsgId();
    params.setCursorId(String.valueOf(cursorId));
    result = zmbox.fetchImapFolderChunk(params);
    messages = result.getImapMessageInfo();
    assertEquals(3, messages.size());
    for (int i = 0; i < messages.size(); i++) {
        assertEquals(messages.get(i).getId(), expected.get(i + 7).getMsgId());
    }
    assertFalse(result.getHasMore());
    // test getting all messages in batches of 3, so pagination is used
    List<ImapMessageInfo> actual = zmbox.openImapFolder(folderId, 3);
    Collections.sort(expected);
    Collections.sort(actual);
    assertEquals("expected and actual lists have different lengths", expected.size(), actual.size());
    for (int i = 0; i < expected.size(); i++) {
        assertEquals(expected.get(i).getImapUid(), actual.get(i).getImapUid());
    }
}
Also used : OpenIMAPFolderResponse(com.zimbra.soap.mail.message.OpenIMAPFolderResponse) ImapMessage(com.zimbra.cs.imap.ImapMessage) ZMessage(com.zimbra.client.ZMessage) ZOutgoingMessage(com.zimbra.client.ZMailbox.ZOutgoingMessage) ParsedMessage(com.zimbra.cs.mime.ParsedMessage) Message(com.zimbra.cs.mailbox.Message) ImapMessage(com.zimbra.cs.imap.ImapMessage) Folder(com.zimbra.cs.mailbox.Folder) ZSearchFolder(com.zimbra.client.ZSearchFolder) ZFolder(com.zimbra.client.ZFolder) LinkedList(java.util.LinkedList) ZMountpoint(com.zimbra.client.ZMountpoint) OpenIMAPFolderParams(com.zimbra.client.ZMailbox.OpenIMAPFolderParams) ItemIdentifier(com.zimbra.common.mailbox.ItemIdentifier) ZMailbox(com.zimbra.client.ZMailbox) Mailbox(com.zimbra.cs.mailbox.Mailbox) ZMailbox(com.zimbra.client.ZMailbox) ImapMessageInfo(com.zimbra.soap.mail.type.ImapMessageInfo) Test(org.junit.Test)

Aggregations

ZFolder (com.zimbra.client.ZFolder)1 ZMailbox (com.zimbra.client.ZMailbox)1 OpenIMAPFolderParams (com.zimbra.client.ZMailbox.OpenIMAPFolderParams)1 ZOutgoingMessage (com.zimbra.client.ZMailbox.ZOutgoingMessage)1 ZMessage (com.zimbra.client.ZMessage)1 ZMountpoint (com.zimbra.client.ZMountpoint)1 ZSearchFolder (com.zimbra.client.ZSearchFolder)1 ItemIdentifier (com.zimbra.common.mailbox.ItemIdentifier)1 ImapMessage (com.zimbra.cs.imap.ImapMessage)1 Folder (com.zimbra.cs.mailbox.Folder)1 Mailbox (com.zimbra.cs.mailbox.Mailbox)1 Message (com.zimbra.cs.mailbox.Message)1 ParsedMessage (com.zimbra.cs.mime.ParsedMessage)1 OpenIMAPFolderResponse (com.zimbra.soap.mail.message.OpenIMAPFolderResponse)1 ImapMessageInfo (com.zimbra.soap.mail.type.ImapMessageInfo)1 LinkedList (java.util.LinkedList)1 Test (org.junit.Test)1