Search in sources :

Example 66 with ZMessage

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

the class TestFilter method testNotifyAction.

@Test
public /**
     * Tests the Zimbra-specifict 'notify' action format (not RFC compliant format)
     *
     * Note: please set 'zimbraSieveNotifyActionRFCCompliant' to FALSE.
     */
void testNotifyAction() throws Exception {
    if (mAvailableRFCCompliantNotify) {
        fail("Unable to test because 'zimbraSieveNotifyActionRFCCompliant' is set to TRUE");
        return;
    }
    List<ZFilterRule> rules = new ArrayList<ZFilterRule>();
    List<ZFilterCondition> conditions = new ArrayList<ZFilterCondition>();
    List<ZFilterAction> actions = new ArrayList<ZFilterAction>();
    conditions.add(new ZFilterCondition.ZTrueCondition());
    // add an action to notify user2
    actions.add(new ZFilterAction.ZNotifyAction(TestUtil.getAddress(REMOTE_USER_NAME), "${SUBJECT}", "From: ${FROM}, Message: ${BODY}"));
    rules.add(new ZFilterRule("testNotifyAction", true, false, conditions, actions));
    saveIncomingRules(mMbox, new ZFilterRules(rules));
    String subject = NAME_PREFIX + " testNotifyAction";
    String body = "Hi, How r u?";
    String msg = new MessageBuilder().withFrom(REMOTE_USER_NAME).withSubject(subject).withBody(body).create();
    // send msg to user1
    TestUtil.addMessageLmtp(new String[] { USER_NAME }, REMOTE_USER_NAME, msg);
    // check msg got filed into user1's mailbox
    TestUtil.getMessage(mMbox, "in:inbox subject:\"" + subject + "\"");
    // check notification msg from user1 in user2's mailbox, it should have the same subject
    ZMessage zMessage = TestUtil.waitForMessage(TestUtil.getZMailbox(REMOTE_USER_NAME), "in:inbox subject:\"" + subject + "\"");
    ZMessage.ZMimePart mimeStructure = zMessage.getMimeStructure();
    String bodyContent = mimeStructure.getContent();
    assertTrue("template vars should be replaced", !bodyContent.contains("${FROM}") && !bodyContent.contains("${BODY}"));
    assertTrue(bodyContent.contains(TestUtil.getAddress(REMOTE_USER_NAME)) && bodyContent.contains(body));
    // bug 65369
    assertTrue(!mimeStructure.getContentType().contains("charset") || mimeStructure.getContentType().contains(MimeConstants.P_CHARSET_ASCII));
}
Also used : ZMessage(com.zimbra.client.ZMessage) ZFilterCondition(com.zimbra.client.ZFilterCondition) ArrayList(java.util.ArrayList) ZFilterRule(com.zimbra.client.ZFilterRule) ZFilterAction(com.zimbra.client.ZFilterAction) ZFilterRules(com.zimbra.client.ZFilterRules) Test(org.junit.Test)

Example 67 with ZMessage

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

the class TestDraftCount method testMixedFolderCount.

@Test
public void testMixedFolderCount() throws Exception {
    //some inbox messages
    for (int i = 0; i < numMsgs; i++) {
        TestUtil.addMessage(mbox, "test content " + i, "2");
    }
    //and some drafts, some of which have no recipients
    for (int i = 0; i < numMsgs; i++) {
        ZOutgoingMessage msg = new ZOutgoingMessage();
        msg.setMessagePart(new MessagePart("text/plain", "test body " + i));
        msg.setSubject("test message " + i);
        List<ZEmailAddress> addresses = new ArrayList<ZEmailAddress>();
        if (i % 2 == 0) {
            addresses.add(new ZEmailAddress("testuser" + i, null, null, "t"));
            msg.setAddresses(addresses);
        }
        ZMessage saved = mbox.saveDraft(msg, null, "6");
    }
    checkMessageCount("in:inbox OR in:drafts", numMsgs * 2);
    deleteFromQuery("in:inbox OR in:drafts");
}
Also used : ZMessage(com.zimbra.client.ZMessage) ZOutgoingMessage(com.zimbra.client.ZMailbox.ZOutgoingMessage) ZEmailAddress(com.zimbra.client.ZEmailAddress) MessagePart(com.zimbra.client.ZMailbox.ZOutgoingMessage.MessagePart) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Example 68 with ZMessage

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

