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 ro...@apache.org on 2017/02/14 15:06:41 UTC

[1/2] james-project git commit: JAMES-1942 UserProvisioningFilter should work without virtual hosting

Repository: james-project
Updated Branches:
  refs/heads/master 81c11f96e -> 3c2e5eddb


JAMES-1942 UserProvisioningFilter should work without virtual hosting


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

Branch: refs/heads/master
Commit: d5b7d84bf45d9ecc9576266eb80d2e93dccffdd6
Parents: d549535
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Feb 14 14:56:54 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Tue Feb 14 14:56:54 2017 +0100

----------------------------------------------------------------------
 .../james/jmap/UserProvisioningFilter.java      | 14 +++++-
 .../james/jmap/UserProvisioningFilterTest.java  | 45 +++++++++++++++++---
 2 files changed, 52 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d5b7d84b/server/protocols/jmap/src/main/java/org/apache/james/jmap/UserProvisioningFilter.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/UserProvisioningFilter.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/UserProvisioningFilter.java
index 726d37f..3b666a7 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/UserProvisioningFilter.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/UserProvisioningFilter.java
@@ -23,6 +23,7 @@ import java.util.Optional;
 import java.util.UUID;
 
 import javax.inject.Inject;
+import javax.mail.internet.AddressException;
 import javax.servlet.Filter;
 import javax.servlet.FilterChain;
 import javax.servlet.FilterConfig;
@@ -37,6 +38,7 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.user.api.AlreadyExistInUsersRepositoryException;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
+import org.apache.mailet.MailAddress;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Throwables;
@@ -76,7 +78,15 @@ public class UserProvisioningFilter implements Filter {
     }
 
     private boolean needsAccountCreation(User user) throws UsersRepositoryException {
-        return !usersRepository.contains(user.getUserName());
+        return !usersRepository.contains(getUsername(user));
+    }
+
+    private String getUsername(User user) throws UsersRepositoryException {
+        try {
+            return usersRepository.getUser(new MailAddress(user.getUserName()));
+        } catch (AddressException e) {
+            return user.getUserName();
+        }
     }
 
     private void createAccount(User user) throws UsersRepositoryException, BadCredentialsException, MailboxException {
@@ -84,7 +94,7 @@ public class UserProvisioningFilter implements Filter {
     }
 
     private void createUser(User user) throws UsersRepositoryException {
-        usersRepository.addUser(user.getUserName(), generatePassword());
+        usersRepository.addUser(getUsername(user), generatePassword());
     }
     
     private String generatePassword() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/d5b7d84b/server/protocols/jmap/src/test/java/org/apache/james/jmap/UserProvisioningFilterTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/UserProvisioningFilterTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/UserProvisioningFilterTest.java
index b5f6964..f527385 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/UserProvisioningFilterTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/UserProvisioningFilterTest.java
@@ -21,6 +21,7 @@ package org.apache.james.jmap;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import java.io.IOException;
 
@@ -29,29 +30,63 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.james.user.lib.mock.InMemoryUsersRepository;
 import org.junit.Before;
 import org.junit.Test;
 
 public class UserProvisioningFilterTest {
+    private static final String USERNAME = "username";
+    private static final String MAIL = USERNAME + "@james.org";
 
     private UserProvisioningFilter sut;
     private InMemoryUsersRepository usersRepository;
+    private HttpServletRequest request;
+    private HttpServletResponse response;
+    private FilterChain chain;
 
     @Before
-    public void setup() {
+    public void setup() throws Exception {
         usersRepository = new InMemoryUsersRepository();
         sut = new UserProvisioningFilter(usersRepository);
+        request = mock(HttpServletRequest.class);
+        response = mock(HttpServletResponse.class);
+        chain = mock(FilterChain.class);
     }
-    
+
     @Test
     public void filterShouldDoNothingOnNullSession() throws IOException, ServletException, UsersRepositoryException {
-        HttpServletRequest request = mock(HttpServletRequest.class);
-        HttpServletResponse response = mock(HttpServletResponse.class);
-        FilterChain chain = mock(FilterChain.class);
         sut.doFilter(request, response, chain);
+
         verify(chain).doFilter(request, response);
         assertThat(usersRepository.list()).isEmpty();
     }
+
+    @Test
+    public void filterShouldAddUsernameWhenNoVirtualHostingAndMailboxSessionContainsUsername() throws Exception {
+        usersRepository.setEnableVirtualHosting(false);
+        MailboxSession mailboxSession = new MockMailboxSession(USERNAME);
+        when(request.getAttribute(AuthenticationFilter.MAILBOX_SESSION))
+            .thenReturn(mailboxSession);
+
+        sut.doFilter(request, response, chain);
+
+        verify(chain).doFilter(request, response);
+        assertThat(usersRepository.list()).contains(USERNAME);
+    }
+
+    @Test
+    public void filterShouldAddUsernameWhenNoVirtualHostingAndMailboxSessionContainsMail() throws Exception {
+        usersRepository.setEnableVirtualHosting(false);
+        MailboxSession mailboxSession = new MockMailboxSession(MAIL);
+        when(request.getAttribute(AuthenticationFilter.MAILBOX_SESSION))
+            .thenReturn(mailboxSession);
+
+        sut.doFilter(request, response, chain);
+
+        verify(chain).doFilter(request, response);
+        assertThat(usersRepository.list()).contains(USERNAME);
+    }
 }


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


[2/2] james-project git commit: Merge remote-tracking branch 'mine/JAMES-1942'

Posted by ro...@apache.org.
Merge remote-tracking branch 'mine/JAMES-1942'


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

Branch: refs/heads/master
Commit: 3c2e5eddb4a2d7a0506ce83b06c06c1d33b082d2
Parents: 81c11f9 d5b7d84
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Feb 14 16:05:57 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Tue Feb 14 16:05:57 2017 +0100

----------------------------------------------------------------------
 .../james/jmap/UserProvisioningFilter.java      | 14 +++++-
 .../james/jmap/UserProvisioningFilterTest.java  | 45 +++++++++++++++++---
 2 files changed, 52 insertions(+), 7 deletions(-)
----------------------------------------------------------------------



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