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