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 ad...@apache.org on 2018/08/30 13:15:55 UTC

[13/26] james-project git commit: JAMES-2529 Factorize RECIPIENT tests with other fields

JAMES-2529 Factorize RECIPIENT tests with other fields


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

Branch: refs/heads/master
Commit: c6a6e9769bb0953fdb3e5781d865296dd700c12c
Parents: 8b1c70a
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Aug 30 13:57:16 2018 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Thu Aug 30 15:07:03 2018 +0200

----------------------------------------------------------------------
 .../jmap/mailet/filter/JMAPFilteringTest.java   | 322 ++++++-------------
 1 file changed, 106 insertions(+), 216 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c6a6e976/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/filter/JMAPFilteringTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/filter/JMAPFilteringTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/filter/JMAPFilteringTest.java
index 29d6bca..0aed4e4 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/filter/JMAPFilteringTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/filter/JMAPFilteringTest.java
@@ -31,7 +31,6 @@ import static org.apache.james.jmap.api.filtering.Rule.Condition.Field.SUBJECT;
 import static org.apache.james.jmap.api.filtering.Rule.Condition.Field.TO;
 import static org.apache.james.jmap.mailet.filter.ActionApplier.DELIVERY_PATH_PREFIX;
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.BOU;
-import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.CC_HEADER;
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.EMPTY;
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.FRED_MARTIN_FULLNAME;
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.FRED_MARTIN_FULL_SCRAMBLED_ADDRESS;
@@ -40,7 +39,6 @@ import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.RECIPIENT
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.RECIPIENT_1_USERNAME;
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.SCRAMBLED_SUBJECT;
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.SHOULD_NOT_MATCH;
-import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.TO_HEADER;
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.UNFOLDED_USERNAME;
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.UNSCRAMBLED_SUBJECT;
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.USER_1_ADDRESS;
@@ -51,7 +49,6 @@ import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.USER_2_AD
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.USER_2_FULL_ADDRESS;
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.USER_3_ADDRESS;
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.USER_3_FULL_ADDRESS;
-import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.USER_3_USERNAME;
 import static org.apache.james.jmap.mailet.filter.JMAPFilteringFixture.USER_4_FULL_ADDRESS;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatCode;
@@ -63,9 +60,11 @@ import java.util.stream.Stream;
 import org.apache.james.core.User;
 import org.apache.james.core.builder.MimeMessageBuilder;
 import org.apache.james.jmap.api.filtering.Rule;
+import org.apache.james.jmap.api.filtering.Rule.Condition.Field;
 import org.apache.james.jmap.mailet.filter.JMAPFilteringExtension.JMAPFilteringTestSystem;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.util.StreamUtils;
+import org.apache.mailet.base.RFC2822Headers;
 import org.apache.mailet.base.test.FakeMail;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -133,13 +132,6 @@ class JMAPFilteringTest {
             return this;
         }
 
