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 <[email protected]> Authored: Mon Jan 15 10:31:14 2018 +0700 Committer: Matthieu Baechler <[email protected]> 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("[email protected]"), new MailAddress("[email protected]")); MailAddress sender = new MailAddress("[email protected]"); - 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("[email protected]"); + mail.setLastUpdated(new Date()); + mail.addSpecificHeaderForRecipient(PerRecipientHeaders.Header.builder() + .name("name") + .value("value") + .build(), + new MailAddress("[email protected]")); + + 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: [email protected] For additional commands, e-mail: [email protected]
