JAMES-2642 Refactor and cleanup code for alias, group and forward integration tests
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/21cde6d2 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/21cde6d2 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/21cde6d2 Branch: refs/heads/master Commit: 21cde6d28b4b81dc9b01ccb45e2579ad4bb30e7e Parents: 1819ae1 Author: Rene Cordier <rcord...@linagora.com> Authored: Wed Jan 16 16:27:46 2019 +0700 Committer: Benoit Tellier <btell...@linagora.com> Committed: Thu Jan 17 13:49:10 2019 +0700 ---------------------------------------------------------------------- .../james/cli/probe/impl/JmxDataProbe.java | 66 ------------------ .../org/apache/james/utils/DataProbeImpl.java | 36 ---------- .../java/org/apache/james/probe/DataProbe.java | 12 ---- .../RecipientRewriteTableManagementMBean.java | 72 -------------------- .../lib/RecipientRewriteTableManagement.java | 36 ---------- .../RecipientRewriteTableIntegrationTest.java | 18 ++++- .../transport/mailets/AliasMappingTest.java | 46 +++++++++---- .../transport/mailets/GroupMappingTest.java | 5 +- .../WebAdminServerIntegrationTest.java | 43 ++++++++---- 9 files changed, 82 insertions(+), 252 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/21cde6d2/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxDataProbe.java ---------------------------------------------------------------------- diff --git a/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxDataProbe.java b/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxDataProbe.java index cb50af9..6006916 100644 --- a/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxDataProbe.java +++ b/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxDataProbe.java @@ -237,70 +237,4 @@ public class JmxDataProbe implements DataProbe, JmxProbe { virtualUserTableProxy.addDomainMapping(aliasDomain, deliveryDomain); } } - - @Override - public void addForwardMapping(String user, String domain, String address) throws Exception { - try (Closeable closeable = - MDCBuilder.create() - .addContext(MDCBuilder.PROTOCOL, JMX) - .addContext(MDCBuilder.ACTION, "addForwardMapping") - .build()) { - virtualUserTableProxy.addForwardMapping(user, domain, address); - } - } - - @Override - public void removeForwardMapping(String user, String domain, String address) throws Exception { - try (Closeable closeable = - MDCBuilder.create() - .addContext(MDCBuilder.PROTOCOL, JMX) - .addContext(MDCBuilder.ACTION, "removeForwardMapping") - .build()) { - virtualUserTableProxy.removeForwardMapping(user, domain, address); - } - } - - @Override - public void addGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception { - try (Closeable closeable = - MDCBuilder.create() - .addContext(MDCBuilder.PROTOCOL, JMX) - .addContext(MDCBuilder.ACTION, "removeForwardMapping") - .build()) { - virtualUserTableProxy.addGroupMapping(toUser, toDomain, fromAddress); - } - } - - @Override - public void removeGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception { - try (Closeable closeable = - MDCBuilder.create() - .addContext(MDCBuilder.PROTOCOL, JMX) - .addContext(MDCBuilder.ACTION, "removeForwardMapping") - .build()) { - virtualUserTableProxy.removeGroupMapping(toUser, toDomain, fromAddress); - } - } - - @Override - public void addAliasMapping(String fromAlias, String fromDomain, String toAddress) throws Exception { - try (Closeable closeable = - MDCBuilder.create() - .addContext(MDCBuilder.PROTOCOL, JMX) - .addContext(MDCBuilder.ACTION, "addAliasMapping") - .build()) { - virtualUserTableProxy.addAliasMapping(fromAlias, fromDomain, toAddress); - } - } - - @Override - public void removeAliasMapping(String fromAlias, String fromDomain, String toAddress) throws Exception { - try (Closeable closeable = - MDCBuilder.create() - .addContext(MDCBuilder.PROTOCOL, JMX) - .addContext(MDCBuilder.ACTION, "removeAliasMapping") - .build()) { - virtualUserTableProxy.removeAliasMapping(fromAlias, fromDomain, toAddress); - } - } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/21cde6d2/server/container/guice/guice-common/src/main/java/org/apache/james/utils/DataProbeImpl.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/DataProbeImpl.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/DataProbeImpl.java index e56c8b5..ec318b1 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/DataProbeImpl.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/DataProbeImpl.java @@ -144,40 +144,4 @@ public class DataProbeImpl implements GuiceProbe, DataProbe { public void addDomainAliasMapping(String aliasDomain, String deliveryDomain) throws Exception { recipientRewriteTable.addAliasDomainMapping(MappingSource.fromDomain(Domain.of(aliasDomain)), Domain.of(deliveryDomain)); } - - @Override - public void addForwardMapping(String user, String domain, String address) throws Exception { - MappingSource source = MappingSource.fromUser(user, domain); - recipientRewriteTable.addForwardMapping(source, address); - } - - @Override - public void removeForwardMapping(String user, String domain, String address) throws Exception { - MappingSource source = MappingSource.fromUser(user, domain); - recipientRewriteTable.removeForwardMapping(source, address); - } - - @Override - public void addGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception { - MappingSource source = MappingSource.fromUser(toUser, toDomain); - recipientRewriteTable.addGroupMapping(source, fromAddress); - } - - @Override - public void removeGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception { - MappingSource source = MappingSource.fromUser(toUser, toDomain); - recipientRewriteTable.removeGroupMapping(source, fromAddress); - } - - @Override - public void addAliasMapping(String fromAlias, String fromDomain, String toAddress) throws Exception { - MappingSource source = MappingSource.fromUser(fromAlias, fromDomain); - recipientRewriteTable.addAliasMapping(source, toAddress); - } - - @Override - public void removeAliasMapping(String fromAlias, String fromDomain, String toAddress) throws Exception { - MappingSource source = MappingSource.fromUser(fromAlias, fromDomain); - recipientRewriteTable.removeAliasMapping(source, toAddress); - } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/21cde6d2/server/data/data-api/src/main/java/org/apache/james/probe/DataProbe.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/main/java/org/apache/james/probe/DataProbe.java b/server/data/data-api/src/main/java/org/apache/james/probe/DataProbe.java index cdaf8fc..30d8050 100644 --- a/server/data/data-api/src/main/java/org/apache/james/probe/DataProbe.java +++ b/server/data/data-api/src/main/java/org/apache/james/probe/DataProbe.java @@ -84,16 +84,4 @@ public interface DataProbe { void removeRegexMapping(String user, String domain, String regex) throws Exception; void addDomainAliasMapping(String aliasDomain, String deliveryDomain) throws Exception; - - void addForwardMapping(String toUser, String toDomain, String fromAddress) throws Exception; - - void removeForwardMapping(String toUser, String toDomain, String fromAddress) throws Exception; - - void addGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception; - - void removeGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception; - - void addAliasMapping(String fromAlias, String fromDomain, String toAddress) throws Exception; - - void removeAliasMapping(String fromAlias, String fromDomain, String toAddress) throws Exception; } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/21cde6d2/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableManagementMBean.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableManagementMBean.java b/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableManagementMBean.java index 7afc90b..e49a162 100644 --- a/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableManagementMBean.java +++ b/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableManagementMBean.java @@ -184,76 +184,4 @@ public interface RecipientRewriteTableManagementMBean { * If an error occurred */ Map<String, Mappings> getAllMappings() throws Exception; - - /*** - * Add forward mapping - * - * @param user - * the username part of the mail address destination defined for this forward. - * @param domain - * the domain part of the mail address destination defined for this forward. - * @param address The base address of the forward. Mails for this address will be sent to the added forward destination. - * @throws Exception If an error occurred - */ - void addForwardMapping(String user, String domain, String address) throws Exception; - - /** - * Remove forward mapping - * - * @param toUser - * the username part of the mail address destination defined for this forward. - * @param toDomain - * the domain part of the mail address destination defined for this forward. - * @param fromAddress The base address of the forward. Mails for this address will no more sent to the removed forward destination. - * @throws Exception If an error occurred - */ - void removeForwardMapping(String toUser, String toDomain, String fromAddress) throws Exception; - - /*** - * Add group mapping - * - * @param user - * the username part of the mail address destination defined for this group. - * @param domain - * the domain part of the mail address destination defined for this group. - * @param address The base address of the group. Mails for this address will be sent to the added group destination. - * @throws Exception If an error occurred - */ - void addGroupMapping(String user, String domain, String address) throws Exception; - - /** - * Remove group mapping - * - * @param toUser - * the username part of the mail address destination defined for this group. - * @param toDomain - * the domain part of the mail address destination defined for this group. - * @param fromAddress The base address of the forward. Mails for this address will no more sent to the removed group destination. - * @throws Exception If an error occurred - */ - void removeGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception; - - /*** - * Add alias mapping - * - * @param fromAlias - * the name part of the alias source. - * @param fromDomain - * the domain part of the alias source. - * @param toAddress the mail address destination of the alias. Mails sent to the alias will be redirected to this destination mail. - * @throws Exception If an error occurred - */ - void addAliasMapping(String fromAlias, String fromDomain, String toAddress) throws Exception; - - /** - * Remove alias mapping - * - * @param fromAlias - * the name part of the alias source. - * @param fromDomain - * the domain part of the alias source. - * @param toAddress the mail address destination of the alias. Mails sent to the alias will not be redirected anymore to this destination mail. - * @throws Exception If an error occurred - */ - void removeAliasMapping(String fromAlias, String fromDomain, String toAddress) throws Exception; } http://git-wip-us.apache.org/repos/asf/james-project/blob/21cde6d2/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java index fe18351..2fb789c 100644 --- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java +++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java @@ -120,40 +120,4 @@ public class RecipientRewriteTableManagement extends StandardMBean implements Re entry -> entry.getKey().asString(), entry -> entry.getValue())); } - - @Override - public void addForwardMapping(String user, String domain, String address) throws RecipientRewriteTableException { - MappingSource source = MappingSource.fromUser(user, domain); - rrt.addForwardMapping(source, address); - } - - @Override - public void removeForwardMapping(String user, String domain, String address) throws RecipientRewriteTableException { - MappingSource source = MappingSource.fromUser(user, domain); - rrt.removeForwardMapping(source, address); - } - - @Override - public void addGroupMapping(String toUser, String toDomain, String fromAddress) throws RecipientRewriteTableException { - MappingSource source = MappingSource.fromUser(toUser, toDomain); - rrt.addGroupMapping(source, fromAddress); - } - - @Override - public void removeGroupMapping(String toUser, String toDomain, String fromAddress) throws RecipientRewriteTableException { - MappingSource source = MappingSource.fromUser(toUser, toDomain); - rrt.removeForwardMapping(source, fromAddress); - } - - @Override - public void addAliasMapping(String fromAlias, String fromDomain, String toAddress) throws RecipientRewriteTableException { - MappingSource source = MappingSource.fromUser(fromAlias, fromDomain); - rrt.addAliasMapping(source, toAddress); - } - - @Override - public void removeAliasMapping(String fromAlias, String fromDomain, String toAddress) throws RecipientRewriteTableException { - MappingSource source = MappingSource.fromUser(fromAlias, fromDomain); - rrt.removeAliasMapping(source, toAddress); - } } http://git-wip-us.apache.org/repos/asf/james-project/blob/21cde6d2/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java index 2b5d709..5f60ecb 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java @@ -19,6 +19,7 @@ package org.apache.james.mailets; +import static io.restassured.RestAssured.given; import static org.apache.james.mailets.configuration.Constants.DEFAULT_DOMAIN; import static org.apache.james.mailets.configuration.Constants.LOCALHOST_IP; import static org.apache.james.mailets.configuration.Constants.PASSWORD; @@ -31,12 +32,17 @@ import org.apache.james.probe.DataProbe; import org.apache.james.utils.DataProbeImpl; import org.apache.james.utils.IMAPMessageReader; import org.apache.james.utils.SMTPMessageSender; +import org.apache.james.utils.WebAdminGuiceProbe; +import org.apache.james.webadmin.WebAdminUtils; +import org.apache.james.webadmin.routes.ForwardRoutes; import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import io.restassured.specification.RequestSpecification; + public class RecipientRewriteTableIntegrationTest { private static final String JAMES_ANOTHER_DOMAIN = "james.com"; @@ -60,6 +66,7 @@ public class RecipientRewriteTableIntegrationTest { private TemporaryJamesServer jamesServer; private DataProbe dataProbe; + private RequestSpecification webAdminApi; @Before public void setup() throws Exception { @@ -72,6 +79,11 @@ public class RecipientRewriteTableIntegrationTest { dataProbe.addUser(RECIPIENT, PASSWORD); dataProbe.addUser(ANY_AT_JAMES, PASSWORD); dataProbe.addUser(OTHER_AT_JAMES, PASSWORD); + + WebAdminGuiceProbe webAdminGuiceProbe = jamesServer.getProbe(WebAdminGuiceProbe.class); + webAdminGuiceProbe.await(); + webAdminApi = given() + .spec(WebAdminUtils.buildRequestSpecification(webAdminGuiceProbe.getWebAdminPort()).build()); } @After @@ -182,8 +194,8 @@ public class RecipientRewriteTableIntegrationTest { @Test public void rrtServiceShouldDeliverEmailToForwardRecipients() throws Exception { - dataProbe.addForwardMapping(RECIPIENT_LOCAL_PART, DEFAULT_DOMAIN, ANY_AT_JAMES); - dataProbe.addForwardMapping(RECIPIENT_LOCAL_PART, DEFAULT_DOMAIN, OTHER_AT_JAMES); + webAdminApi.put(ForwardRoutes.ROOT_PATH + "/" + RECIPIENT + "/targets/" + ANY_AT_JAMES); + webAdminApi.put(ForwardRoutes.ROOT_PATH + "/" + RECIPIENT + "/targets/" + OTHER_AT_JAMES); messageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()) .sendMessage(FROM, RECIPIENT); @@ -203,7 +215,7 @@ public class RecipientRewriteTableIntegrationTest { public void rrtServiceShouldFollowForwardWhenSendingToAGroup() throws Exception { dataProbe.addAddressMapping(GROUP_LOCAL_PART, DEFAULT_DOMAIN, ANY_AT_JAMES); - dataProbe.addForwardMapping(ANY_LOCAL_PART, DEFAULT_DOMAIN, OTHER_AT_JAMES); + webAdminApi.put(ForwardRoutes.ROOT_PATH + "/" + ANY_AT_JAMES + "/targets/" + OTHER_AT_JAMES); messageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()) .sendMessage(FROM, GROUP); http://git-wip-us.apache.org/repos/asf/james-project/blob/21cde6d2/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java index e400712..05d2dcd 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java @@ -32,6 +32,7 @@ import org.apache.james.core.builder.MimeMessageBuilder; import org.apache.james.jmap.mailet.VacationMailet; import org.apache.james.jmap.mailet.filter.JMAPFiltering; import org.apache.james.mailbox.model.MailboxConstants; +import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailets.TemporaryJamesServer; import org.apache.james.mailets.configuration.CommonProcessors; import org.apache.james.mailets.configuration.MailetConfiguration; @@ -47,10 +48,13 @@ import org.apache.james.transport.matchers.IsSenderInRRTLoop; import org.apache.james.transport.matchers.RecipientIsLocal; import org.apache.james.utils.DataProbeImpl; import org.apache.james.utils.IMAPMessageReader; +import org.apache.james.utils.MailRepositoryProbeImpl; import org.apache.james.utils.SMTPMessageSender; import org.apache.james.utils.WebAdminGuiceProbe; import org.apache.james.webadmin.WebAdminUtils; import org.apache.james.webadmin.routes.AliasRoutes; +import org.apache.james.webadmin.routes.ForwardRoutes; +import org.apache.james.webadmin.routes.GroupsRoutes; import org.apache.mailet.base.test.FakeMail; import org.junit.After; import org.junit.Before; @@ -118,10 +122,7 @@ public class AliasMappingTest { .addProperty("repositoryPath", RRT_ERROR_REPOSITORY.asString())) .addMailet(MailetConfiguration.builder() .matcher(IsSenderInRRTLoop.class) - .mailet(Null.class)) - .addMailet(MailetConfiguration.builder() - .matcher(All.class) - .mailet(Bounce.class))); + .mailet(Null.class))); jamesServer = TemporaryJamesServer.builder() .withMailetContainer(mailetContainer) @@ -134,9 +135,9 @@ public class AliasMappingTest { dataProbe.addUser(ALICE_ADDRESS, PASSWORD); dataProbe.addUser(CEDRIC_ADDRESS, PASSWORD); - jamesServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, BOB_ADDRESS, "INBOX"); - jamesServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, ALICE_ADDRESS, "INBOX"); - jamesServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, CEDRIC_ADDRESS, "INBOX"); + jamesServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxPath.forUser(BOB_ADDRESS, MailboxConstants.INBOX)); + jamesServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxPath.forUser(ALICE_ADDRESS, MailboxConstants.INBOX)); + jamesServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxPath.forUser(CEDRIC_ADDRESS, MailboxConstants.INBOX)); WebAdminGuiceProbe webAdminGuiceProbe = jamesServer.getProbe(WebAdminGuiceProbe.class); webAdminGuiceProbe.await(); @@ -174,7 +175,7 @@ public class AliasMappingTest { @Test public void messageShouldRedirectToForwardOfUserWhenSentToHisAlias() throws Exception { webAdminApi.put(AliasRoutes.ROOT_PATH + "/" + BOB_ADDRESS + "/sources/" + BOB_ALIAS); - dataProbe.addForwardMapping(BOB_USER, DOMAIN, CEDRIC_ADDRESS); + webAdminApi.put(ForwardRoutes.ROOT_PATH + "/" + BOB_ADDRESS + "/targets/" + CEDRIC_ADDRESS); messageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()) .sendMessage(FakeMail.builder() @@ -192,7 +193,7 @@ public class AliasMappingTest { @Test public void messageShouldRedirectToUserWhenForwardedToHisAlias() throws Exception { webAdminApi.put(AliasRoutes.ROOT_PATH + "/" + BOB_ADDRESS + "/sources/" + BOB_ALIAS); - dataProbe.addForwardMapping(ALICE_USER, DOMAIN, BOB_ALIAS); + webAdminApi.put(ForwardRoutes.ROOT_PATH + "/" + ALICE_ADDRESS + "/targets/" + BOB_ALIAS); messageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()) .sendMessage(FakeMail.builder() @@ -210,7 +211,7 @@ public class AliasMappingTest { @Test public void messageShouldRedirectToUserWhenHisAliasIsPartOfGroup() throws Exception { webAdminApi.put(AliasRoutes.ROOT_PATH + "/" + BOB_ADDRESS + "/sources/" + BOB_ALIAS); - dataProbe.addGroupMapping(GROUP, DOMAIN, BOB_ALIAS); + webAdminApi.put(GroupsRoutes.ROOT_PATH + "/" + GROUP_ADDRESS + "/" + BOB_ALIAS); messageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()) .sendMessage(FakeMail.builder() @@ -228,7 +229,7 @@ public class AliasMappingTest { @Test public void messageShouldRedirectToMembersWhenSentToGroupAlias() throws Exception { webAdminApi.put(AliasRoutes.ROOT_PATH + "/" + GROUP_ADDRESS + "/sources/" + GROUP_ALIAS); - dataProbe.addGroupMapping(GROUP, DOMAIN, BOB_ADDRESS); + webAdminApi.put(GroupsRoutes.ROOT_PATH + "/" + GROUP_ADDRESS + "/" + BOB_ADDRESS); messageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()) .sendMessage(FakeMail.builder() @@ -244,7 +245,7 @@ public class AliasMappingTest { } @Test - public void messageShouldRedirectToUserWhithAliasesCascading() throws Exception { + public void messageShouldRedirectToUserWithAliasesCascading() throws Exception { webAdminApi.put(AliasRoutes.ROOT_PATH + "/" + BOB_ADDRESS + "/sources/" + BOB_ALIAS); webAdminApi.put(AliasRoutes.ROOT_PATH + "/" + BOB_ALIAS + "/sources/" + BOB_ALIAS_2); @@ -341,4 +342,25 @@ public class AliasMappingTest { .awaitMessage(awaitAtMostOneMinute); } + @Test + public void messageShouldBeStoredInRepositoryWhenAliasLoopMapping() throws Exception { + String bobAlias3 = BOB_USER + "-alias3@" + DOMAIN; + + webAdminApi.put(AliasRoutes.ROOT_PATH + "/" + BOB_ALIAS_2 + "/sources/" + BOB_ALIAS); + + webAdminApi.put(AliasRoutes.ROOT_PATH + "/" + bobAlias3 + "/sources/" + BOB_ALIAS_2); + + webAdminApi.put(AliasRoutes.ROOT_PATH + "/" + BOB_ALIAS + "/sources/" + bobAlias3); + + messageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()) + .sendMessage(FakeMail.builder() + .mimeMessage(message) + .sender(ALICE_ADDRESS) + .recipient(BOB_ALIAS)); + + awaitAtMostOneMinute.until( + () -> jamesServer.getProbe(MailRepositoryProbeImpl.class) + .getRepositoryMailCount(RRT_ERROR_REPOSITORY) == 1); + } + } http://git-wip-us.apache.org/repos/asf/james-project/blob/21cde6d2/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java index a2ff045..6dde31f 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java @@ -32,6 +32,7 @@ import org.apache.james.core.builder.MimeMessageBuilder; import org.apache.james.jmap.mailet.VacationMailet; import org.apache.james.jmap.mailet.filter.JMAPFiltering; import org.apache.james.mailbox.model.MailboxConstants; +import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailets.TemporaryJamesServer; import org.apache.james.mailets.configuration.CommonProcessors; import org.apache.james.mailets.configuration.MailetConfiguration; @@ -130,8 +131,8 @@ public class GroupMappingTest { dataProbe.addUser(USER_DOMAIN1, PASSWORD); dataProbe.addUser(USER_DOMAIN2, PASSWORD); - jamesServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, USER_DOMAIN1, "INBOX"); - jamesServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, USER_DOMAIN2, "INBOX"); + jamesServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxPath.forUser(USER_DOMAIN1, MailboxConstants.INBOX)); + jamesServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxPath.forUser(USER_DOMAIN2, MailboxConstants.INBOX)); WebAdminGuiceProbe webAdminGuiceProbe = jamesServer.getProbe(WebAdminGuiceProbe.class); webAdminGuiceProbe.await(); http://git-wip-us.apache.org/repos/asf/james-project/blob/21cde6d2/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java index 33b53da..153a76e 100644 --- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java +++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java @@ -40,7 +40,10 @@ import org.apache.james.probe.DataProbe; import org.apache.james.utils.DataProbeImpl; import org.apache.james.utils.WebAdminGuiceProbe; import org.apache.james.webadmin.WebAdminUtils; +import org.apache.james.webadmin.routes.AliasRoutes; import org.apache.james.webadmin.routes.DomainsRoutes; +import org.apache.james.webadmin.routes.ForwardRoutes; +import org.apache.james.webadmin.routes.GroupsRoutes; import org.apache.james.webadmin.routes.HealthCheckRoutes; import org.apache.james.webadmin.routes.MailQueueRoutes; import org.apache.james.webadmin.routes.MailRepositoriesRoutes; @@ -60,6 +63,8 @@ public class WebAdminServerIntegrationTest { private static final String DOMAIN = "domain"; private static final String USERNAME = "username@" + DOMAIN; + private static final String USERNAME_2 = "username2@" + DOMAIN; + private static final String GROUP = "group@" + DOMAIN; private static final String SPECIFIC_DOMAIN = DomainsRoutes.DOMAINS + SEPARATOR + DOMAIN; private static final String SPECIFIC_USER = UserRoutes.USERS + SEPARATOR + USERNAME; private static final String MAILBOX = "mailbox"; @@ -279,50 +284,62 @@ public class WebAdminServerIntegrationTest { @Test public void addressGroupsEndpointShouldHandleRequests() throws Exception { - dataProbe.addGroupMapping("group", "domain.com", "us...@domain.com"); - dataProbe.addGroupMapping("group", "domain.com", "us...@domain.com"); + dataProbe.addDomain(DOMAIN); + + with() + .put(GroupsRoutes.ROOT_PATH + SEPARATOR + GROUP + SEPARATOR + USERNAME); + with() + .put(GroupsRoutes.ROOT_PATH + SEPARATOR + GROUP + SEPARATOR + USERNAME_2); List<String> members = when() - .get("/address/groups/gr...@domain.com") + .get(GroupsRoutes.ROOT_PATH + SEPARATOR + GROUP) .then() .statusCode(HttpStatus.OK_200) .contentType(JSON_CONTENT_TYPE) .extract() .jsonPath() .getList("."); - assertThat(members).containsOnly("us...@domain.com", "us...@domain.com"); + assertThat(members).containsOnly(USERNAME, USERNAME_2); } @Test public void addressForwardsEndpointShouldListForwardAddresses() throws Exception { - dataProbe.addForwardMapping("from1", "domain.com", "us...@domain.com"); - dataProbe.addForwardMapping("from2", "domain.com", "us...@domain.com"); + dataProbe.addDomain(DOMAIN); + dataProbe.addUser(USERNAME, "anyPassword"); + dataProbe.addUser(USERNAME_2, "anyPassword"); + + with() + .put(ForwardRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/targets/t...@domain.com"); + with() + .put(ForwardRoutes.ROOT_PATH + SEPARATOR + USERNAME_2 + "/targets/t...@domain.com"); List<String> members = when() - .get("/address/forwards") + .get(ForwardRoutes.ROOT_PATH) .then() .statusCode(HttpStatus.OK_200) .contentType(JSON_CONTENT_TYPE) .extract() .jsonPath() .getList("."); - assertThat(members).containsOnly("fr...@domain.com", "fr...@domain.com"); + assertThat(members).containsOnly(USERNAME, USERNAME_2); } @Test - public void addressAliasesEndpointShouldListAliasesAddresses() throws Exception { - dataProbe.addAliasMapping("alias1", "domain.com", "t...@domain.com"); - dataProbe.addAliasMapping("alias2", "domain.com", "t...@domain.com"); + public void addressAliasesEndpointShouldListAliasesAddresses() { + with() + .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/sources/ali...@domain.com"); + with() + .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME_2 + "/sources/ali...@domain.com"); List<String> members = when() - .get("/address/aliases") + .get(AliasRoutes.ROOT_PATH) .then() .statusCode(HttpStatus.OK_200) .contentType(JSON_CONTENT_TYPE) .extract() .jsonPath() .getList("."); - assertThat(members).containsOnly("t...@domain.com", "t...@domain.com"); + assertThat(members).containsOnly(USERNAME, USERNAME_2); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org