the class TestFilter method testRedirectMailLoop.

/**
     * Confirms that the message gets delivered even when a mail loop occurs.
     */
@Test
public void testRedirectMailLoop() throws Exception {
    List<ZFilterCondition> conditions = new ArrayList<ZFilterCondition>();
    List<ZFilterAction> actions = new ArrayList<ZFilterAction>();
    List<ZFilterRule> rules = new ArrayList<ZFilterRule>();
    // if subject contains "testRedirectMailLoop", redirect to user1
    conditions.add(new ZHeaderCondition("subject", HeaderOp.CONTAINS, "testRedirectMailLoop"));
    actions.add(new ZRedirectAction(TestUtil.getAddress(USER_NAME)));
    rules.add(new ZFilterRule("testRedirectMailLoop", true, false, conditions, actions));
    ZFilterRules zRules = new ZFilterRules(rules);
    saveIncomingRules(mMbox, zRules);
    // Add a message.
    String subject = NAME_PREFIX + " testRedirectMailLoop";
    TestUtil.addMessageLmtp(subject, USER_NAME, USER_NAME);
    // Confirm that user1 received it.
    ZMessage msg = TestUtil.waitForMessage(mMbox, "subject:\"" + subject + "\"");
    byte[] content = TestUtil.getContent(mMbox, msg.getId()).getBytes();
    MimeMessage mimeMsg = new MimeMessage(new ByteArrayInputStream(content));
    assertEquals(user1.getName(), mimeMsg.getHeader(FilterUtil.HEADER_FORWARDED));
}
Also used : ZMessage(com.zimbra.client.ZMessage) ZHeaderCondition(com.zimbra.client.ZFilterCondition.ZHeaderCondition) ZFilterCondition(com.zimbra.client.ZFilterCondition) ArrayList(java.util.ArrayList) ZFilterAction(com.zimbra.client.ZFilterAction) ZFilterRule(com.zimbra.client.ZFilterRule) ZRedirectAction(com.zimbra.client.ZFilterAction.ZRedirectAction) MimeMessage(com.zimbra.common.mime.MimeMessage) ByteArrayInputStream(java.io.ByteArrayInputStream) ZFilterRules(com.zimbra.client.ZFilterRules) Test(org.junit.Test)

Example 69 with ZMessage

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

the class TestFilter method testBase64Subject.

/**
     * Confirms that a message with a base64-encoded subject can be filtered correctly
     * (bug 11219).
     */
public void testBase64Subject() throws Exception {
    // if subject contains "Cortes de luz", tag with testBase64Subject and stop
    List<ZFilterRule> rules = new ArrayList<ZFilterRule>();
    List<ZFilterCondition> conditions = new ArrayList<ZFilterCondition>();
    List<ZFilterAction> actions = new ArrayList<ZFilterAction>();
    conditions.add(new ZHeaderCondition("subject", HeaderOp.CONTAINS, "Cortes de luz"));
    actions.add(new ZTagAction(TAG1_NAME));
    rules.add(new ZFilterRule("testBase64Subject", true, false, conditions, actions));
    ZFilterRules zRules = new ZFilterRules(rules);
    saveIncomingRules(mMbox, zRules);
    String address = TestUtil.getAddress(USER_NAME);
    TestUtil.addMessageLmtp("=?UTF-8?B?W2l0dnNmLUluY2lkZW5jaWFzXVs0OTc3Ml0gW2luY2lkZW5jaWFzLXZpbGxhbnVldmFdIENvcnRlcyBkZSBsdXosIGTDrWEgMjUvMDkvMjAwNi4=?=", address, address);
    List<ZMessage> messages = TestUtil.search(mMbox, "Cortes de luz");
    assertEquals("Unexpected number of messages", 1, messages.size());
    List<ZTag> tags = mMbox.getTags(messages.get(0).getTagIds());
    assertEquals("Unexpected number of tags", 1, tags.size());
    assertEquals("Tag didn't match", TAG1_NAME, tags.get(0).getName());
}
Also used : ZMessage(com.zimbra.client.ZMessage) ZHeaderCondition(com.zimbra.client.ZFilterCondition.ZHeaderCondition) ZFilterCondition(com.zimbra.client.ZFilterCondition) ArrayList(java.util.ArrayList) ZFilterRule(com.zimbra.client.ZFilterRule) ZFilterAction(com.zimbra.client.ZFilterAction) ZTag(com.zimbra.client.ZTag) ZTagAction(com.zimbra.client.ZFilterAction.ZTagAction) ZFilterRules(com.zimbra.client.ZFilterRules)

