JAMES-1773 Complete HasHeaderTest What was not tested ?
- multi-conditions - header present multiples times (buggy) - header with value specified Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1b9a1075 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1b9a1075 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1b9a1075 Branch: refs/heads/master Commit: 1b9a1075d9baf5aea358eb40858c27118e571c3a Parents: c94a99f Author: Benoit Tellier <[email protected]> Authored: Tue Aug 9 11:46:14 2016 +0700 Committer: Benoit Tellier <[email protected]> Committed: Thu Aug 18 17:18:15 2016 +0700 ---------------------------------------------------------------------- .../james/transport/matchers/HasHeaderTest.java | 80 ++++++++++++++++++++ 1 file changed, 80 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/1b9a1075/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderTest.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderTest.java index 6b40cec..ca7ed5d 100644 --- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderTest.java +++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/HasHeaderTest.java @@ -22,9 +22,13 @@ package org.apache.james.transport.matchers; import static org.assertj.core.api.Assertions.assertThat; +import java.util.Properties; + import javax.mail.MessagingException; +import javax.mail.Session; import javax.mail.internet.MimeMessage; +import org.apache.mailet.Mail; import org.apache.mailet.Matcher; import org.apache.mailet.base.test.FakeMail; import org.apache.mailet.base.test.FakeMailContext; @@ -38,6 +42,7 @@ public class HasHeaderTest { private static final String HEADER_NAME_1 = "JUNIT"; private static final String HEADER_NAME_2 = "defaultHeaderName"; private static final String HEADER_VALUE_1 = "defaultHeaderValue"; + private static final String HEADER_VALUE_2 = "defaultHeaderValue2"; private FakeMail mockedMail; private Matcher matcher; @@ -62,4 +67,79 @@ public class HasHeaderTest { assertThat(matcher.match(mockedMail)).isNull(); } + + @Test + public void matchShouldReturnAddressesWhenGoodHeaderNameAndValue() throws MessagingException { + matcher.init(new FakeMatcherConfig("HasHeader=" + HEADER_NAME_1 + "=" + HEADER_VALUE_1, new FakeMailContext())); + + assertThat(matcher.match(mockedMail)).containsAll(mockedMail.getRecipients()); + } + + @Test + public void matchShouldReturnNullWhenWrongValue() throws MessagingException { + matcher.init(new FakeMatcherConfig("HasHeader=" + HEADER_NAME_1 + "=" + HEADER_VALUE_2, new FakeMailContext())); + + assertThat(matcher.match(mockedMail)).isNull(); + } + + @Test + public void matchShouldReturnNullWhenWrongHeaderNameWithValueSpecified() throws MessagingException { + matcher.init(new FakeMatcherConfig("HasHeader=" + HEADER_NAME_2 + "=" + HEADER_VALUE_2, new FakeMailContext())); + + assertThat(matcher.match(mockedMail)).isNull(); + } + + @Test + public void matchShouldIgnoreExtraEquals() throws MessagingException { + matcher.init(new FakeMatcherConfig("HasHeader=" + HEADER_NAME_1 + "=" + HEADER_VALUE_1 + "=any", new FakeMailContext())); + + assertThat(matcher.match(mockedMail)).containsAll(mockedMail.getRecipients()); + } + + @Test + public void matchShouldNotMatchMailsWithNoHeaderWhenValueSpecified() throws MessagingException { + matcher.init(new FakeMatcherConfig("HasHeader=" + HEADER_NAME_1 + "=" + HEADER_VALUE_1, new FakeMailContext())); + Mail mail = MailUtil.createMockMail2Recipients(MailUtil.createMimeMessage()); + + assertThat(matcher.match(mail)).isNull(); + } + + @Test + public void matchShouldNotMatchMailsWithNoHeaderWhenValueNotSpecified() throws MessagingException { + matcher.init(new FakeMatcherConfig("HasHeader=" + HEADER_NAME_1, new FakeMailContext())); + Mail mail = MailUtil.createMockMail2Recipients(MailUtil.createMimeMessage()); + + assertThat(matcher.match(mail)).isNull(); + } + + @Test + public void matchShouldReturnNullWhenOneConditionIsNotTrue() throws MessagingException { + matcher.init(new FakeMatcherConfig("HasHeader=" + HEADER_NAME_1 + "+" + HEADER_NAME_2, new FakeMailContext())); + + assertThat(matcher.match(mockedMail)).isNull(); + } + + @Test + public void matchShouldReturnAddressesWhenAllConditionsMatch() throws MessagingException { + matcher.init(new FakeMatcherConfig("HasHeader=" + HEADER_NAME_1 + "+" + HEADER_NAME_2, new FakeMailContext())); + MimeMessage mimeMessage = new MimeMessage(Session.getDefaultInstance(new Properties())); + mimeMessage.addHeader(HEADER_NAME_1, HEADER_VALUE_1); + mimeMessage.addHeader(HEADER_NAME_2, HEADER_VALUE_2); + mimeMessage.saveChanges(); + Mail mail = MailUtil.createMockMail2Recipients(mimeMessage); + + assertThat(matcher.match(mail)).containsAll(mockedMail.getRecipients()); + } + + @Test + public void matchShouldFindTheRightHeaderLineWhenUsedWithValue() throws MessagingException { + matcher.init(new FakeMatcherConfig("HasHeader=" + HEADER_NAME_1 + "=" + HEADER_VALUE_2, new FakeMailContext())); + MimeMessage mimeMessage = new MimeMessage(Session.getDefaultInstance(new Properties())); + mimeMessage.addHeader(HEADER_NAME_1, HEADER_VALUE_1); + mimeMessage.addHeader(HEADER_NAME_1, HEADER_VALUE_2); + mimeMessage.saveChanges(); + Mail mail = MailUtil.createMockMail2Recipients(mimeMessage); + + assertThat(matcher.match(mail)).containsAll(mockedMail.getRecipients()); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
