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 2020/12/30 03:35:14 UTC

[james-project] 02/29: JAMES-3431 Mock SMTP server: Add a convenience version endpoint

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 6011e4b27d1a1049983b34fcd2ecfd309a82fc99
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Dec 23 12:05:09 2020 +0700

    JAMES-3431 Mock SMTP server: Add a convenience version endpoint
    
    This enables tests to ensure they are running against the right API version
---
 .../org/apache/james/mailets/RemoteDeliveryErrorTest.java  |  3 +++
 .../apache/james/mock/smtp/server/ConfigurationClient.java |  3 +++
 .../james/mock/smtp/server/HTTPConfigurationServer.java    |  7 +++++++
 .../james/mock/smtp/server/ConfigurationClientTest.java    |  9 +++++++++
 .../mock/smtp/server/HTTPConfigurationServerTest.java      | 14 ++++++++++++--
 5 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryErrorTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryErrorTest.java
index a729062..2923665 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryErrorTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryErrorTest.java
@@ -153,6 +153,9 @@ public class RemoteDeliveryErrorTest {
 
         mockSMTP1Configuration = configurationClient(mockSmtp);
         mockSMTP2Configuration = configurationClient(mockSmtp2);
+
+        assertThat(mockSMTP1Configuration.version()).isEqualTo("0.2");
+        assertThat(mockSMTP2Configuration.version()).isEqualTo("0.2");
     }
 
     @After
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/ConfigurationClient.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/ConfigurationClient.java
index a93c369..e823cee 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/ConfigurationClient.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/ConfigurationClient.java
@@ -187,6 +187,9 @@ public interface ConfigurationClient {
     @RequestLine("GET " + HTTPConfigurationServer.SMTP_MAILS)
     List<Mail> listMails();
 
+    @RequestLine("GET " + HTTPConfigurationServer.VERSION)
+    String version();
+
     @RequestLine("DELETE " + HTTPConfigurationServer.SMTP_MAILS)
     void clearMails();
 
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/HTTPConfigurationServer.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/HTTPConfigurationServer.java
index 32f7746..5a0784b 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/HTTPConfigurationServer.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/HTTPConfigurationServer.java
@@ -92,6 +92,7 @@ public class HTTPConfigurationServer {
     private static final Logger LOGGER = LoggerFactory.getLogger(HTTPConfigurationServer.class);
     private static final int RANDOM_PORT = 0;
     static final String SMTP_BEHAVIORS = "/smtpBehaviors";
+    static final String VERSION = "/version";
     static final String SMTP_MAILS = "/smtpMails";
 
     private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper()
@@ -128,6 +129,7 @@ public class HTTPConfigurationServer {
                 .orElse(RANDOM_PORT))
             .route(routes -> routes
                 .get(SMTP_BEHAVIORS, this::getBehaviors)
+                .get(VERSION, this::getVersion)
                 .put(SMTP_BEHAVIORS, this::putBehaviors)
                 .delete(SMTP_BEHAVIORS, this::deleteBehaviors)
                 .get(SMTP_MAILS, this::getMails)
@@ -150,6 +152,11 @@ public class HTTPConfigurationServer {
         }
     }
 
+    private Publisher<Void> getVersion(HttpServerRequest req, HttpServerResponse res) {
+        return res.status(OK)
+            .sendString(Mono.just("0.2"));
+    }
+
     private Publisher<Void> putBehaviors(HttpServerRequest req, HttpServerResponse res) {
         return req.receive().aggregate().asInputStream()
             .flatMap(inputStream -> {
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 ae1bdc3..33e3c38 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
@@ -96,6 +96,15 @@ class ConfigurationClientTest {
     }
 
     @Test
+    void shouldReturnVersion() {
+        mailRepository.store(MailsFixutre.MAIL_1);
+        mailRepository.store(MailsFixutre.MAIL_2);
+
+        assertThat(testee.version())
+            .isEqualTo("0.2");
+    }
+
+    @Test
     void clearMailsRemoveAllStoredMails() {
         mailRepository.store(MailsFixutre.MAIL_1);
         mailRepository.store(MailsFixutre.MAIL_2);
diff --git a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/HTTPConfigurationServerTest.java b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/HTTPConfigurationServerTest.java
index b94a27f..29b99bc 100644
--- a/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/HTTPConfigurationServerTest.java
+++ b/server/mailet/mock-smtp-server/src/test/java/org/apache/james/mock/smtp/server/HTTPConfigurationServerTest.java
@@ -29,6 +29,7 @@ import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
 import static org.apache.james.mock.smtp.server.Fixture.JSON_BEHAVIORS;
 import static org.apache.james.mock.smtp.server.Fixture.JSON_MAIL;
 import static org.apache.james.mock.smtp.server.Fixture.JSON_MAILS_LIST;
+import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasSize;
 
 import java.nio.charset.StandardCharsets;
@@ -79,6 +80,15 @@ class HTTPConfigurationServerTest {
         }
 
         @Test
+        void shouldExposeVersion() {
+            given()
+                .basePath("/version")
+                .get()
+            .then()
+                .body(equalTo("0.2"));
+        }
+
+        @Test
         void getShouldReturnPreviouslyStoredData() {
             with().body(JSON_BEHAVIORS).put();
 
@@ -177,7 +187,7 @@ class HTTPConfigurationServerTest {
             mailRepository.store(MailsFixutre.MAIL_1);
 
             String response = when()
-                    .get().prettyPeek()
+                    .get()
                 .then()
                     .contentType(ContentType.JSON)
                     .extract()
@@ -194,7 +204,7 @@ class HTTPConfigurationServerTest {
             mailRepository.store(MailsFixutre.MAIL_2);
 
             String response = when()
-                    .get().prettyPeek()
+                    .get()
                 .then()
                     .contentType(ContentType.JSON)
                     .extract()


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