-        public FilteringArgumentBuilder headerForField(String headerValue) {
-            Preconditions.checkState(field.isPresent(), "field should be set first");
-
-            mimeMessageBuilder.addHeader(field.get().asString(), headerValue);
-            return this;
-        }
-
         public FilteringArgumentBuilder subject(String subject) {
             mimeMessageBuilder.setSubject(subject);
             return this;
@@ -197,121 +189,97 @@ class JMAPFilteringTest {
             .field(field);
     }
 
+    static class FieldAndHeader {
+        private final Rule.Condition.Field field;
+        private final String headerName;
+
+        public FieldAndHeader(Rule.Condition.Field field, String headerName) {
+            this.field = field;
+            this.headerName = headerName;
+        }
+    }
+
+    public static final ImmutableList<FieldAndHeader> ADDRESS_TESTING_COMBINATION = ImmutableList.of(
+        new FieldAndHeader(Field.FROM, RFC2822Headers.FROM),
+        new FieldAndHeader(Field.TO, RFC2822Headers.TO),
+        new FieldAndHeader(Field.CC, RFC2822Headers.CC),
+        new FieldAndHeader(Field.RECIPIENT, RFC2822Headers.TO),
+        new FieldAndHeader(Field.RECIPIENT, RFC2822Headers.CC));
+
     static Stream<Arguments> exactlyEqualsTestSuite() {
         return StreamUtils.flatten(
-            Stream.of(FROM, TO, CC)
-                .flatMap(headerField -> Stream.of(
-                    argumentBuilder(headerField)
+            ADDRESS_TESTING_COMBINATION
+                .stream()
+                .flatMap(fieldAndHeader -> Stream.of(
+                    argumentBuilder(fieldAndHeader.field)
                         .description("full address value")
-                        .headerForField(USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_FULL_ADDRESS)
                         .valueToMatch(USER_1_USERNAME),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("full address value (different case)")
-                        .headerForField(USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_FULL_ADDRESS)
                         .valueToMatch(USER_1_USERNAME.toUpperCase(Locale.ENGLISH)),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("address only value")
-                        .headerForField(USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_FULL_ADDRESS)
                         .valueToMatch(USER_1_ADDRESS),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("address only value (different case)")
-                        .headerForField(USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_FULL_ADDRESS)
                         .valueToMatch(USER_1_ADDRESS.toUpperCase(Locale.ENGLISH)),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("personal only value")
-                        .headerForField(USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_FULL_ADDRESS)
                         .valueToMatch(USER_1_FULL_ADDRESS),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("personal only value (different case)")
-                        .headerForField(USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_FULL_ADDRESS)
                         .valueToMatch(USER_1_FULL_ADDRESS.toUpperCase()),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("personal header should match personal")
-                        .headerForField(USER_1_USERNAME)
+                        .header(fieldAndHeader.headerName, USER_1_USERNAME)
                         .valueToMatch(USER_1_USERNAME),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("address header should match address")
-                        .headerForField(USER_1_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_ADDRESS)
                         .valueToMatch(USER_1_ADDRESS),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("multiple headers")
-                        .headerForField(USER_1_FULL_ADDRESS)
-                        .headerForField(USER_2_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_2_FULL_ADDRESS)
                         .valueToMatch(USER_1_USERNAME),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("scrambled content")
-                        .headerForField(FRED_MARTIN_FULL_SCRAMBLED_ADDRESS)
+                        .header(fieldAndHeader.headerName, FRED_MARTIN_FULL_SCRAMBLED_ADDRESS)
                         .valueToMatch(FRED_MARTIN_FULLNAME),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("folded content")
-                        .headerForField(USER_1_AND_UNFOLDED_USER_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_AND_UNFOLDED_USER_FULL_ADDRESS)
                         .valueToMatch(UNFOLDED_USERNAME),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("folded content (different case)")
-                        .headerForField(USER_1_AND_UNFOLDED_USER_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_AND_UNFOLDED_USER_FULL_ADDRESS)
                         .valueToMatch(UNFOLDED_USERNAME.toUpperCase()),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("invalid address, personal match")
-                        .headerForField("Benoit <invalid>")
+                        .header(fieldAndHeader.headerName, "Benoit <invalid>")
                         .valueToMatch("Benoit"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("invalid address, address match")
-                        .headerForField("Benoit <invalid>")
+                        .header(fieldAndHeader.headerName, "Benoit <invalid>")
                         .valueToMatch("invalid"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("invalid address, full match")
-                        .headerForField("Benoit <invalid>")
+                        .header(fieldAndHeader.headerName, "Benoit <invalid>")
                         .valueToMatch("Benoit <invalid>"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("invalid header, full match")
-                        .headerForField("Benoit <invalid")
+                        .header(fieldAndHeader.headerName, "Benoit <invalid")
                         .valueToMatch("Benoit <invalid")
                     ).map(FilteringArgumentBuilder::build)),
-            Stream.of(TO_HEADER, CC_HEADER)
-                .flatMap(headerName -> Stream.of(
-                    argumentBuilder(RECIPIENT)
-                        .description("full address " + headerName + " header")
-                        .header(headerName, USER_3_FULL_ADDRESS)
-                        .valueToMatch(USER_3_FULL_ADDRESS),
-                    argumentBuilder(RECIPIENT)
-                        .description("full address " + headerName + " header (different case)")
-                        .header(headerName, USER_3_FULL_ADDRESS)
-                        .valueToMatch(USER_3_FULL_ADDRESS.toUpperCase(Locale.ENGLISH)),
-                    argumentBuilder(RECIPIENT)
-                        .description("address only " + headerName + " header")
-                        .header(headerName, USER_3_FULL_ADDRESS)
-                        .valueToMatch(USER_3_ADDRESS),
-                    argumentBuilder(RECIPIENT)
-                        .description("personal only " + headerName + " header")
-                        .header(headerName, USER_3_FULL_ADDRESS)
-                        .valueToMatch(USER_3_USERNAME),
-                    argumentBuilder(RECIPIENT)
-                        .description("scrambled content in " + headerName + " header")
-                        .header(headerName, FRED_MARTIN_FULL_SCRAMBLED_ADDRESS)
-                        .valueToMatch(FRED_MARTIN_FULLNAME),
-                    argumentBuilder(RECIPIENT)
-                        .description("folded content in " + headerName + " header")
-                        .header(headerName, USER_1_AND_UNFOLDED_USER_FULL_ADDRESS)
-                        .valueToMatch(UNFOLDED_USERNAME),
-                    argumentBuilder(RECIPIENT)
-                        .description("invalid " + headerName + " address, personal match")
-                        .header(headerName, "Benoit <invalid>")
-                        .valueToMatch("Benoit"),
-                    argumentBuilder(RECIPIENT)
-                        .description("invalid " + headerName + " address, address match")
-                        .header(headerName, "Benoit <invalid>")
-                        .valueToMatch("invalid"),
-                    argumentBuilder(RECIPIENT)
-                        .description("invalid " + headerName + " address, full match")
-                        .header(headerName, "Benoit <invalid>")
-                        .valueToMatch("Benoit <invalid>"),
-                    argumentBuilder(RECIPIENT)
-                        .description("invalid " + headerName + ", full match")
-                        .header(headerName, "Benoit <invalid")
-                        .valueToMatch("Benoit <invalid"))
-                    .map(FilteringArgumentBuilder::build)),
             Stream.of(
-                argumentBuilder().description("multiple to and cc headers").field(RECIPIENT)
+                argumentBuilder().description("multiple to and cc headers")
+                    .field(RECIPIENT)
                     .ccRecipient(USER_1_FULL_ADDRESS)
                     .ccRecipient(USER_2_FULL_ADDRESS)
                     .toRecipient(USER_3_FULL_ADDRESS)
@@ -330,119 +298,68 @@ class JMAPFilteringTest {
 
     private static Stream<Arguments> containsArguments() {
         return StreamUtils.flatten(
-            Stream.of(FROM, TO, CC)
-                .flatMap(headerField -> Stream.of(
-                    argumentBuilder(headerField)
+            ADDRESS_TESTING_COMBINATION.stream()
+                .flatMap(fieldAndHeader -> Stream.of(
+                    argumentBuilder(fieldAndHeader.field)
                         .description("full address value (partial matching)")
-                        .headerForField(USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_FULL_ADDRESS)
                         .valueToMatch("ser1 <"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("full address value (partial matching, different case)")
-                        .headerForField(USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_FULL_ADDRESS)
                         .valueToMatch("SER1 <"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("address only value (partial matching)")
-                        .headerForField(USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_FULL_ADDRESS)
                         .valueToMatch("ser1@jam"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("personal only value (partial matching)")
-                        .headerForField(USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName,USER_1_FULL_ADDRESS)
                         .valueToMatch("ser1"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("address header & match in the address (partial matching)")
-                        .headerForField(USER_1_ADDRESS)
+                        .header(fieldAndHeader.headerName,USER_1_ADDRESS)
                         .valueToMatch("ser1@jam"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("raw value matching (partial matching)")
-                        .headerForField(GA_BOU_ZO_MEU_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName,GA_BOU_ZO_MEU_FULL_ADDRESS)
                         .valueToMatch(BOU),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("multiple headers (partial matching)")
-                        .headerForField(USER_1_FULL_ADDRESS)
-                        .headerForField(USER_2_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName,USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName,USER_2_FULL_ADDRESS)
                         .valueToMatch("ser1@jam"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("scrambled content (partial matching)")
-                        .headerForField(FRED_MARTIN_FULL_SCRAMBLED_ADDRESS)
+                        .header(fieldAndHeader.headerName,FRED_MARTIN_FULL_SCRAMBLED_ADDRESS)
                         .valueToMatch("déric MAR"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("folded content (partial matching)")
-                        .headerForField(USER_1_AND_UNFOLDED_USER_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName,USER_1_AND_UNFOLDED_USER_FULL_ADDRESS)
                         .valueToMatch("ded_us"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("invalid address, personal match (partial matching)")
-                        .headerForField("Benoit <invalid>")
+                        .header(fieldAndHeader.headerName,"Benoit <invalid>")
                         .valueToMatch("enoi"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("invalid address, address match (partial matching)")
-                        .headerForField("Benoit <invalid>")
+                        .header(fieldAndHeader.headerName,"Benoit <invalid>")
                         .valueToMatch("nvali"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("invalid address, full match (partial matching)")
-                        .headerForField("Benoit <invalid>")
+                        .header(fieldAndHeader.headerName,"Benoit <invalid>")
                         .valueToMatch("enoit <invali"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("invalid header, full match (partial matching)")
-                        .headerForField("Benoit <invalid")
+                        .header(fieldAndHeader.headerName,"Benoit <invalid")
                         .valueToMatch("enoit <invali"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("invalid header, personal match (partial matching)")
-                        .headerForField("Benoit <invalid")
+                        .header(fieldAndHeader.headerName,"Benoit <invalid")
                         .valueToMatch("enoi"),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("invalid header, address match (partial matching)")
-                        .headerForField("Benoit <invalid")
-                        .valueToMatch("nvali"))
-                    .map(FilteringArgumentBuilder::build)),
-            Stream.of(TO_HEADER, CC_HEADER)
-                .flatMap(headerName -> Stream.of(
-                    argumentBuilder(RECIPIENT)
-                        .description("full address " + headerName + " header (partial matching)")
-                        .header(headerName, USER_3_FULL_ADDRESS)
-                        .valueToMatch("ser3 <us"),
-                    argumentBuilder(RECIPIENT)
-                        .description("full address " + headerName + " header (partial matching, different case)")
-                        .header(headerName, USER_3_FULL_ADDRESS)
-                        .valueToMatch("SER3 <US"),
-                    argumentBuilder(RECIPIENT)
-                        .description("address only " + headerName + " header (partial matching)")
-                        .header(headerName, USER_3_FULL_ADDRESS)
-                        .valueToMatch("ser3@jam"),
-                    argumentBuilder(RECIPIENT)
-                        .description("personal only " + headerName + " header (partial matching)")
-                        .header(headerName, USER_3_FULL_ADDRESS)
-                        .valueToMatch("ser3"),
-                    argumentBuilder(RECIPIENT)
-                        .description("scrambled content in " + headerName + " header (partial matching)")
-                        .header(headerName, FRED_MARTIN_FULL_SCRAMBLED_ADDRESS)
-                        .valueToMatch("déric MAR"),
-                    argumentBuilder(RECIPIENT)
-                        .description("folded content in " + headerName + " header (partial matching)")
-                        .header(headerName, USER_1_AND_UNFOLDED_USER_FULL_ADDRESS)
-                        .valueToMatch("folded_us"),
-                    argumentBuilder(RECIPIENT)
-                        .description("invalid address, personal match (partial matching)")
-                        .header(headerName, "Benoit <invalid>")
-                        .valueToMatch("enoi"),
-                    argumentBuilder(RECIPIENT)
-                        .description("invalid address, address match (partial matching)")
-                        .header(headerName, "Benoit <invalid>")
-                        .valueToMatch("nvali"),
-                    argumentBuilder(RECIPIENT)
-                        .description("invalid address, full match (partial matching)")
-                        .header(headerName, "Benoit <invalid>")
-                        .valueToMatch("enoit <invali"),
-                    argumentBuilder(RECIPIENT)
-                        .description("invalid header, full match (partial matching)")
-                        .header(headerName, "Benoit <invalid")
-                        .valueToMatch("enoit <invali"),
-                    argumentBuilder(RECIPIENT)
-                        .description("invalid header, personal match (partial matching)")
-                        .header(headerName, "Benoit <invalid")
-                        .valueToMatch("enoi"),
-                    argumentBuilder(RECIPIENT)
-                        .description("invalid header, address match (partial matching)")
-                        .header(headerName, "Benoit <invalid")
+                        .header(fieldAndHeader.headerName,"Benoit <invalid")
                         .valueToMatch("nvali"))
                     .map(FilteringArgumentBuilder::build)),
             Stream.of(
@@ -464,63 +381,36 @@ class JMAPFilteringTest {
 
     static Stream<Arguments> notContainsTestSuite() {
         return StreamUtils.flatten(
-            Stream.of(FROM, TO, CC)
-                .flatMap(headerField -> Stream.of(
-                    argumentBuilder(headerField)
+            ADDRESS_TESTING_COMBINATION.stream()
+                .flatMap(fieldAndHeader -> Stream.of(
+                    argumentBuilder(fieldAndHeader.field)
                         .description("normal content")
-                        .headerForField(USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_FULL_ADDRESS)
                         .valueToMatch(SHOULD_NOT_MATCH),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("multiple headers")
-                        .headerForField(USER_1_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_FULL_ADDRESS)
                         .from(USER_2_FULL_ADDRESS)
                         .valueToMatch(SHOULD_NOT_MATCH),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("scrambled content")
-                        .headerForField(FRED_MARTIN_FULL_SCRAMBLED_ADDRESS)
+                        .header(fieldAndHeader.headerName, FRED_MARTIN_FULL_SCRAMBLED_ADDRESS)
                         .valueToMatch(SHOULD_NOT_MATCH),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("folded content")
-                        .headerForField(USER_1_AND_UNFOLDED_USER_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, USER_1_AND_UNFOLDED_USER_FULL_ADDRESS)
                         .valueToMatch(SHOULD_NOT_MATCH),
-                    argumentBuilder(headerField)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("empty content")
-                        .headerForField(EMPTY)
-                        .valueToMatch(SHOULD_NOT_MATCH),
-                    argumentBuilder(headerField)
-                        .description("invalid address, personal match")
-                        .headerForField("Benoit <invalid>")
-                        .valueToMatch(SHOULD_NOT_MATCH),
-                    argumentBuilder(headerField)
-                        .description("invalid header, full match")
-                        .headerForField("Benoit <invalid")
-                        .valueToMatch(SHOULD_NOT_MATCH))
-                    .map(FilteringArgumentBuilder::build)),
-            Stream.of(TO_HEADER, CC_HEADER)
-                .flatMap(headerName -> Stream.of(
-                    argumentBuilder(RECIPIENT)
-                        .description("normal content " + headerName + " header")
-                        .header(headerName, USER_3_FULL_ADDRESS)
-                        .valueToMatch(SHOULD_NOT_MATCH),
-                    argumentBuilder(RECIPIENT)
-                        .description("scrambled content in " + headerName + " header")
-                        .field(RECIPIENT).header(headerName, FRED_MARTIN_FULL_SCRAMBLED_ADDRESS)
-                        .valueToMatch(SHOULD_NOT_MATCH),
-                    argumentBuilder(RECIPIENT)
-                        .description("folded content in " + headerName + " header")
-                        .header(headerName, USER_1_AND_UNFOLDED_USER_FULL_ADDRESS)
-                        .valueToMatch(SHOULD_NOT_MATCH),
-                    argumentBuilder(RECIPIENT)
-                        .description("bcc header")
-                        .header(headerName, USER_1_AND_UNFOLDED_USER_FULL_ADDRESS)
+                        .header(fieldAndHeader.headerName, EMPTY)
                         .valueToMatch(SHOULD_NOT_MATCH),
-                    argumentBuilder(RECIPIENT)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("invalid address, personal match")
-                        .header(headerName, "Benoit <invalid>")
+                        .header(fieldAndHeader.headerName, "Benoit <invalid>")
                         .valueToMatch(SHOULD_NOT_MATCH),
-                    argumentBuilder(RECIPIENT)
+                    argumentBuilder(fieldAndHeader.field)
                         .description("invalid header, full match")
-                        .header(headerName, "Benoit <invalid")
+                        .header(fieldAndHeader.headerName, "Benoit <invalid")
                         .valueToMatch(SHOULD_NOT_MATCH))
                     .map(FilteringArgumentBuilder::build)),
             Stream.of(


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