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 bt...@apache.org on 2019/01/17 06:50:43 UTC

[27/27] james-project git commit: JAMES-2642 Refactor and cleanup code for alias, group and forward integration tests

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 <rc...@linagora.com>
Authored: Wed Jan 16 16:27:46 2019 +0700
Committer: Benoit Tellier <bt...@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", "user1@domain.com");
-        dataProbe.addGroupMapping("group", "domain.com", "user2@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/group@domain.com")
+            .get(GroupsRoutes.ROOT_PATH + SEPARATOR + GROUP)
         .then()
             .statusCode(HttpStatus.OK_200)
             .contentType(JSON_CONTENT_TYPE)
             .extract()
             .jsonPath()
             .getList(".");
-        assertThat(members).containsOnly("user1@domain.com", "user2@domain.com");
+        assertThat(members).containsOnly(USERNAME, USERNAME_2);
     }
 
     @Test
     public void addressForwardsEndpointShouldListForwardAddresses() throws Exception {
-        dataProbe.addForwardMapping("from1", "domain.com", "user1@domain.com");
-        dataProbe.addForwardMapping("from2", "domain.com", "user2@domain.com");
+        dataProbe.addDomain(DOMAIN);
+        dataProbe.addUser(USERNAME, "anyPassword");
+        dataProbe.addUser(USERNAME_2, "anyPassword");
+
+        with()
+            .put(ForwardRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/targets/to1@domain.com");
+        with()
+            .put(ForwardRoutes.ROOT_PATH + SEPARATOR + USERNAME_2 + "/targets/to2@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("from1@domain.com", "from2@domain.com");
+        assertThat(members).containsOnly(USERNAME, USERNAME_2);
     }
 
     @Test
-    public void addressAliasesEndpointShouldListAliasesAddresses() throws Exception {
-        dataProbe.addAliasMapping("alias1", "domain.com", "to1@domain.com");
-        dataProbe.addAliasMapping("alias2", "domain.com", "to2@domain.com");
+    public void addressAliasesEndpointShouldListAliasesAddresses() {
+        with()
+            .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/sources/alias1@domain.com");
+        with()
+            .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME_2 + "/sources/alias2@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("to1@domain.com", "to2@domain.com");
+        assertThat(members).containsOnly(USERNAME, USERNAME_2);
     }
 
     @Test


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