2929
3030import 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 ;
3235import org .apache .james .modules .protocols .ImapGuiceProbe ;
3336import org .apache .james .modules .protocols .SmtpGuiceProbe ;
3437import org .apache .james .probe .DataProbe ;
3538import 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 ;
3647import org .apache .james .utils .DataProbeImpl ;
3748import org .apache .james .utils .SMTPMessageSender ;
3849import org .apache .james .utils .TestIMAPClient ;
4354import org .junit .jupiter .api .io .TempDir ;
4455
4556class 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