Example 70 with ZMessage

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

the class TestTagFilterRules method testRenameTag.

/**
     * Verifies that filter rules are updated when a tag is renamed.
     */
@Test
public void testRenameTag() throws Exception {
    // Send message
    String sender = TestUtil.getAddress(USER_NAME);
    String recipient = TestUtil.getAddress(USER_NAME);
    String subject = SUBJECT_PREFIX + "testRenameTag 1";
    TestUtil.addMessageLmtp(subject, recipient, sender);
    // Confirm that the original tag was applied
    ZMessage msg = TestUtil.getMessage(mMbox, "tag:" + TAG_NAME);
    TestUtil.verifyTag(mMbox, msg, TAG_NAME);
    // Rename tag
    mMbox.renameTag(mTag.getId(), NEW_TAG_NAME);
    // Confirm filter rules were updated
    ZTagAction action = (ZTagAction) mMbox.getIncomingFilterRules(true).getRules().get(0).getActions().get(0);
    assertEquals("Tag name didn't change", NEW_TAG_NAME, action.getTagName());
    // Send another message
    subject = SUBJECT_PREFIX + " testRenameTag 2";
    TestUtil.addMessageLmtp(subject, recipient, sender);
    // Confirm that the new tag name is now applied to both messages
    List<ZMessage> messages = TestUtil.search(mMbox, "tag:\"" + NEW_TAG_NAME + "\"");
    assertEquals("Incorrect number of tagged messages", 2, messages.size());
    for (ZMessage msg2 : messages) {
        TestUtil.verifyTag(mMbox, msg2, NEW_TAG_NAME);
    }
}
Also used : ZMessage(com.zimbra.client.ZMessage) ZTagAction(com.zimbra.client.ZFilterAction.ZTagAction) Test(org.junit.Test)

Aggregations

ZMessage (com.zimbra.client.ZMessage)101 Test (org.junit.Test)63 ZMailbox (com.zimbra.client.ZMailbox)59 ArrayList (java.util.ArrayList)43 ZFilterRule (com.zimbra.client.ZFilterRule)29 ZFilterAction (com.zimbra.client.ZFilterAction)28 ZFilterCondition (com.zimbra.client.ZFilterCondition)28 ZFilterRules (com.zimbra.client.ZFilterRules)28 ZHeaderCondition (com.zimbra.client.ZFilterCondition.ZHeaderCondition)12 ZOutgoingMessage (com.zimbra.client.ZMailbox.ZOutgoingMessage)12 ZEmailAddress (com.zimbra.client.ZEmailAddress)11 ZTagAction (com.zimbra.client.ZFilterAction.ZTagAction)10 ZFolder (com.zimbra.client.ZFolder)10 ZMarkAction (com.zimbra.client.ZFilterAction.ZMarkAction)8 Account (com.zimbra.cs.account.Account)8 MessagePart (com.zimbra.client.ZMailbox.ZOutgoingMessage.MessagePart)7 Date (java.util.Date)7 ZGetMessageParams (com.zimbra.client.ZGetMessageParams)5 ZMimePart (com.zimbra.client.ZMessage.ZMimePart)5 ZTag (com.zimbra.client.ZTag)5