You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2022/09/20 07:20:46 UTC

[james-project] 03/04: JAMES-3775 Clean code - RspamdHttpClient - remove unused method

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

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

commit 9a2a3170b6559fef8d7cd72dbfcb372c5773c5f9
Author: Tung Van TRAN <vt...@linagora.com>
AuthorDate: Tue Sep 13 16:49:27 2022 +0700

    JAMES-3775 Clean code - RspamdHttpClient - remove unused method
---
 .../james/rspamd/client/RspamdHttpClient.java      | 25 +++----
 .../james/rspamd/client/RspamdHttpClientTest.java  | 80 ++++++++++++++--------
 2 files changed, 58 insertions(+), 47 deletions(-)

diff --git a/third-party/rspamd/src/main/java/org/apache/james/rspamd/client/RspamdHttpClient.java b/third-party/rspamd/src/main/java/org/apache/james/rspamd/client/RspamdHttpClient.java
index a61af61c90..4fb758edff 100644
--- a/third-party/rspamd/src/main/java/org/apache/james/rspamd/client/RspamdHttpClient.java
+++ b/third-party/rspamd/src/main/java/org/apache/james/rspamd/client/RspamdHttpClient.java
@@ -71,15 +71,6 @@ public class RspamdHttpClient {
         this.objectMapper = new ObjectMapper().registerModule(new Jdk8Module());
     }
 
