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 ad...@apache.org on 2017/11/21 16:40:50 UTC

[1/7] james-project git commit: Remove unused imports

Repository: james-project
Updated Branches:
  refs/heads/master 84c5a6b90 -> 4faefa448


Remove unused imports


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/fd6d9474
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/fd6d9474
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/fd6d9474

Branch: refs/heads/master
Commit: fd6d9474e72a92464c0afdf96f76c14fb336dff1
Parents: 9ba015d
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Mon Nov 20 10:31:49 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Nov 20 10:31:49 2017 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/james/mailbox/MailboxListener.java   | 1 -
 .../java/org/apache/james/mailbox/store/event/EventFactory.java   | 2 --
 .../apache/james/mailbox/store/event/MailboxEventDispatcher.java  | 1 -
 .../james/mailbox/store/mail/model/MailboxMapperACLTest.java      | 3 ---
 .../src/test/java/org/apache/james/server/core/MailImplTest.java  | 1 -
 5 files changed, 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/fd6d9474/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
index ef8c8cc..4a8f07c 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
@@ -23,7 +23,6 @@ import java.io.Serializable;
 import java.util.List;
 
 import org.apache.james.mailbox.acl.ACLDiff;
-import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.UpdatedFlags;

http://git-wip-us.apache.org/repos/asf/james-project/blob/fd6d9474/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
index beb9fa8..b7cb1a2 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
@@ -21,14 +21,12 @@ package org.apache.james.mailbox.store.event;
 
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.SortedMap;
 
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.acl.ACLDiff;
-import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.UpdatedFlags;

http://git-wip-us.apache.org/repos/asf/james-project/blob/fd6d9474/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
index 8fcb5ab..2fea2f8 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
@@ -29,7 +29,6 @@ import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.acl.ACLDiff;
-import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.UpdatedFlags;

http://git-wip-us.apache.org/repos/asf/james-project/blob/fd6d9474/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
index 2232a7d..abf3e12 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
@@ -20,10 +20,7 @@
 package org.apache.james.mailbox.store.mail.model;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
 import org.apache.james.mailbox.acl.ACLDiff;
-import org.apache.james.mailbox.acl.MailboxACLResolver;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxACL.EntryKey;

http://git-wip-us.apache.org/repos/asf/james-project/blob/fd6d9474/server/container/core/src/test/java/org/apache/james/server/core/MailImplTest.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/test/java/org/apache/james/server/core/MailImplTest.java b/server/container/core/src/test/java/org/apache/james/server/core/MailImplTest.java
index 49ce62a..8ecfcad 100644
--- a/server/container/core/src/test/java/org/apache/james/server/core/MailImplTest.java
+++ b/server/container/core/src/test/java/org/apache/james/server/core/MailImplTest.java
@@ -36,7 +36,6 @@ import org.apache.james.core.MailAddress;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.test.MailUtil;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import com.github.fge.lambdas.Throwing;


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


[4/7] james-project git commit: JAMES-2225 URL encoded params should be decoded in group API

Posted by ad...@apache.org.
JAMES-2225 URL encoded params should be decoded in group API


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/cd57213c
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/cd57213c
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/cd57213c

Branch: refs/heads/master
Commit: cd57213c0b09ed0e940c6b3b2e59221249151255
Parents: 66295df
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Mon Nov 20 15:02:55 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Nov 20 15:04:55 2017 +0100

----------------------------------------------------------------------
 .../transport/mailets/GroupMappingTest.java     | 20 ++++++++++++++++++++
 .../james/webadmin/routes/GroupsRoutes.java     | 13 ++++++++++++-
 2 files changed, 32 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/cd57213c/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 cc25fb4..4ad8447 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
@@ -434,6 +434,26 @@ public class GroupMappingTest {
     }
 
     @Test
