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/09/06 20:05:44 UTC

[james-project] branch master updated: JAMES-3755 RspamdScanner should specify requiredProcessingState (#1174)

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


The following commit(s) were added to refs/heads/master by this push:
     new 7e02f9b3b7 JAMES-3755 RspamdScanner should specify requiredProcessingState (#1174)
7e02f9b3b7 is described below

commit 7e02f9b3b7dcd8b5e220a2692b8a557cac1dde7b
Author: Benoit TELLIER <bt...@linagora.com>
AuthorDate: Wed Sep 7 03:05:38 2022 +0700

    JAMES-3755 RspamdScanner should specify requiredProcessingState (#1174)
    
    It should advertise virus, rejected processor when specified.
---
 .../org/apache/james/rspamd/RspamdScanner.java     | 11 ++++++
 .../org/apache/james/rspamd/RspamdScannerTest.java | 41 +++++++++++++++++++++-
 2 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/third-party/rspamd/src/main/java/org/apache/james/rspamd/RspamdScanner.java b/third-party/rspamd/src/main/java/org/apache/james/rspamd/RspamdScanner.java
index 107dd2e84d..e465e67e5b 100644
--- a/third-party/rspamd/src/main/java/org/apache/james/rspamd/RspamdScanner.java
+++ b/third-party/rspamd/src/main/java/org/apache/james/rspamd/RspamdScanner.java
@@ -20,8 +20,10 @@
 package org.apache.james.rspamd;
 
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Optional;
+import java.util.stream.Stream;
 
 import javax.inject.Inject;
 import javax.mail.MessagingException;
@@ -34,6 +36,7 @@ import org.apache.mailet.AttributeName;
 import org.apache.mailet.AttributeValue;
 import org.apache.mailet.Mail;
 import org.apache.mailet.PerRecipientHeaders;
+import org.apache.mailet.ProcessingState;
 import org.apache.mailet.base.GenericMailet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -113,4 +116,12 @@ public class RspamdScanner extends GenericMailet {
                 + " score=" + rspamdResult.getScore()
                 + " requiredScore=" + rspamdResult.getRequiredScore())));
     }
+
+    @Override
+    public Collection<ProcessingState> requiredProcessingState() {
+        return Stream.of(virusProcessor, rejectSpamProcessor)
+            .flatMap(Optional::stream)
+            .map(ProcessingState::new)
+            .collect(ImmutableList.toImmutableList());
+    }
 }
diff --git a/third-party/rspamd/src/test/java/org/apache/james/rspamd/RspamdScannerTest.java b/third-party/rspamd/src/test/java/org/apache/james/rspamd/RspamdScannerTest.java
index 94c3ab17ad..5ebdd2c70c 100644
--- a/third-party/rspamd/src/test/java/org/apache/james/rspamd/RspamdScannerTest.java
+++ b/third-party/rspamd/src/test/java/org/apache/james/rspamd/RspamdScannerTest.java
@@ -24,7 +24,6 @@ import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-import java.io.InputStream;
 import java.util.Collection;
 import java.util.Optional;
 
@@ -41,6 +40,7 @@ import org.apache.mailet.Attribute;
 import org.apache.mailet.AttributeValue;
 import org.apache.mailet.Mail;
 import org.apache.mailet.PerRecipientHeaders;
+import org.apache.mailet.ProcessingState;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailetConfig;
 import org.assertj.core.api.SoftAssertions;
@@ -70,6 +70,45 @@ class RspamdScannerTest {
         mailet = new RspamdScanner(client);
     }
 
+    @Test
+    void requiredProcessingStateShouldReturnEmptyByDefault() throws Exception {
+        mailet.init(FakeMailetConfig.builder()
+            .setProperty("rewriteSubject", "true")
+            .build());
+
+        assertThat(mailet.requiredProcessingState()).isEmpty();
+    }
+
+    @Test
+    void requiredProcessingStateShouldReturnVirusProcessor() throws Exception {
+        mailet.init(FakeMailetConfig.builder()
+            .setProperty("virusProcessor", "virus")
+            .build());
+
+        assertThat(mailet.requiredProcessingState()).containsOnly(new ProcessingState("virus"));
+    }
+
+    @Test
+    void requiredProcessingStateShouldReturnRejectedProcessor() throws Exception {
+        mailet.init(FakeMailetConfig.builder()
+            .setProperty("rejectSpamProcessor", "rejected")
+            .build());
+
+        assertThat(mailet.requiredProcessingState()).containsOnly(new ProcessingState("rejected"));
+    }
+
+    @Test
+    void requiredProcessingStateShouldReturnVirusAndRejectedProcessor() throws Exception {
+        mailet.init(FakeMailetConfig.builder()
+            .setProperty("virusProcessor", "virus")
+            .setProperty("rejectSpamProcessor", "rejected")
+            .build());
+
+        assertThat(mailet.requiredProcessingState())
+            .containsOnly(new ProcessingState("virus"),
+                new ProcessingState("rejected"));
+    }
+
     @Test
     void serviceShouldWriteSpamAttributeOnMail() throws Exception {
         Mail mail = FakeMail.builder()


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