You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/11/03 08:08:31 UTC

[james-project] 02/05: JAMES-3843 Support nullSender in mockSMTP

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 5fa6a93e6aaa71b51a7cafab4524f1075ede3e43
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Nov 1 22:50:59 2022 +0700

    JAMES-3843 Support nullSender in mockSMTP
---
 server/mailet/mock-smtp-server/pom.xml             |  2 +-
 .../james/mock/smtp/server/MockMessageHandler.java |  3 +++
 .../apache/james/mock/smtp/server/model/Mail.java  | 15 +++++++++++
 .../mock/smtp/server/ConfigurationClientTest.java  | 31 ++++++++++++++++++++++
 4 files changed, 50 insertions(+), 1 deletion(-)

diff --git a/server/mailet/mock-smtp-server/pom.xml b/server/mailet/mock-smtp-server/pom.xml
index 707f7ff6e9..c9d3c10949 100644
--- a/server/mailet/mock-smtp-server/pom.xml
+++ b/server/mailet/mock-smtp-server/pom.xml
@@ -129,7 +129,7 @@
                     <to>
                         <image>linagora/mock-smtp-server</image>
                         <tags>
-                            <tag>0.5</tag>
+                            <tag>0.6</tag>
                         </tags>
                     </to>
                     <container>
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
index 1d50fc6bd3..1f975f15c9 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/MockMessageHandler.java
@@ -187,6 +187,9 @@ public class MockMessageHandler implements MessageHandler {
     }
 
     private MailAddress parse(String mailAddress) {
+        if (mailAddress.isEmpty()) {
+            return MailAddress.nullSender();
+        }
         try {
             return new MailAddress(mailAddress);
         } catch (AddressException e) {
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Mail.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Mail.java
index c8e683f83c..9008a76b5b 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Mail.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/model/Mail.java
@@ -26,6 +26,8 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Stream;
 
+import javax.mail.internet.AddressException;
+
 import org.apache.james.core.MailAddress;
 
 import com.fasterxml.jackson.annotation.JsonUnwrapped;
@@ -231,6 +233,19 @@ public class Mail {
                 return this;
             }
 
+            public Builder from(String from) {
+                if (from.equals("<>")) {
+                    this.from = MailAddress.nullSender();
+                } else {
+                    try {
+                        this.from = new MailAddress(from);
+                    } catch (AddressException e) {
+                        throw new RuntimeException(e);
+                    }
+                }
+                return this;
+            }
+
             public Builder addRecipientMailAddress(MailAddress mailAddress) {
                 this.recipients.add(Recipient.of(mailAddress));
                 return this;
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ConfigurationClientTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ConfigurationClientTest.java
index c85a80d6c7..3586940046 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ConfigurationClientTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/ConfigurationClientTest.java
@@ -22,7 +22,9 @@ package org.apache.james.mock.smtp.server;
 import static org.apache.james.mock.smtp.server.Fixture.BEHAVIOR_LIST;
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.apache.james.core.MailAddress;
 import org.apache.james.mock.smtp.server.Fixture.MailsFixutre;
+import org.apache.james.mock.smtp.server.model.Mail;
 import org.apache.james.mock.smtp.server.model.SMTPExtension;
 import org.apache.james.mock.smtp.server.model.SMTPExtensions;
 import org.junit.jupiter.api.AfterEach;
@@ -133,6 +135,35 @@ class ConfigurationClientTest {
             .containsExactly(MailsFixutre.MAIL_1, MailsFixutre.MAIL_2);
     }
 
+    @Test
+    void listMailsShouldReturnMailWithNullSender() throws Exception {
+        final Mail mail = new Mail(
+            Mail.Envelope.builder()
+                .from(MailAddress.nullSender())
+                .addRecipientMailAddress(new MailAddress(Fixture.ALICE))
+                .addRecipient(Mail.Recipient.builder()
+                    .address(new MailAddress(Fixture.JACK))
+                    .addParameter(Mail.Parameter.builder()
+                        .name("param1")
+                        .value("value1")
+                        .build())
+                    .addParameter(Mail.Parameter.builder()
+                        .name("param2")
+                        .value("value2")
+                        .build())
+                    .build())
+                .addMailParameter(Mail.Parameter.builder()
+                    .name("param3")
+                    .value("value3")
+                    .build())
+                .build(),
+            "bob to alice and jack");
+        mailRepository.store(mail);
+
+        assertThat(testee.listMails())
+            .containsExactly(mail);
+    }
+
     @Test
     void shouldReturnVersion() {
         mailRepository.store(MailsFixutre.MAIL_1);


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org