Skip to content

Commit 8a8c993

Browse files
committed
Integration tests for UTF-8 mail reception
1 parent 3f8a361 commit 8a8c993

File tree

1 file changed

+60
-8
lines changed

1 file changed

+60
-8
lines changed

server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java

Lines changed: 60 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,21 @@
2929

3030
import java.io.File;
3131

32+
import org.apache.james.jmap.mailet.filter.JMAPFiltering;
33+
import org.apache.james.mailets.configuration.MailetConfiguration;
34+
import org.apache.james.mailets.configuration.ProcessorConfiguration;
3235
import org.apache.james.modules.protocols.ImapGuiceProbe;
3336
import org.apache.james.modules.protocols.SmtpGuiceProbe;
3437
import org.apache.james.probe.DataProbe;
3538
import org.apache.james.transport.mailets.AddDeliveredToHeader;
39+
import org.apache.james.transport.mailets.LocalDelivery;
40+
import org.apache.james.transport.mailets.RecipientRewriteTable;
41+
import org.apache.james.transport.mailets.RemoteDelivery;
42+
import org.apache.james.transport.mailets.ToProcessor;
43+
import org.apache.james.transport.mailets.VacationMailet;
44+
import org.apache.james.transport.matchers.All;
45+
import org.apache.james.transport.matchers.RecipientIsLocal;
46+
import org.apache.james.transport.matchers.SMTPAuthSuccessful;
3647
import org.apache.james.utils.DataProbeImpl;
3748
import org.apache.james.utils.SMTPMessageSender;
3849
import org.apache.james.utils.TestIMAPClient;
@@ -43,7 +54,9 @@
4354
import org.junit.jupiter.api.io.TempDir;
4455

4556
class AddDeliveredToHeaderTest {
46-
public static final String RECIPIENT2 = "rené@" + DEFAULT_DOMAIN;
57+
private static final String POSTMASTER = "postmaster@" + DEFAULT_DOMAIN;
58+
public static final String RECIPIENT2_UTF8 = "rené@" + DEFAULT_DOMAIN;
59+
public static final String RECIPIENT2 = "rene@" + DEFAULT_DOMAIN;
4760
@RegisterExtension
4861
public TestIMAPClient testIMAPClient = new TestIMAPClient();
4962
@RegisterExtension
@@ -53,7 +66,11 @@ class AddDeliveredToHeaderTest {
5366

5467
@BeforeEach
5568
void setup(@TempDir File temporaryFolder) throws Exception {
56-
jamesServer = TemporaryJamesServer.builder().build(temporaryFolder);
69+
jamesServer = TemporaryJamesServer.builder()
70+
.withMailetContainer(TemporaryJamesServer.defaultMailetContainerConfiguration()
71+
.postmaster(POSTMASTER)
72+
.putProcessor(transport()))
73+
.build(temporaryFolder);
5774
jamesServer.start();
5875

5976
DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
@@ -84,24 +101,59 @@ void receivedMessagesShouldContainDeliveredToHeaders() throws Exception {
84101

85102
@Test
86103
void receivedMessagesShouldContainDeliveredToHeadersI8N() throws Exception {
87-
String message = "FROM: " + RECIPIENT2 + "\r\n" +
104+
jamesServer.getProbe(DataProbeImpl.class).addUserAliasMapping("rené", "james.org", RECIPIENT2);
105+
String message = "FROM: " + RECIPIENT2_UTF8 + "\r\n" +
88106
"subject: testé\r\n" +
89107
"Content-Type: text/plain; charset=UTF-8\r\n" +
90108
"Content-Encoding: 8bit\r\n" +
91109
"\r\n" +
92-
"contenté\r\n" +
93-
".\r\n";
110+
"contenté\r\n";
94111
messageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort())
95112
.authenticate(FROM, PASSWORD)
96-
.sendMessageWithHeaders(FROM, RECIPIENT2, message);
113+
.sendMessageWithHeaders(FROM, RECIPIENT2_UTF8, message);
114+
115+
Thread.sleep(1000);
97116

98117
testIMAPClient.connect(LOCALHOST_IP, jamesServer.getProbe(ImapGuiceProbe.class).getImapPort())
99118
.login(RECIPIENT2, PASSWORD)
100119
.select(TestIMAPClient.INBOX)
101120
.awaitMessage(awaitAtMostOneMinute);
102-
assertThat(testIMAPClient.readFirstMessageHeaders())
103-
.contains("René")
121+
122+
assertThat(testIMAPClient.readFirstMessage())
123+
.contains(RECIPIENT2_UTF8)
104124
.contains("testé")
105125
.contains("contenté");
106126
}
127+
128+
private ProcessorConfiguration.Builder transport() {
129+
return ProcessorConfiguration.transport()
130+
.enableJmx(false)
131+
.addMailet(MailetConfiguration.builder()
132+
.matcher(All.class)
133+
.mailet(RecipientRewriteTable.class))
134+
.addMailet(MailetConfiguration.builder()
135+
.matcher(RecipientIsLocal.class)
136+
.mailet(VacationMailet.class))
137+
.addMailet(MailetConfiguration.builder()
138+
.matcher(RecipientIsLocal.class)
139+
.mailet(JMAPFiltering.class))
140+
.addMailet(MailetConfiguration.builder()
141+
.matcher(RecipientIsLocal.class)
142+
.mailet(LocalDelivery.class))
143+
.addMailet(MailetConfiguration.builder()
144+
.matcher(SMTPAuthSuccessful.class)
145+
.mailet(RemoteDelivery.class)
146+
.addProperty("outgoingQueue", "outgoing")
147+
.addProperty("delayTime", "5000, 100000, 500000")
148+
.addProperty("maxRetries", "3")
149+
.addProperty("maxDnsProblemRetries", "0")
150+
.addProperty("deliveryThreads", "10")
151+
.addProperty("sendpartial", "true")
152+
.addProperty("bounceProcessor", "bounces"))
153+
.addMailet(MailetConfiguration.BCC_STRIPPER)
154+
.addMailet(MailetConfiguration.builder()
155+
.matcher(All.class)
156+
.mailet(ToProcessor.class)
157+
.addProperty("processor", "error"));
158+
}
107159
}

0 commit comments

Comments
 (0)