001: // Copyright © 2006-2007 ASERT. Released under the Canoo Webtest license.
002: package com.canoo.webtest.plugins.emailtest;
003:
004: import javax.mail.Address;
005: import javax.mail.Message;
006: import javax.mail.MessagingException;
007: import javax.mail.internet.InternetAddress;
008: import javax.mail.internet.MimeMessage;
009:
010: import com.canoo.webtest.steps.Step;
011:
012: /**
013: * Test for {@link EmailStoreMessageCount}.
014: *
015: * @author Paul King, ASERT
016: */
017: public class EmailStoreMessageCountTest extends BaseEmailTestCase {
018: private static final String PROPERTY_NAME = "dummyPropertyName";
019: private static final String DEFAULT_FROM_ADDRESS = "dummyFrom@host";
020: private static final String SELECTED_FROM_ADDRESS = "selectedFrom@host";
021: private static final String DEFAULT_SUBJECT = "default dummy subject";
022: private static final String SELECTED_SUBJECT = "selected subject";
023: private static final String REGEX_SUBJECT = "/sel.*ject/";
024: private static final String DEFAULT_REPLYTO_ADDRESS = "dummyReplyTo@host";
025: private static final String SELECTED_REPLYTO_ADDRESS1 = "dummyReplyTo@host";
026: private static final String SELECTED_REPLYTO_ADDRESS2 = "selectedReplyTo@host";
027: private static final String SELECTED_REPLYTO_ADDRESSES = SELECTED_REPLYTO_ADDRESS1
028: + "," + SELECTED_REPLYTO_ADDRESS2;
029: private static final String DEFAULT_CC_ADDRESS = "dummyCc@host";
030: private static final String SELECTED_CC_ADDRESS = "selectedCc@host";
031:
032: protected Step createStep() {
033: return new EmailStoreMessageCount();
034: }
035:
036: public void testNoHeaders() throws Exception {
037: final EmailStoreMessageCount step = (EmailStoreMessageCount) getStep();
038: step.setProperty(PROPERTY_NAME);
039: final EmailHelper helper = (EmailHelper) mock(
040: EmailHelper.class, "helper");
041: step.setHelper(helper);
042: final boolean deleteOnExit = false;
043: final int numMessages = 4;
044: setUpGetMessagesExpectations(step, helper, numMessages);
045: setUpMessageOperationFinaliseExpectations(helper, deleteOnExit);
046: startVerification();
047: executeStep(step);
048: assertEquals(numMessages, Integer.parseInt(step
049: .getWebtestProperty(PROPERTY_NAME)));
050: }
051:
052: public void testHeaders1() throws Exception {
053: final EmailStoreMessageCount step = (EmailStoreMessageCount) getStep();
054: step.setProperty(PROPERTY_NAME);
055: step.setFrom(SELECTED_FROM_ADDRESS);
056: step.setSubject(SELECTED_SUBJECT);
057: step.setReplyTo(SELECTED_REPLYTO_ADDRESSES);
058: step.setCc(SELECTED_CC_ADDRESS);
059: final EmailHelper helper = (EmailHelper) mock(
060: EmailHelper.class, "helper");
061: step.setHelper(helper);
062: final boolean deleteOnExit = false;
063: final int numMessages = 4;
064: final boolean[] fromFlags = { false, true, true, true };
065: final boolean[] subjectFlags = { false, false, true, true };
066: final boolean[] replyToFlags = { false, false, false, true };
067: final boolean[] ccFlags = { false, false, false, true };
068: final Message[] messages = setUpGetMessagesExpectations(step,
069: helper, numMessages);
070: setUpMessageHeaderExpectations(messages, fromFlags,
071: subjectFlags, replyToFlags, ccFlags);
072: setUpMessageOperationFinaliseExpectations(helper, deleteOnExit);
073: startVerification();
074: executeStep(step);
075: assertEquals(1, Integer.parseInt(step
076: .getWebtestProperty(PROPERTY_NAME)));
077: }
078:
079: public void testHeaders2() throws Exception {
080: final EmailStoreMessageCount step = (EmailStoreMessageCount) getStep();
081: step.setProperty(PROPERTY_NAME);
082: step.setSubject(REGEX_SUBJECT);
083: step.setReplyTo(SELECTED_REPLYTO_ADDRESSES);
084: step.setCc(SELECTED_CC_ADDRESS);
085: final EmailHelper helper = (EmailHelper) mock(
086: EmailHelper.class, "helper");
087: step.setHelper(helper);
088: final boolean deleteOnExit = false;
089: final int numMessages = 4;
090: final boolean[] fromFlags = { true, true, true, true };
091: final boolean[] subjectFlags = { false, false, true, true };
092: final boolean[] replyToFlags = { false, false, false, true };
093: final boolean[] ccFlags = { false, false, false, false };
094: final Message[] messages = setUpGetMessagesExpectations(step,
095: helper, numMessages);
096: setUpMessageHeaderExpectations(messages, fromFlags,
097: subjectFlags, replyToFlags, ccFlags);
098: setUpMessageOperationFinaliseExpectations(helper, deleteOnExit);
099: startVerification();
100: executeStep(step);
101: assertEquals(0, Integer.parseInt(step
102: .getWebtestProperty(PROPERTY_NAME)));
103: }
104:
105: private void setUpMessageHeaderExpectations(
106: final Message[] messages, final boolean[] fromFlags,
107: final boolean[] subjectFlags, final boolean[] replyToFlags,
108: final boolean[] ccFlags) throws MessagingException {
109: for (int i = 0; i < messages.length; i++) {
110: messages[i].getFrom();
111: if (!fromFlags[i]) {
112: modify().returnValue(
113: new Address[] { new InternetAddress(
114: DEFAULT_FROM_ADDRESS) });
115: } else {
116: modify().returnValue(
117: new Address[] { new InternetAddress(
118: SELECTED_FROM_ADDRESS) });
119: messages[i].getSubject();
120: if (!subjectFlags[i]) {
121: modify().returnValue(DEFAULT_SUBJECT);
122: } else {
123: modify().returnValue(SELECTED_SUBJECT);
124: messages[i].getReplyTo();
125: if (!replyToFlags[i]) {
126: modify().returnValue(
127: new Address[] { new InternetAddress(
128: DEFAULT_REPLYTO_ADDRESS) });
129: } else {
130: modify()
131: .returnValue(
132: new Address[] {
133: new InternetAddress(
134: SELECTED_REPLYTO_ADDRESS1),
135: new InternetAddress(
136: SELECTED_REPLYTO_ADDRESS2) });
137: messages[i]
138: .getRecipients(MimeMessage.RecipientType.CC);
139: if (!ccFlags[i]) {
140: modify()
141: .returnValue(
142: new Address[] { new InternetAddress(
143: DEFAULT_CC_ADDRESS) });
144: } else {
145: modify()
146: .returnValue(
147: new Address[] { new InternetAddress(
148: SELECTED_CC_ADDRESS) });
149: messages[i]
150: .getRecipients(MimeMessage.RecipientType.TO);
151: modify()
152: .returnValue(
153: new Address[] { new InternetAddress(
154: "dummyTo@host") });
155: }
156: }
157: }
158: }
159: }
160: }
161:
162: }
|