You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2018/01/17 13:28:08 UTC

[2/9] james-project git commit: JAMES-2286 Fully check mail equality

JAMES-2286 Fully check mail equality


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c72fdfcd
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c72fdfcd
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c72fdfcd

Branch: refs/heads/master
Commit: c72fdfcd0bb34bbf66ba4d9fb144881c05370316
Parents: 04c301f
Author: benwa <bt...@linagora.com>
Authored: Mon Jan 15 10:31:14 2018 +0700
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Tue Jan 16 16:34:46 2018 +0100

----------------------------------------------------------------------
 .../jdbc/JDBCMailRepositoryTest.java            | 22 ++++++++++++
 .../mailrepository/MailRepositoryContract.java  | 36 +++++++++++++++++---
 2 files changed, 54 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c72fdfcd/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java b/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
index adffb1e..30b007f 100644
--- a/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
+++ b/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
@@ -19,6 +19,9 @@
 
 package org.apache.james.mailrepository.jdbc;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertAll;
+
 import java.sql.SQLException;
 
 import javax.sql.DataSource;
@@ -30,6 +33,7 @@ import org.apache.james.filesystem.api.mock.MockFileSystem;
 import org.apache.james.lifecycle.api.LifecycleUtil;
 import org.apache.james.mailrepository.MailRepositoryContract;
 import org.apache.james.mailrepository.api.MailRepository;
+import org.apache.mailet.Mail;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
@@ -80,4 +84,22 @@ public class JDBCMailRepositoryTest implements MailRepositoryContract {
     @Override
     public void storingMessageWithSameKeyTwiceShouldUpdateMessageContent() {
     }
+
+    /**
+     * JAMES-2303 JDBC doesn't store PerRecipientSpecificHeaders
+     */
+    @Override
+    public void checkMailEquality(Mail actual, Mail expected) {
+        assertAll(
+            () -> assertThat(actual.getMessage().getContent()).isEqualTo(expected.getMessage().getContent()),
+            () -> assertThat(actual.getMessageSize()).isEqualTo(expected.getMessageSize()),
+            () -> assertThat(actual.getName()).isEqualTo(expected.getName()),
+            () -> assertThat(actual.getState()).isEqualTo(expected.getState()),
+            () -> assertThat(actual.getAttribute(TEST_ATTRIBUTE)).isEqualTo(expected.getAttribute(TEST_ATTRIBUTE)),
+            () -> assertThat(actual.getErrorMessage()).isEqualTo(expected.getErrorMessage()),
+            () -> assertThat(actual.getRemoteHost()).isEqualTo(expected.getRemoteHost()),
+            () -> assertThat(actual.getRemoteAddr()).isEqualTo(expected.getRemoteAddr()),
+            () -> assertThat(actual.getLastUpdated()).isEqualTo(expected.getLastUpdated())
+        );
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/c72fdfcd/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
index 1a82191..6afe6e7 100644
--- a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
+++ b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
@@ -22,6 +22,7 @@ package org.apache.james.mailrepository;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertAll;
 
+import java.util.Date;
 import java.util.List;
 
 import javax.mail.MessagingException;
@@ -32,6 +33,7 @@ import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.james.server.core.MailImpl;
 import org.apache.mailet.Mail;
+import org.apache.mailet.PerRecipientHeaders;
 import org.junit.jupiter.api.Test;
 
 import com.google.common.collect.ImmutableList;
@@ -40,17 +42,17 @@ public interface MailRepositoryContract {
 
     String TEST_ATTRIBUTE = "testAttribute";
 
-    default  Mail createMail(String name) throws MessagingException {
+    default MailImpl createMail(String name) throws MessagingException {
         return createMail(name, "original body");
     }
 
-    default  Mail createMail(String name, String body) throws MessagingException {
+    default MailImpl createMail(String name, String body) throws MessagingException {
         MimeMessage mailContent = generateMailContent(body);
         List<MailAddress> recipients = ImmutableList
             .of(new MailAddress("rec1@domain.com"),
                 new MailAddress("rec2@domain.com"));
         MailAddress sender = new MailAddress("sender@domain.com");
-        Mail mail = new MailImpl(name, sender, recipients, mailContent);
+        MailImpl mail = new MailImpl(name, sender, recipients, mailContent);
         mail.setAttribute(TEST_ATTRIBUTE, "testValue");
         return mail;
     }
@@ -69,7 +71,12 @@ public interface MailRepositoryContract {
             () -> assertThat(actual.getMessageSize()).isEqualTo(expected.getMessageSize()),
             () -> assertThat(actual.getName()).isEqualTo(expected.getName()),
             () -> assertThat(actual.getState()).isEqualTo(expected.getState()),
-            () -> assertThat(actual.getAttribute(TEST_ATTRIBUTE)).isEqualTo(expected.getAttribute(TEST_ATTRIBUTE))
+            () -> assertThat(actual.getAttribute(TEST_ATTRIBUTE)).isEqualTo(expected.getAttribute(TEST_ATTRIBUTE)),
+            () -> assertThat(actual.getErrorMessage()).isEqualTo(expected.getErrorMessage()),
+            () -> assertThat(actual.getRemoteHost()).isEqualTo(expected.getRemoteHost()),
+            () -> assertThat(actual.getRemoteAddr()).isEqualTo(expected.getRemoteAddr()),
+            () -> assertThat(actual.getLastUpdated()).isEqualTo(expected.getLastUpdated()),
+            () -> assertThat(actual.getPerRecipientSpecificHeaders()).isEqualTo(expected.getPerRecipientSpecificHeaders())
         );
     }
 
@@ -94,6 +101,27 @@ public interface MailRepositoryContract {
         assertThat(testee.retrieve(key1)).satisfies(actual -> checkMailEquality(actual, mail));
     }
 
+
+    @Test
+    default void retrieveShouldReturnAllMailProperties() throws Exception {
+        MailRepository testee = retrieveRepository();
+        String key1 = "mail1";
+        MailImpl mail = createMail(key1);
+        mail.setErrorMessage("Error message");
+        mail.setRemoteAddr("172.5.2.3");
+        mail.setRemoteHost("smtp@domain.com");
+        mail.setLastUpdated(new Date());
+        mail.addSpecificHeaderForRecipient(PerRecipientHeaders.Header.builder()
+            .name("name")
+            .value("value")
+            .build(),
+            new MailAddress("bob@domain.com"));
+
+        testee.store(mail);
+
+        assertThat(testee.retrieve(key1)).satisfies(actual -> checkMailEquality(actual, mail));
+    }
+
     @Test
     default void newlyCreatedRepositoryShouldNotContainAnyMail() throws Exception {
         MailRepository testee = retrieveRepository();


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