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 c1839ca8ecffbaad552d0ec7e9b0bb135e15211e
Author: Benoit Tellier <btell...@linagora.com>
AuthorDate: Thu Mar 12 17:59:49 2020 +0700

    JAMES-3112 Fluentify CanSendFromContact domain mapping creation
---
 .../rrt/lib/AliasReverseResolverContract.java      |  7 ++----
 .../apache/james/rrt/lib/CanSendFromContract.java  | 29 +++++++++++++++-------
 .../apache/james/rrt/lib/CanSendFromImplTest.java  | 21 ++++++++++------
 3 files changed, 35 insertions(+), 22 deletions(-)

diff --git 
a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/AliasReverseResolverContract.java
 
b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/AliasReverseResolverContract.java
index ae60fb9..891fe46 100644
--- 
a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/AliasReverseResolverContract.java
+++ 
b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/AliasReverseResolverContract.java
@@ -56,17 +56,14 @@ public interface AliasReverseResolverContract {
         void to(Domain domain) throws Exception;
     }
 
-    default CanSendFromContract.RequireUserName redirectUser(Username alias) {
+    default RequireUserName redirectUser(Username alias) {
         return user -> addAliasMapping(alias, user);
     }
 
-    default CanSendFromContract.RequireDomain redirectDomain(Domain alias) {
+    default RequireDomain redirectDomain(Domain alias) {
         return domain -> addDomainAlias(alias, domain);
     }
 
-    default CanSendFromContract.RequireUserName redirectGroup(String group) {
-        return user -> addGroupMapping(group, user);
-    }
     @Test
     default void listAddressesShouldContainOnlyUserAddressWhenUserHasNoAlias() 
throws Exception {
         assertThat(aliasReverseResolver().listAddresses(USER))
diff --git 
a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/CanSendFromContract.java
 
b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/CanSendFromContract.java
index b2511fe..91398cb 100644
--- 
a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/CanSendFromContract.java
+++ 
b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/CanSendFromContract.java
@@ -41,9 +41,7 @@ public interface CanSendFromContract {
 
     void addAliasMapping(Username alias, Username user) throws Exception;
 
-    void addDomainAlias(Domain alias, Domain domain) throws Exception;
-
-    void addDomainMapping(Domain alias, Domain domain) throws Exception;
+    void addDomainMapping(Domain alias, Domain domain, Mapping.Type type) 
throws Exception;
 
     void addGroupMapping(String group, Username user) throws Exception;
 
@@ -54,7 +52,20 @@ public interface CanSendFromContract {
 
     @FunctionalInterface
     interface RequireDomain {
-        void to(Domain domain) throws Exception;
+        RequireType to(Domain domain) throws Exception;
+    }
+
+    @FunctionalInterface
+    interface RequireType {
+        void withType(Mapping.Type mappingType) throws Exception;
+
+        default void asAlias() throws Exception {
+            withType(Mapping.Type.DomainAlias);
+        };
+
+        default void asMapping() throws Exception {
+            withType(Mapping.Type.Domain);
+        }
     }
 
     default RequireUserName redirectUser(Username alias) {
@@ -62,7 +73,7 @@ public interface CanSendFromContract {
     }
 
     default RequireDomain redirectDomain(Domain alias) {
-        return domain -> addDomainAlias(alias, domain);
+        return domain -> type -> addDomainMapping(alias, domain, type);
     }
 
     default RequireUserName redirectGroup(String group) {
@@ -136,7 +147,7 @@ public interface CanSendFromContract {
     default void 
userCanSendFromShouldBeTrueWhenSenderIsAnAliasOfTheDomainUser() throws 
Exception {
         Username fromUser = USER.withOtherDomain(OTHER_DOMAIN);
 
-        redirectDomain(OTHER_DOMAIN).to(DOMAIN);
+        redirectDomain(OTHER_DOMAIN).to(DOMAIN).asAlias();
 
         assertThat(canSendFrom().userCanSendFrom(USER, fromUser)).isTrue();
     }
@@ -145,7 +156,7 @@ public interface CanSendFromContract {
     default void userCanSendFromShouldBeFalseWhenDomainMapping() throws 
Exception {
         Username fromUser = USER.withOtherDomain(OTHER_DOMAIN);
 
-        addDomainMapping(OTHER_DOMAIN, DOMAIN);
+        redirectDomain(OTHER_DOMAIN).to(DOMAIN).asMapping();
 
         assertThat(canSendFrom().userCanSendFrom(USER, fromUser)).isFalse();
     }
@@ -195,7 +206,7 @@ public interface CanSendFromContract {
     default void 
allValidFromAddressesShouldContainUserAddressAndAnAliasOfTheDomainUser() throws 
Exception {
         Username fromUser = USER.withOtherDomain(OTHER_DOMAIN);
 
-        redirectDomain(OTHER_DOMAIN).to(DOMAIN);
+        redirectDomain(OTHER_DOMAIN).to(DOMAIN).asAlias();
 
         assertThat(canSendFrom().allValidFromAddressesForUser(USER))
             .containsExactlyInAnyOrder(USER.asMailAddress(), 
fromUser.asMailAddress());
@@ -205,7 +216,7 @@ public interface CanSendFromContract {
     default void 
allValidFromAddressesShouldContainUserAddressAndAnAliasOfTheDomainUserFromAnotherDomain()
 throws Exception {
         Username userAliasOtherDomain = 
USER_ALIAS.withOtherDomain(OTHER_DOMAIN);
 
-        redirectDomain(OTHER_DOMAIN).to(DOMAIN);
+        redirectDomain(OTHER_DOMAIN).to(DOMAIN).asAlias();
         redirectUser(userAliasOtherDomain).to(USER);
 
         Username userAliasMainDomain = USER_ALIAS.withOtherDomain(DOMAIN);
diff --git 
a/server/data/data-memory/src/test/java/org/apache/james/rrt/lib/CanSendFromImplTest.java
 
b/server/data/data-memory/src/test/java/org/apache/james/rrt/lib/CanSendFromImplTest.java
index e5161bd..55e339f 100644
--- 
a/server/data/data-memory/src/test/java/org/apache/james/rrt/lib/CanSendFromImplTest.java
+++ 
b/server/data/data-memory/src/test/java/org/apache/james/rrt/lib/CanSendFromImplTest.java
@@ -20,13 +20,14 @@ package org.apache.james.rrt.lib;
 
 import static org.mockito.Mockito.mock;
 
+import org.apache.commons.lang3.NotImplementedException;
 import org.apache.james.core.Domain;
 import org.apache.james.core.Username;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.domainlist.lib.DomainListConfiguration;
 import org.apache.james.domainlist.memory.MemoryDomainList;
-import org.apache.james.rrt.api.CanSendFrom;
 import org.apache.james.rrt.api.AliasReverseResolver;
+import org.apache.james.rrt.api.CanSendFrom;
 import org.apache.james.rrt.api.RecipientRewriteTableConfiguration;
 import org.apache.james.rrt.memory.MemoryRecipientRewriteTable;
 import org.junit.jupiter.api.BeforeEach;
@@ -65,13 +66,17 @@ public class CanSendFromImplTest implements 
CanSendFromContract {
     }
 
     @Override
-    public void addDomainAlias(Domain alias, Domain domain) throws Exception {
-        
recipientRewriteTable.addDomainAliasMapping(MappingSource.fromDomain(alias), 
domain);
-    }
-
-    @Override
-    public void addDomainMapping(Domain alias, Domain domain) throws Exception 
{
-        
recipientRewriteTable.addDomainMapping(MappingSource.fromDomain(alias), domain);
+    public void addDomainMapping(Domain alias, Domain domain, Mapping.Type 
mappingType) throws Exception {
+        switch (mappingType) {
+            case Domain:
+                
recipientRewriteTable.addDomainMapping(MappingSource.fromDomain(alias), domain);
+                break;
+            case DomainAlias:
+                
recipientRewriteTable.addDomainAliasMapping(MappingSource.fromDomain(alias), 
domain);
+                break;
+            default:
+                throw new NotImplementedException(mappingType + " is not 
supported");
+        }
     }
 
     @Override


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

Reply via email to