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