1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.james.transport.mailets;
21
22 import org.apache.mailet.base.test.FakeMail;
23 import org.apache.mailet.base.test.FakeMailContext;
24 import org.apache.mailet.base.test.FakeMailetConfig;
25 import org.apache.mailet.Mail;
26 import org.apache.mailet.Mailet;
27
28 import javax.mail.MessagingException;
29 import javax.mail.Session;
30 import javax.mail.internet.MimeMessage;
31
32 import java.io.ByteArrayInputStream;
33 import java.io.IOException;
34 import java.util.Properties;
35
36 import junit.framework.TestCase;
37
38 public class ReplaceContentTest extends TestCase {
39
40 public void testService() throws MessagingException, IOException {
41 Mailet mailet;
42 FakeMailetConfig mci;
43 MimeMessage message;
44 Mail mail;
45
46 mailet = new ReplaceContent();
47 mci = new FakeMailetConfig("Test", new FakeMailContext());
48 mci.setProperty("subjectPattern", "/prova/PROVA/i/,/a/e//,/o/o/i/");
49 mci.setProperty("bodyPattern", "/prova/PROVA/i/," + "/a/e//,"
50 + "/o/o/i/,/\\u00E8/e'//," + "/prova([^\\/]*?)ble/X$1Y/im/,"
51 + "/X(.\\n)Y/P$1Q//," + "/\\/\\/,//");
52 mailet.init(mci);
53
54 message = new MimeMessage(Session.getDefaultInstance(new Properties()));
55 message.setSubject("una prova");
56 message
57 .setText("Sto facendo una prova di scrittura/ \u00E8 solo una prova.\n"
58 + "Bla bla bla bla.\n");
59
60 mail = new FakeMail(message);
61 mailet.service(mail);
62
63 assertEquals("une PRoVA", mail.getMessage().getSubject());
64 assertEquals("Sto fecendo une PRoVA di scritture, e' solo une P.\n"
65 + "Q ble ble ble.\n", mail.getMessage().getContent());
66
67
68
69 mailet = new ReplaceContent();
70 mci = new FakeMailetConfig("Test", new FakeMailContext());
71 mci
72 .setProperty("subjectPatternFile",
73 "#/org/apache/james/transport/mailets/replaceSubject.patterns");
74 mailet.init(mci);
75
76 message = new MimeMessage(Session.getDefaultInstance(new Properties()));
77 message.setSubject("re: r:ri:una prova");
78 message
79 .setText("Sto facendo una prova di scrittura/ \u00E8 solo una prova.\n"
80 + "Bla bla bla bla.\n");
81
82 mail = new FakeMail(message);
83 mailet.service(mail);
84
85 assertEquals("Re: Re: Re: una prova", mail.getMessage()
86 .getSubject());
87
88
89
90 mailet = new ReplaceContent();
91 mci = new FakeMailetConfig("Test", new FakeMailContext());
92 mci.setProperty("bodyPattern", "/--messaggio originale--/<quote>/i/,"
93 +
94
95 "/<quote>(.*)(\\r\\n)([^>]+)/<quote>$1$2>$3/imrs/,"
96 + "/<quote>\\r\\n//im/");
97 mailet.init(mci);
98
99 message = new MimeMessage(Session.getDefaultInstance(new Properties()));
100 message.setSubject("una prova");
101 message.setText("Prova.\r\n" + "\r\n" + "--messaggio originale--\r\n"
102 + "parte del\r\n" + "messaggio\\ che\\0 deve0 essere\r\n"
103 + "quotato. Vediamo se\r\n" + "ce la fa.");
104
105 mail = new FakeMail(message);
106 mailet.service(mail);
107
108 assertEquals("una prova", mail.getMessage().getSubject());
109 assertEquals("Prova.\r\n" + "\r\n" + ">parte del\r\n"
110 + ">messaggio\\ che\\0 deve0 essere\r\n"
111 + ">quotato. Vediamo se\r\n" + ">ce la fa.", mail.getMessage()
112 .getContent());
113
114
115
116 mailet = new ReplaceContent();
117 mci = new FakeMailetConfig("Test", new FakeMailContext());
118 mci.setProperty("bodyPattern", "/\\u2026/...//");
119 mailet.init(mci);
120
121 message = new MimeMessage(Session.getDefaultInstance(new Properties()));
122 message.setSubject("una prova");
123 message.setText("Prova \u2026 di replace \u2026");
124
125 mail = new FakeMail(message);
126 mailet.service(mail);
127
128 assertEquals("una prova", mail.getMessage().getSubject());
129 assertEquals("Prova ... di replace ...", mail.getMessage().getContent());
130 }
131
132 public void testFromFakeCp1252Stream() throws MessagingException,
133 IOException {
134 String messageSource = "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n"
135 + "Content-Transfer-Encoding: quoted-printable\r\n"
136 + "\r\n"
137 + "=93prova=94 con l=92apice";
138
139 Mailet mailet;
140 FakeMailetConfig mci;
141 MimeMessage message;
142 Mail mail;
143
144 mailet = new ReplaceContent();
145 mci = new FakeMailetConfig("Test", new FakeMailContext());
146 mci.setProperty("bodyPattern", "/[\\u2018\\u2019\\u201A]/'//,"
147 + "/[\\u201C\\u201D\\u201E]/\"//," + "/[\\x91\\x92\\x82]/'//,"
148 + "/[\\x93\\x94\\x84]/\"//," + "/\\x85/...//," + "/\\x8B/<//,"
149 + "/\\x9B/>//," + "/\\x96/-//," + "/\\x97/--//,");
150 mailet.init(mci);
151
152 message = new MimeMessage(Session.getDefaultInstance(new Properties()),
153 new ByteArrayInputStream(messageSource.getBytes()));
154
155 mail = new FakeMail(message);
156 mailet.service(mail);
157
158 assertEquals("\"prova\" con l'apice", mail.getMessage().getContent());
159
160 }
161
162 }