+    public void messageShouldRedirectToGroupContainingSlash() throws Exception {
+        String groupWithSlash = "a/a@" + DOMAIN1;
+        String groupWithEncodedSlash = "a%2Fa@" + DOMAIN1;
+        restApiRequest.put(GroupsRoutes.ROOT_PATH + "/" + groupWithEncodedSlash + "/" + USER_DOMAIN1);
+
+        Mail mail = FakeMail.builder()
+            .mimeMessage(message)
+            .sender(new MailAddress(SENDER))
+            .recipient(new MailAddress(groupWithSlash))
+            .build();
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, DOMAIN1);
+             IMAPMessageReader imapMessageReader = new IMAPMessageReader(LOCALHOST_IP, IMAP_PORT)) {
+            messageSender.sendMessage(mail);
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(messageSender::messageHasBeenSent);
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> imapMessageReader.userReceivedMessage(USER_DOMAIN1, PASSWORD));
+        }
+    }
+
+    @Test
     public void sendMessageShouldSendAMessageToAnExternalGroupMember() throws Exception {
         String externalMail = "ray@yopmail.com";
         restApiRequest.put(GroupsRoutes.ROOT_PATH + "/" + GROUP_ON_DOMAIN1 + "/" + externalMail);

http://git-wip-us.apache.org/repos/asf/james-project/blob/cd57213c/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java
index f47fda1..25ada76 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java
@@ -22,6 +22,8 @@ package org.apache.james.webadmin.routes;
 import static org.apache.james.webadmin.Constants.SEPARATOR;
 import static spark.Spark.halt;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -50,6 +52,8 @@ import org.apache.james.webadmin.Routes;
 import org.apache.james.webadmin.utils.JsonExtractException;
 import org.apache.james.webadmin.utils.JsonTransformer;
 import org.eclipse.jetty.http.HttpStatus;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.github.steveash.guavate.Guavate;
 import com.google.common.annotations.VisibleForTesting;
@@ -72,6 +76,9 @@ import spark.Service;
 public class GroupsRoutes implements Routes {
 
     public static final String ROOT_PATH = "address/groups";
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(GroupsRoutes.class);
+
     private static final String GROUP_ADDRESS = "groupAddress";
     private static final String GROUP_ADDRESS_PATH = ROOT_PATH + SEPARATOR + ":" + GROUP_ADDRESS;
     private static final String USER_ADDRESS = "userAddress";
@@ -200,9 +207,13 @@ public class GroupsRoutes implements Routes {
 
     private MailAddress parseMailAddress(String address) {
         try {
-            return new MailAddress(address);
+            String decodedAddress = URLDecoder.decode(address, "UTF-8");
+            return new MailAddress(decodedAddress);
         } catch (AddressException e) {
             throw halt(HttpStatus.BAD_REQUEST_400);
+        } catch (UnsupportedEncodingException e) {
+            LOGGER.error("UTF-8 should be a valid encoding");
+            throw halt(HttpStatus.INTERNAL_SERVER_ERROR_500);
         }
     }
 


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


[6/7] james-project git commit: JAMES-2225 Encoding @ should also work for users or groups

Posted by ad...@apache.org.
JAMES-2225 Encoding @ should also work for users or groups


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d209b9e3
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d209b9e3
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d209b9e3

Branch: refs/heads/master
Commit: d209b9e357cbe521ab500173cac8e49e163e966b
Parents: a34af4b
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Nov 21 14:41:27 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Tue Nov 21 14:41:48 2017 +0100

----------------------------------------------------------------------
 .../transport/mailets/GroupMappingTest.java     | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d209b9e3/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 bc2d539..d025a16 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
@@ -475,6 +475,26 @@ public class GroupMappingTest {
     }
 
     @Test
+    public void messageShouldRedirectToUserWhenEncodingAt() throws Exception {
+        String userWithEncodedAt = "user%40" + DOMAIN1;
+        String groupWithEncodedAt = "group%40" + DOMAIN1;
+        restApiRequest.put(GroupsRoutes.ROOT_PATH + "/" + groupWithEncodedAt + "/" + userWithEncodedAt);
+
+        Mail mail = FakeMail.builder()
+            .mimeMessage(message)
+            .sender(new MailAddress(SENDER))
+            .recipient(new MailAddress(GROUP_ON_DOMAIN1))
+            .build();
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, DOMAIN1);
+             IMAPMessageReader imapMessageReader = new IMAPMessageReader(LOCALHOST_IP, IMAP_PORT)) {
+            messageSender.sendMessage(mail);
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(messageSender::messageHasBeenSent);
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> imapMessageReader.userReceivedMessage(USER_DOMAIN1, PASSWORD));
+        }
+    }
+
+    @Test
     public void sendMessageShouldSendAMessageToAnExternalGroupMember() throws Exception {
         String externalMail = "ray@yopmail.com";
         restApiRequest.put(GroupsRoutes.ROOT_PATH + "/" + GROUP_ON_DOMAIN1 + "/" + externalMail);


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


[2/7] james-project git commit: JAMES-2225 Rename working test

Posted by ad...@apache.org.
JAMES-2225 Rename working test


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5ae8fa2d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5ae8fa2d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5ae8fa2d

Branch: refs/heads/master
Commit: 5ae8fa2dd1d80d95a198a2c87823a11e60799cff
Parents: fd6d947
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Mon Nov 20 14:25:03 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Nov 20 15:04:24 2017 +0100

----------------------------------------------------------------------
 .../java/org/apache/james/transport/mailets/GroupMappingTest.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/5ae8fa2d/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 8e773ae..cc25fb4 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
@@ -434,7 +434,7 @@ public class GroupMappingTest {
     }
 
     @Test
-    public void externalGroupMemberAreNotSupported() throws Exception {
+    public void sendMessageShouldSendAMessageToAnExternalGroupMember() throws Exception {
         String externalMail = "ray@yopmail.com";
         restApiRequest.put(GroupsRoutes.ROOT_PATH + "/" + GROUP_ON_DOMAIN1 + "/" + externalMail);
 


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


[7/7] james-project git commit: Merge remote-tracking branch 'rouazana/JAMES-2225'

Posted by ad...@apache.org.
Merge remote-tracking branch 'rouazana/JAMES-2225'


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/4faefa44
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/4faefa44
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/4faefa44

Branch: refs/heads/master
Commit: 4faefa448f03fe7a097f7da56172ef290801e2cb
Parents: 84c5a6b d209b9e
Author: Antoine Duprat <ad...@linagora.com>
Authored: Tue Nov 21 17:40:35 2017 +0100
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Nov 21 17:40:35 2017 +0100

----------------------------------------------------------------------
 .../apache/james/mailbox/MailboxListener.java   |  1 -
 .../james/mailbox/store/event/EventFactory.java |  2 -
 .../store/event/MailboxEventDispatcher.java     |  1 -
 .../store/mail/model/MailboxMapperACLTest.java  |  3 -
 .../apache/james/server/core/MailImplTest.java  |  1 -
 .../transport/mailets/GroupMappingTest.java     | 63 ++++++++++++++++-
 .../james/webadmin/routes/GroupsRoutes.java     | 13 +++-
 .../james/webadmin/routes/GroupsRoutesTest.java | 72 ++++++++++++++++++++
 8 files changed, 146 insertions(+), 10 deletions(-)
----------------------------------------------------------------------



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


[3/7] james-project git commit: JAMES-2225 Encoded slashes should be allowed in group API

Posted by ad...@apache.org.
JAMES-2225 Encoded slashes should be allowed in group API


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/66295df5
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/66295df5
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/66295df5

Branch: refs/heads/master
Commit: 66295df5ce845ff5da2facac315ccda8ed296c26
Parents: 5ae8fa2
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Mon Nov 20 10:53:21 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Nov 20 15:04:30 2017 +0100

----------------------------------------------------------------------
 .../james/webadmin/routes/GroupsRoutesTest.java | 36 ++++++++++++++++++++
 1 file changed, 36 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/66295df5/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java
index 9cda34c..26c8ebc 100644
--- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java
@@ -67,6 +67,8 @@ public class GroupsRoutesTest {
     private static final String DOMAIN = "b.com";
     private static final String GROUP1 = "group1" + "@" + DOMAIN;
     private static final String GROUP2 = "group2" + "@" + DOMAIN;
+    private static final String GROUP_WITH_SLASH = "group10/10" + "@" + DOMAIN;
+    private static final String GROUP_WITH_ENCODED_SLASH = "group10%2F10" + "@" + DOMAIN;
     private static final String USER_A = "a" + "@" + DOMAIN;
     private static final String USER_B = "b" + "@" + DOMAIN;
 
@@ -177,6 +179,32 @@ public class GroupsRoutesTest {
         }
 
         @Test
+        public void putUserInGroupWithEncodedSlashShouldReturnCreated() {
+            when()
+                .put(GROUP_WITH_ENCODED_SLASH + SEPARATOR + USER_A)
+            .then()
+                .statusCode(HttpStatus.CREATED_201);
+        }
+
+        @Test
+        public void putUserInGroupWithEncodedSlashShouldCreateGroup() {
+            when()
+                .put(GROUP_WITH_ENCODED_SLASH + SEPARATOR + USER_A);
+
+            List<String> addresses =
+                when()
+                    .get(GROUP_WITH_ENCODED_SLASH)
+                .then()
+                    .contentType(ContentType.JSON)
+                    .statusCode(HttpStatus.OK_200)
+                    .extract()
+                    .body()
+                    .jsonPath()
+                    .getList(".");
+            assertThat(addresses).containsExactly(USER_A);
+        }
+
+        @Test
         public void putSameUserInGroupTwiceShouldBeIdempotent() {
             given()
                 .put(GROUP1 + SEPARATOR + USER_A);
@@ -329,6 +357,14 @@ public class GroupsRoutesTest {
         }
 
         @Test
+        public void putUserInGroupWithSlashShouldReturnNotFound() {
+            when()
+                .put(GROUP_WITH_SLASH + SEPARATOR + USER_A)
+            .then()
+                .statusCode(HttpStatus.NOT_FOUND_404);
+        }
+
+        @Test
         public void putMalformedAddressShouldReturnBadRequest() {
             when()
                 .put(GROUP1 + SEPARATOR + "not-an-address")


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


[5/7] james-project git commit: JAMES-2225 URL decoding should also work for users

Posted by ad...@apache.org.
JAMES-2225 URL decoding should also work for users


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a34af4b8
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a34af4b8
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a34af4b8

Branch: refs/heads/master
Commit: a34af4b8a0599a5473c89484ed9e68e98dab6017
Parents: cd57213
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Mon Nov 20 15:13:43 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Mon Nov 20 15:57:48 2017 +0100

----------------------------------------------------------------------
 .../transport/mailets/GroupMappingTest.java     | 21 ++++++++++++
 .../james/webadmin/routes/GroupsRoutesTest.java | 36 ++++++++++++++++++++
 2 files changed, 57 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/a34af4b8/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 4ad8447..bc2d539 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
@@ -454,6 +454,27 @@ public class GroupMappingTest {
     }
 
     @Test
+    public void messageShouldRedirectToUserContainingSlash() throws Exception {
+        String userWithSlash = "a/a@" + DOMAIN1;
+        dataProbe.addUser(userWithSlash, PASSWORD);
+        String userWithEncodedSlash = "a%2Fa@" + DOMAIN1;
+        restApiRequest.put(GroupsRoutes.ROOT_PATH + "/" + GROUP_ON_DOMAIN1 + "/" + userWithEncodedSlash);
+
+        Mail mail = FakeMail.builder()
+            .mimeMessage(message)
+            .sender(new MailAddress(SENDER))
+            .recipient(new MailAddress(GROUP_ON_DOMAIN1))
+            .build();
+
+        try (SMTPMessageSender messageSender = SMTPMessageSender.noAuthentication(LOCALHOST_IP, SMTP_PORT, DOMAIN1);
+             IMAPMessageReader imapMessageReader = new IMAPMessageReader(LOCALHOST_IP, IMAP_PORT)) {
+            messageSender.sendMessage(mail);
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(messageSender::messageHasBeenSent);
+            calmlyAwait.atMost(Duration.ONE_MINUTE).until(() -> imapMessageReader.userReceivedMessage(userWithSlash, PASSWORD));
+        }
+    }
+
+    @Test
     public void sendMessageShouldSendAMessageToAnExternalGroupMember() throws Exception {
         String externalMail = "ray@yopmail.com";
         restApiRequest.put(GroupsRoutes.ROOT_PATH + "/" + GROUP_ON_DOMAIN1 + "/" + externalMail);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a34af4b8/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java
index 26c8ebc..24ace5c 100644
--- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java
@@ -71,6 +71,8 @@ public class GroupsRoutesTest {
     private static final String GROUP_WITH_ENCODED_SLASH = "group10%2F10" + "@" + DOMAIN;
     private static final String USER_A = "a" + "@" + DOMAIN;
     private static final String USER_B = "b" + "@" + DOMAIN;
+    private static final String USER_WITH_SLASH = "user/@" + DOMAIN;
+    private static final String USER_WITH_ENCODED_SLASH = "user%2F@" + DOMAIN;
 
     private WebAdminServer webAdminServer;
 
@@ -161,6 +163,32 @@ public class GroupsRoutesTest {
         }
 
         @Test
+        public void putUserWithSlashInGroupShouldReturnCreated() {
+            when()
+                .put(GROUP1 + SEPARATOR + USER_WITH_ENCODED_SLASH)
+            .then()
+                .statusCode(HttpStatus.CREATED_201);
+        }
+
+        @Test
+        public void putUserWithSlashInGroupShouldCreateUser() {
+            when()
+                .put(GROUP1 + SEPARATOR + USER_WITH_ENCODED_SLASH);
+
+            List<String> addresses =
+                when()
+                    .get(GROUP1)
+                .then()
+                    .contentType(ContentType.JSON)
+                    .statusCode(HttpStatus.OK_200)
+                    .extract()
+                    .body()
+                    .jsonPath()
+                    .getList(".");
+            assertThat(addresses).containsExactly(USER_WITH_SLASH);
+        }
+
+        @Test
         public void putUserInGroupShouldCreateGroup() {
             when()
                 .put(GROUP1 + SEPARATOR + USER_A);
@@ -365,6 +393,14 @@ public class GroupsRoutesTest {
         }
 
         @Test
+        public void putUserWithSlashInGroupShouldReturnNotFound() {
+            when()
+                .put(GROUP1 + SEPARATOR + USER_WITH_SLASH)
+            .then()
+                .statusCode(HttpStatus.NOT_FOUND_404);
+        }
+
+        @Test
         public void putMalformedAddressShouldReturnBadRequest() {
             when()
                 .put(GROUP1 + SEPARATOR + "not-an-address")


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