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:54 UTC

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

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