01: // Copyright © 2006-2007 ASERT. Released under the Canoo Webtest license.
02: package com.canoo.webtest.plugins.emailtest;
03:
04: import java.util.Properties;
05:
06: import javax.mail.Folder;
07: import javax.mail.MessagingException;
08: import javax.mail.Session;
09: import javax.mail.Store;
10: import javax.mail.URLName;
11: import javax.mail.Message;
12:
13: import com.canoo.webtest.steps.BaseStepTestCase;
14:
15: /**
16: * @author Paul King, ASERT
17: */
18: public abstract class BaseEmailTestCase extends BaseStepTestCase {
19: private Folder fMockFolder;
20: static final EmailConfigInfo MOCK_INFO = new EmailConfigInfo("a",
21: "b", "c", "d", "e");
22:
23: protected Message setUpGetMessageExpectations(
24: final ISingleMessageStep step, final EmailHelper helper,
25: final boolean closeOnExit) throws MessagingException {
26: createMockFolder();
27: final Message mockMessage = (Message) intercept(Message.class,
28: "mockMessage");
29: step.getContext().put("EmailConfigInfo", MOCK_INFO);
30: final String mockMid = "99";
31: step.setMessageId(mockMid);
32: helper.getInboxFolder(MOCK_INFO);
33: modify().returnValue(fMockFolder);
34: helper.getMessage(Integer.parseInt(mockMid), fMockFolder);
35: modify().returnValue(mockMessage);
36: return mockMessage;
37: }
38:
39: protected Message[] setUpGetMessagesExpectations(
40: final AbstractSelectStep step, final EmailHelper helper,
41: final int numMessages) throws MessagingException {
42: createMockFolder();
43: final Message[] messages = new Message[numMessages];
44: for (int i = 0; i < numMessages; i++) {
45: messages[i] = (Message) intercept(Message.class,
46: "mockMessage[" + i + "]");
47: }
48: step.getContext().put("EmailConfigInfo", MOCK_INFO);
49: helper.getInboxFolder(MOCK_INFO);
50: modify().returnValue(fMockFolder);
51: helper.getMessages(fMockFolder);
52: modify().returnValue(messages);
53: return messages;
54: }
55:
56: protected void setUpMessageOperationFinaliseExpectations(
57: final EmailHelper helper, final boolean deleteOnServer) {
58: helper.logout(fMockFolder, deleteOnServer);
59: }
60:
61: protected Folder createMockFolder() throws MessagingException {
62: return createMockFolder(createMockStore());
63: }
64:
65: protected Folder createMockFolder(final Store store)
66: throws MessagingException {
67: fMockFolder = (Folder) intercept(Folder.class,
68: new Object[] { store }, "folder");
69: fMockFolder.getFullName();
70: modify().multiplicity(expect.from(0)).returnValue("folder"); // helps rmock debug trace
71: return fMockFolder;
72: }
73:
74: protected Store createMockStore() {
75: return (Store) intercept(Store.class, new Object[] {
76: createSessionStub(), createUrlNameStub() }, "store");
77: }
78:
79: private static URLName createUrlNameStub() {
80: return new URLName("dummy url");
81: }
82:
83: private static Session createSessionStub() {
84: final Properties properties = new Properties();
85: return Session.getDefaultInstance(properties);
86: }
87:
88: }
|