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 2020/12/05 07:10:19 UTC

[james-project] 12/17: JAMES-3431 MailQueue should test DsnParameters invariance

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 162431c9932e22da82e0b5bb11006e871e4a75b7
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Dec 3 11:25:33 2020 +0700

    JAMES-3431 MailQueue should test DsnParameters invariance
    
    The use of collections for attribute values is not compatible with the use of Java serialization the File and JMS mailQueues actively rely on.
---
 .../queue/activemq/ActiveMQMailQueueBlobTest.java  |  6 ++++++
 .../queue/activemq/ActiveMQMailQueueTest.java      |  6 ++++++
 .../apache/james/queue/api/MailQueueContract.java  | 22 ++++++++++++++++++++++
 .../queue/file/FileCacheableMailQueueTest.java     |  6 ++++++
 .../james/queue/jms/JMSCacheableMailQueueTest.java |  6 ++++++
 5 files changed, 46 insertions(+)

diff --git a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java
index 1a68b89..71a970e 100644
--- a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java
+++ b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java
@@ -98,6 +98,12 @@ public class ActiveMQMailQueueBlobTest implements DelayedManageableMailQueueCont
         return mailQueue;
     }
 
+    @Override
+    @Disabled("JAMES-3431 No support for Attribute collection Java serialization yet")
+    public void queueShouldPreserveDsnParameters() {
+
+    }
+
     @Test
     @Override
     @Disabled("JAMES-2295 Disabled as test was dead-locking")
diff --git a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java
index b90c1a1..8884645 100644
--- a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java
+++ b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueTest.java
@@ -77,6 +77,12 @@ public class ActiveMQMailQueueTest implements DelayedManageableMailQueueContract
         return mailQueue;
     }
 
+    @Override
+    @Disabled("JAMES-3431 No support for Attribute collection Java serialization yet")
+    public void queueShouldPreserveDsnParameters() {
+
+    }
+
     @Test
     @Override
     @Disabled("JAMES-2295 Disabled as test was dead-locking")
diff --git a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueContract.java b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueContract.java
index 9252f62..3533f46 100644
--- a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueContract.java
+++ b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueContract.java
@@ -31,6 +31,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import java.io.Serializable;
 import java.time.Duration;
 import java.util.Date;
+import java.util.EnumSet;
 import java.util.Iterator;
 import java.util.Objects;
 import java.util.concurrent.ConcurrentLinkedDeque;
@@ -47,6 +48,7 @@ import org.apache.james.core.MaybeSender;
 import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
 import org.apache.mailet.Attribute;
+import org.apache.mailet.DsnParameters;
 import org.apache.mailet.Mail;
 import org.apache.mailet.PerRecipientHeaders;
 import org.apache.mailet.base.test.FakeMail;
@@ -70,6 +72,26 @@ public interface MailQueueContract {
     }
 
     @Test
+    default void queueShouldPreserveDsnParameters() throws Exception {
+        DsnParameters dsnParameters = DsnParameters.builder()
+            .envId(DsnParameters.EnvId.of("434554-55445-33443"))
+            .ret(DsnParameters.Ret.FULL)
+            .addRcptParameter(new MailAddress("bob@apache.org"), DsnParameters.RecipientDsnParameters.of(new MailAddress("andy@apache.org")))
+            .addRcptParameter(new MailAddress("cedric@apache.org"), DsnParameters.RecipientDsnParameters.of(EnumSet.of(DsnParameters.Notify.SUCCESS)))
+            .addRcptParameter(new MailAddress("domi@apache.org"), DsnParameters.RecipientDsnParameters.of(EnumSet.of(DsnParameters.Notify.FAILURE), new MailAddress("eric@apache.org")))
+            .build().get();
+        Mail mail = defaultMail()
+            .name("mail")
+            .build();
+        mail.setDsnParameters(dsnParameters);
+        enQueue(mail);
+
+        MailQueue.MailQueueItem mailQueueItem = Flux.from(getMailQueue().deQueue()).blockFirst();
+        assertThat(mailQueueItem.getMail().dsnParameters())
+            .contains(dsnParameters);
+    }
+
+    @Test
     default void queueShouldSupportBigMail() throws Exception {
         String name = "name1";
         // 12 MB of text
diff --git a/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileCacheableMailQueueTest.java b/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileCacheableMailQueueTest.java
index 8fe07cc..a1b6f0a 100644
--- a/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileCacheableMailQueueTest.java
+++ b/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileCacheableMailQueueTest.java
@@ -53,6 +53,12 @@ public class FileCacheableMailQueueTest implements DelayedManageableMailQueueCon
     }
 
     @Override
+    @Disabled("JAMES-3431 No support for Attribute collection Java serialization yet")
+    public void queueShouldPreserveDsnParameters() {
+
+    }
+
+    @Override
     public MailQueue getMailQueue() {
         return mailQueue;
     }
diff --git a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSCacheableMailQueueTest.java b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSCacheableMailQueueTest.java
index fb0e189..6d75f0d 100644
--- a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSCacheableMailQueueTest.java
+++ b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSCacheableMailQueueTest.java
@@ -75,6 +75,12 @@ public class JMSCacheableMailQueueTest implements DelayedManageableMailQueueCont
     }
 
     @Override
+    @Disabled("JAMES-3431 No support for Attribute collection Java serialization yet")
+    public void queueShouldPreserveDsnParameters() {
+
+    }
+
+    @Override
     @Disabled("JAMES-2295 Disabled as test was dead-locking")
     public void dequeueCanBeChainedBeforeAck() {
 


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