-    public Mono<AnalysisResult> checkV2(InputStream mimeMessage) {
-        return httpClient.post()
-            .uri(CHECK_V2_ENDPOINT)
-            .send(ReactorUtils.toChunks(mimeMessage, BUFFER_SIZE)
-                .map(Unpooled::wrappedBuffer))
-            .responseSingle(this::checkMailHttpResponseHandler)
-            .subscribeOn(ReactorUtils.BLOCKING_CALL_WRAPPER);
-    }
-
     public Mono<AnalysisResult> checkV2(Mail mail) throws MessagingException {
         return httpClient
             .headers(headers -> transportInformationToHeaders(mail, headers))
@@ -91,6 +82,14 @@ public class RspamdHttpClient {
             .subscribeOn(ReactorUtils.BLOCKING_CALL_WRAPPER);
     }
 
+    public Mono<Void> reportAsSpam(InputStream content) {
+        return reportMail(content, LEARN_SPAM_ENDPOINT);
+    }
+
+    public Mono<Void> reportAsHam(InputStream content) {
+        return reportMail(content, LEARN_HAM_ENDPOINT);
+    }
+
     // CF https://rspamd.com/doc/architecture/protocol.html#http-headers
     // Adding SMTP transport information improves Rspamd accuracy
     private void transportInformationToHeaders(Mail mail, io.netty.handler.codec.http.HttpHeaders headers) {
@@ -120,14 +119,6 @@ public class RspamdHttpClient {
             .ifPresent(user -> headers.add("User", user));
     }
 
-    public Mono<Void> reportAsSpam(InputStream content) {
-        return reportMail(content, LEARN_SPAM_ENDPOINT);
-    }
-
-    public Mono<Void> reportAsHam(InputStream content) {
-        return reportMail(content, LEARN_HAM_ENDPOINT);
-    }
-
     private HttpClient buildReactorNettyHttpClient(RspamdClientConfiguration configuration) {
         return HttpClient.create()
             .disableRetry(true)
diff --git a/third-party/rspamd/src/test/java/org/apache/james/rspamd/client/RspamdHttpClientTest.java b/third-party/rspamd/src/test/java/org/apache/james/rspamd/client/RspamdHttpClientTest.java
index 25f84da4cc..3271e9b064 100644
--- a/third-party/rspamd/src/test/java/org/apache/james/rspamd/client/RspamdHttpClientTest.java
+++ b/third-party/rspamd/src/test/java/org/apache/james/rspamd/client/RspamdHttpClientTest.java
@@ -26,17 +26,20 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.hamcrest.Matchers.nullValue;
 import static org.hamcrest.core.Is.is;
 
-import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.util.Optional;
 
+import javax.mail.MessagingException;
+
 import org.apache.james.junit.categories.Unstable;
 import org.apache.james.rspamd.DockerRspamdExtension;
 import org.apache.james.rspamd.exception.UnauthorizedException;
 import org.apache.james.rspamd.model.AnalysisResult;
-import org.apache.james.util.ClassLoaderUtils;
+import org.apache.james.util.MimeMessageUtil;
 import org.apache.james.util.Port;
 import org.apache.james.webadmin.WebAdminUtils;
+import org.apache.mailet.Mail;
+import org.apache.mailet.base.test.FakeMail;
 import org.assertj.core.api.SoftAssertions;
 import org.eclipse.jetty.http.HttpStatus;
 import org.junit.jupiter.api.BeforeEach;
@@ -57,17 +60,33 @@ class RspamdHttpClientTest {
     @RegisterExtension
     static DockerRspamdExtension rspamdExtension = new DockerRspamdExtension();
 
-    private byte[] spamMessage;
-    private byte[] hamMessage;
-    private byte[] virusMessage;
-    private byte[] nonVirusMessage;
+    private Mail spamMessage;
+    private Mail hamMessage;
+    private Mail virusMessage;
+    private Mail nonVirusMessage;
 
     @BeforeEach
-    void setup() {
-        spamMessage = ClassLoaderUtils.getSystemResourceAsByteArray(SPAM_MESSAGE_PATH);
-        hamMessage = ClassLoaderUtils.getSystemResourceAsByteArray(HAM_MESSAGE_PATH);
-        virusMessage = ClassLoaderUtils.getSystemResourceAsByteArray(VIRUS_MESSAGE_PATH);
-        nonVirusMessage = ClassLoaderUtils.getSystemResourceAsByteArray(NON_VIRUS_MESSAGE_PATH);
+    void setup() throws MessagingException {
+        spamMessage = FakeMail.builder()
+            .name("spam")
+            .mimeMessage(MimeMessageUtil.mimeMessageFromStream(
+                ClassLoader.getSystemResourceAsStream(SPAM_MESSAGE_PATH)))
+            .build();
+        hamMessage = FakeMail.builder()
+            .name("ham")
+            .mimeMessage(MimeMessageUtil.mimeMessageFromStream(
+                ClassLoader.getSystemResourceAsStream(HAM_MESSAGE_PATH)))
+            .build();
+        virusMessage = FakeMail.builder()
+            .name("virus")
+            .mimeMessage(MimeMessageUtil.mimeMessageFromStream(
+                ClassLoader.getSystemResourceAsStream(VIRUS_MESSAGE_PATH)))
+            .build();
+        nonVirusMessage = FakeMail.builder()
+            .name("non virus")
+            .mimeMessage(MimeMessageUtil.mimeMessageFromStream(
+                ClassLoader.getSystemResourceAsStream(NON_VIRUS_MESSAGE_PATH)))
+            .build();
     }
 
     @Test
@@ -75,7 +94,7 @@ class RspamdHttpClientTest {
         RspamdClientConfiguration configuration = new RspamdClientConfiguration(rspamdExtension.getBaseUrl(), "wrongPassword", Optional.empty());
         RspamdHttpClient client = new RspamdHttpClient(configuration);
 
-        assertThatThrownBy(() -> client.checkV2(new ByteArrayInputStream(spamMessage)).block())
+        assertThatThrownBy(() -> client.checkV2(spamMessage).block())
             .hasMessage("{\"error\":\"Unauthorized\"}")
             .isInstanceOf(UnauthorizedException.class);
     }
@@ -85,7 +104,8 @@ class RspamdHttpClientTest {
         RspamdClientConfiguration configuration = new RspamdClientConfiguration(rspamdExtension.getBaseUrl(), "wrongPassword", Optional.empty());
         RspamdHttpClient client = new RspamdHttpClient(configuration);
 
-        assertThatThrownBy(() -> reportAsSpam(client, new ByteArrayInputStream(spamMessage)))
+
+        assertThatThrownBy(() -> reportAsSpam(client, spamMessage.getMessage().getInputStream()))
             .hasMessage("{\"error\":\"Unauthorized\"}")
             .isInstanceOf(UnauthorizedException.class);
     }
@@ -95,17 +115,17 @@ class RspamdHttpClientTest {
         RspamdClientConfiguration configuration = new RspamdClientConfiguration(rspamdExtension.getBaseUrl(), "wrongPassword", Optional.empty());
         RspamdHttpClient client = new RspamdHttpClient(configuration);
 
-        assertThatThrownBy(() -> reportAsHam(client, new ByteArrayInputStream(spamMessage)))
+        assertThatThrownBy(() -> reportAsHam(client, spamMessage.getMessage().getInputStream()))
             .hasMessage("{\"error\":\"Unauthorized\"}")
             .isInstanceOf(UnauthorizedException.class);
     }
 
     @Test
-    void checkSpamMailUsingRspamdClientWithExactPasswordShouldReturnAnalysisResultAsSameAsUsingRawClient() {
+    void checkSpamMailUsingRspamdClientWithExactPasswordShouldReturnAnalysisResultAsSameAsUsingRawClient() throws Exception {
         RspamdClientConfiguration configuration = new RspamdClientConfiguration(rspamdExtension.getBaseUrl(), PASSWORD, Optional.empty());
         RspamdHttpClient client = new RspamdHttpClient(configuration);
 
-        AnalysisResult analysisResult = client.checkV2(new ByteArrayInputStream(spamMessage)).block();
+        AnalysisResult analysisResult = client.checkV2(spamMessage).block();
         assertThat(analysisResult.getAction()).isEqualTo(AnalysisResult.Action.REJECT);
 
         RequestSpecification rspamdApi = WebAdminUtils.spec(Port.of(rspamdExtension.dockerRspamd().getPort()));
@@ -121,11 +141,11 @@ class RspamdHttpClientTest {
     }
 
     @Test
-    void checkHamMailUsingRspamdClientWithExactPasswordShouldReturnAnalysisResultAsSameAsUsingRawClient() {
+    void checkHamMailUsingRspamdClientWithExactPasswordShouldReturnAnalysisResultAsSameAsUsingRawClient() throws Exception {
         RspamdClientConfiguration configuration = new RspamdClientConfiguration(rspamdExtension.getBaseUrl(), PASSWORD, Optional.empty());
         RspamdHttpClient client = new RspamdHttpClient(configuration);
 
-        AnalysisResult analysisResult = client.checkV2(new ByteArrayInputStream(hamMessage)).block();
+        AnalysisResult analysisResult = client.checkV2(hamMessage).block();
         SoftAssertions.assertSoftly(softly -> {
             softly.assertThat(analysisResult.getAction()).isEqualTo(AnalysisResult.Action.NO_ACTION);
             softly.assertThat(analysisResult.getRequiredScore()).isEqualTo(14.0F);
@@ -150,7 +170,7 @@ class RspamdHttpClientTest {
         RspamdClientConfiguration configuration = new RspamdClientConfiguration(rspamdExtension.getBaseUrl(), PASSWORD, Optional.empty());
         RspamdHttpClient client = new RspamdHttpClient(configuration);
 
-        assertThatCode(() -> client.reportAsSpam(new ByteArrayInputStream(spamMessage)).block())
+        assertThatCode(() -> client.reportAsSpam(spamMessage.getMessage().getInputStream()).block())
             .doesNotThrowAnyException();
     }
 
@@ -159,45 +179,45 @@ class RspamdHttpClientTest {
         RspamdClientConfiguration configuration = new RspamdClientConfiguration(rspamdExtension.getBaseUrl(), PASSWORD, Optional.empty());
         RspamdHttpClient client = new RspamdHttpClient(configuration);
 
-        assertThatCode(() -> client.reportAsHam(new ByteArrayInputStream(hamMessage)).block())
+        assertThatCode(() -> client.reportAsHam(hamMessage.getMessage().getInputStream()).block())
             .doesNotThrowAnyException();
     }
 
     @Test
-    void learnHamMShouldBeIdempotent() {
+    void learnHamMShouldBeIdempotent() throws Exception {
         RspamdClientConfiguration configuration = new RspamdClientConfiguration(rspamdExtension.getBaseUrl(), PASSWORD, Optional.empty());
         RspamdHttpClient client = new RspamdHttpClient(configuration);
 
-        client.reportAsHam(new ByteArrayInputStream(hamMessage)).block();
-        assertThatCode(() -> client.reportAsHam(new ByteArrayInputStream(hamMessage)).block())
+        client.reportAsHam(hamMessage.getMessage().getInputStream()).block();
+        assertThatCode(() -> client.reportAsHam(hamMessage.getMessage().getInputStream()).block())
             .doesNotThrowAnyException();
     }
 
     @Test
-    void learnSpamMShouldBeIdempotent() {
+    void learnSpamMShouldBeIdempotent() throws Exception {
         RspamdClientConfiguration configuration = new RspamdClientConfiguration(rspamdExtension.getBaseUrl(), PASSWORD, Optional.empty());
         RspamdHttpClient client = new RspamdHttpClient(configuration);
 
-        client.reportAsSpam(new ByteArrayInputStream(spamMessage)).block();
-        assertThatCode(() -> client.reportAsSpam(new ByteArrayInputStream(spamMessage)).block())
+        client.reportAsSpam(spamMessage.getMessage().getInputStream()).block();
+        assertThatCode(() -> client.reportAsSpam(spamMessage.getMessage().getInputStream()).block())
             .doesNotThrowAnyException();
     }
 
     @Test
-    void checkVirusMailUsingRspamdClientWithExactPasswordShouldReturnHasVirus() {
+    void checkVirusMailUsingRspamdClientWithExactPasswordShouldReturnHasVirus() throws Exception {
         RspamdClientConfiguration configuration = new RspamdClientConfiguration(rspamdExtension.getBaseUrl(), PASSWORD, Optional.empty());
         RspamdHttpClient client = new RspamdHttpClient(configuration);
 
-        AnalysisResult analysisResult = client.checkV2(new ByteArrayInputStream(virusMessage)).block();
+        AnalysisResult analysisResult = client.checkV2(virusMessage).block();
         assertThat(analysisResult.hasVirus()).isTrue();
     }
 
     @Test
-    void checkNonVirusMailUsingRspamdClientWithExactPasswordShouldReturnHasNoVirus() {
+    void checkNonVirusMailUsingRspamdClientWithExactPasswordShouldReturnHasNoVirus() throws Exception {
         RspamdClientConfiguration configuration = new RspamdClientConfiguration(rspamdExtension.getBaseUrl(), PASSWORD, Optional.empty());
         RspamdHttpClient client = new RspamdHttpClient(configuration);
 
-        AnalysisResult analysisResult = client.checkV2(new ByteArrayInputStream(nonVirusMessage)).block();
+        AnalysisResult analysisResult = client.checkV2(nonVirusMessage).block();
         assertThat(analysisResult.hasVirus()).isFalse();
     }
 


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