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 35042563b25..8bd9209e8e5 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 @@ -114,10 +114,18 @@ default void listAddressesShouldContainUserAddressAndAnAliasOfTheDomainUserFromA redirectDomain(OTHER_DOMAIN).to(DOMAIN); redirectUser(userAliasOtherDomain).to(USER); - Username userAliasMainDomain = USER_ALIAS.withOtherDomain(DOMAIN); Username userOtherDomain = USER.withOtherDomain(OTHER_DOMAIN); assertThat(Flux.from(aliasReverseResolver().listAddresses(USER)).toStream()) - .containsExactlyInAnyOrder(USER.asMailAddress(), userAliasOtherDomain.asMailAddress(), userAliasMainDomain.asMailAddress(), userOtherDomain.asMailAddress()); + .containsExactlyInAnyOrder(USER.asMailAddress(), userAliasOtherDomain.asMailAddress(), userOtherDomain.asMailAddress()); + } + + @Test + default void listAddressesShouldNotStampAliasLocalPartOntoUserDomainWhenNoDomainAlias() throws Exception { + Username userAliasOtherDomain = USER_ALIAS.withOtherDomain(OTHER_DOMAIN); + redirectUser(userAliasOtherDomain).to(USER); + + assertThat(Flux.from(aliasReverseResolver().listAddresses(USER)).toStream()) + .containsExactlyInAnyOrder(USER.asMailAddress(), userAliasOtherDomain.asMailAddress()); } @Test 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 1127efd7d87..c37d5bcf302 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 @@ -221,10 +221,18 @@ default void allValidFromAddressesShouldContainUserAddressAndAnAliasOfTheDomainU redirectDomain(OTHER_DOMAIN).to(DOMAIN).asAlias(); redirectUser(userAliasOtherDomain).to(USER); - Username userAliasMainDomain = USER_ALIAS.withOtherDomain(DOMAIN); Username userOtherDomain = USER.withOtherDomain(OTHER_DOMAIN); assertThat(Flux.from(canSendFrom().allValidFromAddressesForUser(USER)).toStream()) - .containsExactlyInAnyOrder(USER.asMailAddress(), userAliasOtherDomain.asMailAddress(), userAliasMainDomain.asMailAddress(), userOtherDomain.asMailAddress()); + .containsExactlyInAnyOrder(USER.asMailAddress(), userAliasOtherDomain.asMailAddress(), userOtherDomain.asMailAddress()); + } + + @Test + default void allValidFromAddressesShouldNotStampAliasLocalPartOntoUserDomainWhenNoDomainAlias() throws Exception { + Username userAliasOtherDomain = USER_ALIAS.withOtherDomain(OTHER_DOMAIN); + redirectUser(userAliasOtherDomain).to(USER); + + assertThat(Flux.from(canSendFrom().allValidFromAddressesForUser(USER)).toStream()) + .containsExactlyInAnyOrder(USER.asMailAddress(), userAliasOtherDomain.asMailAddress()); } @Test diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AliasReverseResolverImpl.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AliasReverseResolverImpl.java index 6829097b7c4..d9990f82af4 100644 --- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AliasReverseResolverImpl.java +++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AliasReverseResolverImpl.java @@ -52,7 +52,7 @@ public Flux listAddresses(Username user) { CanSendFromImpl.DomainFetcher domains = domainFetcher(); return relatedAliases(user) - .flatMap(allowedUser -> user.getDomainPart() + .flatMap(allowedUser -> allowedUser.getDomainPart() .map(domain -> Flux.concat( Flux.just(allowedUser), domains.fetch(domain).map(allowedUser::withOtherDomain)))