use of com.zimbra.cs.mailclient.imap.ImapResponse in project zm-mailbox by Zimbra.
the class TestImap method testStoreTagsDirty.
@Test
public void testStoreTagsDirty() throws Exception {
ZMailbox mbox = TestUtil.getZMailbox(USER);
List<ZTag> tags = mbox.getAllTags();
assertTrue(tags == null || tags.size() == 0);
String tagName = "T1";
final String tagName2 = "T2";
ZTag tag = mbox.getTag(tagName);
if (tag == null) {
tag = mbox.createTag(tagName, Color.blue);
}
tags = mbox.getAllTags();
assertTrue(tags != null && tags.size() == 1);
assertEquals("T1", tags.get(0).getName());
String folderName = "newfolder1";
ZFolder folder = mbox.createFolder(Mailbox.ID_FOLDER_USER_ROOT + "", folderName, ZFolder.View.message, ZFolder.Color.DEFAULTCOLOR, null, null);
mbox.addMessage(Mailbox.ID_FOLDER_INBOX + "", "u", tag.getId(), System.currentTimeMillis(), simpleMessage("foo1"), true);
MailboxInfo info = connection.select("INBOX");
assertTrue("INBOX does not contain expected flag " + tagName, info.getFlags().isSet(tagName));
assertFalse("INBOX contain unexpected flag " + tagName2, info.getFlags().isSet(tagName2));
Map<Long, MessageData> data = connection.fetch("1:*", "FLAGS");
assertEquals(1, data.size());
Iterator<Long> it = data.keySet().iterator();
Long seq = it.next();
assertTrue("flag not set on first message", data.get(seq).getFlags().isSet(tagName));
ImapRequest req = connection.newRequest("STORE", seq + "", "+FLAGS", tagName2);
req.setResponseHandler(new ResponseHandler() {
@Override
public void handleResponse(ImapResponse res) throws Exception {
if (res.isUntagged() && res.getCCode() == CAtom.FLAGS) {
Flags flags = (Flags) res.getData();
assertTrue(flags.isSet(tagName2));
}
}
});
req.sendCheckStatus();
}
use of com.zimbra.cs.mailclient.imap.ImapResponse in project zm-mailbox by Zimbra.
the class SharedImapTests method testOverflowNotAppend.
@Test(timeout = 100000)
public void testOverflowNotAppend() throws Exception {
connection = connectAndSelectInbox();
int oldReadTimeout = connection.getConfig().getReadTimeout();
try {
connection.setReadTimeout(10);
ImapRequest req = connection.newRequest(CAtom.FETCH, "1:*");
req.addParam("{" + ((long) (Integer.MAX_VALUE) + 1) + "+}");
ImapResponse resp = req.send();
assertTrue("response should be NO or BAD", resp.isNO() || resp.isBAD());
} finally {
connection.setReadTimeout(oldReadTimeout);
}
}
use of com.zimbra.cs.mailclient.imap.ImapResponse in project zm-mailbox by Zimbra.
the class SharedImapTests method testAppendTagsDirty.
@Test(timeout = 100000)
public void testAppendTagsDirty() throws Exception {
connection = connectAndSelectInbox();
Flags flags = Flags.fromSpec("afs");
// new tag; does not exist in mbox
final String tag1 = "NEWDIRTYTAG";
MailboxInfo info = connection.select("INBOX");
assertFalse("INBOX contains unexpected flag " + tag1, info.getFlags().isSet(tag1));
flags.set(tag1);
Date date = new Date(System.currentTimeMillis());
Literal msg = message(10);
try {
ImapRequest req = connection.newRequest("APPEND", "INBOX", flags, date, msg);
req.setResponseHandler(new ResponseHandler() {
@Override
public void handleResponse(ImapResponse res) throws Exception {
if (res.isUntagged() && res.getCCode() == CAtom.FLAGS) {
Flags flags = (Flags) res.getData();
assertTrue(flags.isSet(tag1));
}
}
});
req.sendCheckStatus();
} finally {
msg.dispose();
}
}
use of com.zimbra.cs.mailclient.imap.ImapResponse in project zm-mailbox by Zimbra.
the class SharedImapTests method testFolderDeletedByOtherConnectionSelected.
@Test(timeout = 100000)
public void testFolderDeletedByOtherConnectionSelected() throws Exception {
String newFolder = "imaptest1";
connection = connectAndLogin(USER);
connection.create(newFolder);
otherConnection = connectAndLogin(USER);
otherConnection.select(newFolder);
assertTrue("Second connection should be in SELECTED state", otherConnection.isSelected());
assertFalse("First connection should NOT be in SELECTED state", connection.isSelected());
final CountDownLatch doneSignal = new CountDownLatch(1);
final AtomicBoolean gotBye = new AtomicBoolean(false);
// Wait for BYE from IMAP server. Zimbra IMAP client does not detect when connection is dropped by server
otherConnection.idle(new ResponseHandler() {
@Override
public void handleResponse(ImapResponse res) {
if (res.isBYE()) {
gotBye.set(true);
doneSignal.countDown();
}
}
});
assertTrue("Connection is not idling when it should be", otherConnection.isIdling());
connection.delete(newFolder);
try {
doneSignal.await(10, TimeUnit.SECONDS);
} catch (Exception e) {
fail("Wait interrupted. ");
}
assertTrue("Second connection should have received BYE", gotBye.get());
}
use of com.zimbra.cs.mailclient.imap.ImapResponse in project zm-mailbox by Zimbra.
the class SharedImapTests method testZCS1781.
@Test(timeout = 100000)
public void testZCS1781() throws Exception {
ZMailbox mbox = TestUtil.getZMailbox(USER);
TestUtil.addMessage(mbox, "test for ZCS-1781");
connection = connectAndSelectInbox();
final AtomicReference<MessageData> storeResponse = new AtomicReference<MessageData>();
final CountDownLatch doneSignal = new CountDownLatch(1);
connection.store("1", "FLAGS", "(\\Deleted)", new ResponseHandler() {
@Override
public void handleResponse(ImapResponse res) {
storeResponse.set((MessageData) (res.getData()));
doneSignal.countDown();
}
});
try {
doneSignal.await(10, TimeUnit.SECONDS);
} catch (Exception e) {
fail("Wait interrupted. ");
}
MessageData data = storeResponse.get();
assertNotNull("data in IMAP response should not be null", data);
Flags flags = data.getFlags();
assertNotNull("flags in IMAP response should not be null", flags);
assertTrue("should have \\Deleted flag", flags.isDeleted());
}
Aggregations