1   package com.ozacc.mail.mailet;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   
6   import javax.mail.internet.InternetAddress;
7   
8   import org.apache.log4j.BasicConfigurator;
9   
10  import junit.framework.TestCase;
11  
12  import com.ozacc.mail.fetch.ReceivedMail;
13  import com.ozacc.mail.mock.MockFetchMailPro;
14  
15  /***
16   * MailetRunner¤Î¥Æ¥¹¥È¥±¡¼¥¹¡£
17   * 
18   * @author Tomohiro Otsuka
19   * @version $Id: MailetRunnerTest.java,v 1.1.2.1 2005/02/06 13:53:54 otsuka Exp $
20   */
21  public class MailetRunnerTest extends TestCase {
22  
23  	private MailetRunner mailetRunner;
24  
25  	/*
26  	 * @see TestCase#setUp()
27  	 */
28  	protected void setUp() throws Exception {
29  		super.setUp();
30  		BasicConfigurator.configure();
31  
32  		MockFetchMailPro fetchMailPro = new MockFetchMailPro();
33  		fetchMailPro.setupGetMails(getSampleMails());
34  
35  		Mailet mailet = getSubjectOutputMailet();
36  		Matcher matcher = getExampleComAddressMatcher();
37  		List matcherList = new ArrayList();
38  		matcherList.add(matcher);
39  		MailetWrapper mw = new MailetWrapper(mailet, matcherList);
40  		List mwList = new ArrayList();
41  		mwList.add(mw);
42  		mwList.add(mw);
43  
44  		mailetRunner = new MailetRunner();
45  		mailetRunner.setFetchMailPro(fetchMailPro);
46  		mailetRunner.setMailetWrapperList(mwList);
47  	}
48  
49  	/***
50  	 * @return 
51  	 */
52  	private ReceivedMail[] getSampleMails() {
53  		List list = new ArrayList();
54  		ReceivedMail m1 = new ReceivedMail();
55  		m1.setSubject("m1 - ½ÐÎϤµ¤?¤Þ¤¹¡£");
56  		m1.addTo("to@example.com");
57  		list.add(m1);
58  		ReceivedMail m2 = new ReceivedMail();
59  		m2.setSubject("m2 - ½ÐÎϤµ¤?¤Þ¤»¤ó¡£");
60  		m2.addTo("to@example.net");
61  		list.add(m2);
62  		ReceivedMail m3 = new ReceivedMail();
63  		m3.setSubject("m3 - ½ÐÎϤµ¤?¤Þ¤¹¡£");
64  		m3.addTo("to@example.net");
65  		m3.addTo("to@example.com");
66  		list.add(m3);
67  		return (ReceivedMail[])list.toArray(new ReceivedMail[list.size()]);
68  	}
69  
70  	/***
71  	 * @return 
72  	 */
73  	private Matcher getExampleComAddressMatcher() {
74  		Matcher m = new Matcher() {
75  
76  			public boolean match(ReceivedMail mail) {
77  				InternetAddress[] toAddresses = mail.getTo();
78  				for (int i = 0; i < toAddresses.length; i++) {
79  					InternetAddress address = toAddresses[i];
80  					if (address.getAddress().equalsIgnoreCase("to@example.com")) {
81  						return true;
82  					}
83  				}
84  				return false;
85  			}
86  		};
87  		return m;
88  	}
89  
90  	/***
91  	 * @return 
92  	 */
93  	private Mailet getSubjectOutputMailet() {
94  		return new Mailet() {
95  
96  			public void service(ReceivedMail mail) {
97  				System.out.println(mail.getSubject());
98  			}
99  		};
100 	}
101 
102 	/*
103 	 * @see TestCase#tearDown()
104 	 */
105 	protected void tearDown() throws Exception {
106 		super.tearDown();
107 		BasicConfigurator.resetConfiguration();
108 	}
109 
110 	public void testRun() {
111 		mailetRunner.run();
112 	}
113 
114 }