use of com.zimbra.cs.mailclient.imap.MessageData in project zm-mailbox by Zimbra.
the class SharedImapNotificationTests method testNotificationsCachedFolder.
@Test
public void testNotificationsCachedFolder() throws Exception {
String folderName1 = "testNotificationsCachedFolder-folder1";
String folderName2 = "testNotificationsCachedFolder-folder2";
String subject1 = "TestRemoteImapNotifications-testMessage1";
String subject2 = "TestRemoteImapNotifications-testMessage2";
ZMailbox zmbox = TestUtil.getZMailbox(USER);
ZFolder folder1 = TestUtil.createFolder(zmbox, folderName1);
TestUtil.createFolder(zmbox, folderName2);
TestUtil.addMessage(zmbox, subject1, folder1.getId(), null);
connection = connect();
connection.login(PASS);
connection.select(folderName1);
Map<Long, MessageData> mdMap = connection.fetch("1:*", "(ENVELOPE BODY)");
assertEquals("Size of map returned by initial fetch", 1, mdMap.size());
connection.select(folderName2);
MailboxOperation addMessage = new MailboxOperation() {
@Override
protected void run(ZMailbox zmbox) throws Exception {
TestUtil.addMessage(zmbox, subject2, folder1.getId(), null);
}
@Override
protected String checkResult() throws Exception {
connection.select(folderName1);
Map<Long, MessageData> mdMap = connection.fetch("1:*", "(FLAGS)");
if (mdMap.size() != 2) {
return String.format("Size of map returned by fetch afer reselecting cached folder should be 2. Getting %d", mdMap.size());
}
return null;
}
};
runOp(addMessage, zmbox, folder1);
}
use of com.zimbra.cs.mailclient.imap.MessageData in project zm-mailbox by Zimbra.
the class SharedImapNotificationTests method testDeleteTagNotificationActiveFolder.
@Test
public void testDeleteTagNotificationActiveFolder() throws Exception {
String folderName = "TestRemoteImapNotifications-folder";
String tagName = "TestRemoteImapNotifications-tag";
String subject = "TestRemoteImapNotifications-testMessage";
ZMailbox zmbox = TestUtil.getZMailbox(USER);
ZFolder folder = TestUtil.createFolder(zmbox, folderName);
ZTag tag = zmbox.createTag(tagName, Color.blue);
zmbox.addMessage(folder.getId(), null, tag.getId(), 0, TestUtil.getTestMessage(subject), true);
connection = connect();
connection.login(PASS);
MailboxInfo info = connection.select(folderName);
Flags flags = info.getPermanentFlags();
assertTrue("folder info should list tag", flags.contains(new Atom(tagName)));
Map<Long, MessageData> mdMap = connection.fetch("1:*", "(FLAGS)");
Flags msgFlags = mdMap.get(1L).getFlags();
assertTrue("message should be flagged with tag", msgFlags.contains(new Atom(tagName)));
MailboxOperation deleteTag = new MailboxOperation() {
@Override
protected void run(ZMailbox zmbox) throws Exception {
zmbox.deleteTag(tag.getId());
}
@Override
protected String checkResult() throws Exception {
MailboxInfo info = connection.select(folderName);
Flags flags = info.getPermanentFlags();
if (flags.contains(new Atom(tagName))) {
return String.format("folder info should not list tag %s", tagName);
}
Map<Long, MessageData> mdMap = connection.fetch("1:*", "(FLAGS)");
Flags msgFlags = mdMap.get(1L).getFlags();
if (msgFlags.contains(new Atom(tagName))) {
return String.format("message should not be flagged with %s", tagName);
}
return null;
}
};
runOp(deleteTag, zmbox, folder);
}
use of com.zimbra.cs.mailclient.imap.MessageData in project zm-mailbox by Zimbra.
the class SharedImapNotificationTests method testDeleteMessageNotificationCachedFolder.
@Test
public void testDeleteMessageNotificationCachedFolder() throws Exception {
String folderName1 = "TestRemoteImapNotifications-folder";
String folderName2 = "TestRemoteImapNotifications-folder2";
String subject1 = "TestRemoteImapNotifications-testMessage1";
String subject2 = "TestRemoteImapNotifications-testMessage2";
ZMailbox zmbox = TestUtil.getZMailbox(USER);
ZFolder folder = TestUtil.createFolder(zmbox, folderName1);
TestUtil.createFolder(zmbox, folderName2);
String msgId = TestUtil.addMessage(zmbox, subject1, folder.getId(), null);
TestUtil.addMessage(zmbox, subject2, folder.getId(), null);
connection = connect();
connection.login(PASS);
connection.select(folderName1);
Map<Long, MessageData> mdMap = connection.fetch("1:*", "(ENVELOPE BODY)");
assertEquals("Size of map returned by initial fetch", 2, mdMap.size());
connection.select(folderName2);
MailboxOperation deleteMessage = new MailboxOperation() {
@Override
protected void run(ZMailbox zmbox) throws Exception {
zmbox.deleteMessage(msgId);
}
@Override
protected String checkResult() throws Exception {
connection.select(folderName1);
Map<Long, MessageData> mdMap = connection.fetch("1:*", "(ENVELOPE BODY)");
// expunged messages are not returned as NIL responses if folder is re-selected
if (mdMap.size() != 1) {
return String.format("Size of map returned by fetch should be 1. Getting %d", mdMap.size());
}
return null;
}
};
runOp(deleteMessage, zmbox, folder);
}
use of com.zimbra.cs.mailclient.imap.MessageData in project zm-mailbox by Zimbra.
the class SharedImapNotificationTests method testModifyItemNotificationCachedFolder.
@Test
public void testModifyItemNotificationCachedFolder() throws Exception {
String folderName1 = "testNotificationsActiveFolder-folder1";
String folderName2 = "testNotificationsActiveFolder-folder2";
String subject = "testNotificationsActiveFolder-msg1";
String tagName = "testNotificationsActiveFolder-tag";
ZMailbox zmbox = TestUtil.getZMailbox(USER);
ZFolder folder = TestUtil.createFolder(zmbox, folderName1);
TestUtil.createFolder(zmbox, folderName2);
ZTag tag = zmbox.createTag(tagName, Color.blue);
String msgId = TestUtil.addMessage(zmbox, subject, folder.getId(), null);
connection = connect();
connection.login(PASS);
connection.select(folderName1);
Map<Long, MessageData> mdMap = connection.fetch("1:*", "(FLAGS)");
assertEquals("Size of map returned by fetch 1", 1, mdMap.size());
// sanity check - make sure the tag is not already set on the message
Flags flags = mdMap.get(1L).getFlags();
assertFalse(flags.contains(new Atom(tag.getName())));
connection.select(folderName2);
MailboxOperation tagMessage = new MailboxOperation() {
@Override
protected void run(ZMailbox zmbox) throws Exception {
zmbox.tagMessage(msgId, tag.getId(), true);
}
@Override
protected String checkResult() throws Exception {
connection.select(folderName1);
Map<Long, MessageData> mdMap = connection.fetch("1:*", "(FLAGS)");
if (mdMap.size() != 1) {
return String.format("Size of map returned by fetch should be 1. Found: %d", mdMap.size());
}
Flags flags = mdMap.get(1L).getFlags();
if (!flags.contains(new Atom(tag.getName()))) {
return String.format("Flags should contain %s", tag.getName());
}
return null;
}
};
runOp(tagMessage, zmbox, folder);
}
use of com.zimbra.cs.mailclient.imap.MessageData in project zm-mailbox by Zimbra.
the class SharedImapNotificationTests method testDeleteMessageBySubjectNotifications.
@Test
public void testDeleteMessageBySubjectNotifications() throws Exception {
String folderName = "testDeleteMessageBySubjectNotifications-folder";
String subject1 = "testDeleteMessageBySubjectNotifications-msg1";
String subject2 = "testDeleteMessageBySubjectNotifications-msg2";
ZMailbox zmbox = TestUtil.getZMailbox(USER);
ZFolder folder = TestUtil.createFolder(zmbox, folderName);
TestUtil.addMessage(zmbox, subject1, folder.getId(), null);
TestUtil.addMessage(zmbox, subject2, folder.getId(), null);
connection = connect();
connection.login(PASS);
connection.select(folderName);
Map<Long, MessageData> mdMap = connection.fetch("1:*", "(ENVELOPE BODY)");
assertEquals("Size of map returned by fetch 1", 2, mdMap.size());
MailboxOperation deleteBySubject = new MailboxOperation() {
@Override
protected void run(ZMailbox zmbox) throws Exception {
TestUtil.deleteMessages(zmbox, "subject: " + subject2);
}
@Override
protected String checkResult() throws Exception {
Map<Long, MessageData> mdMap = connection.fetch("1:*", "(ENVELOPE)");
mdMap.entrySet().removeIf(e -> e.getValue().getEnvelope() == null || e.getValue().getEnvelope().getSubject() == null);
if (mdMap.size() != 1) {
return String.format("Size of map returned by fetch should be 1. Getting %d", mdMap.size());
}
return null;
}
};
runOp(deleteBySubject, zmbox, folder);
}
Aggregations