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 2017/06/06 08:28:54 UTC

[5/6] james-project git commit: JAMES-2043 UserProvisioningFilter should not try to update readOnly users repository

JAMES-2043 UserProvisioningFilter should not try to update readOnly users repository


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

Branch: refs/heads/master
Commit: c05b38f3eaf2db75ad0963fd99f3bfaa31400125
Parents: 8e9d7be
Author: benwa <bt...@linagora.com>
Authored: Fri Jun 2 11:57:38 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Tue Jun 6 15:27:57 2017 +0700

----------------------------------------------------------------------
 .../james/jmap/UserProvisioningFilter.java      |  6 ++--
 .../james/jmap/UserProvisioningFilterTest.java  | 35 ++++++++++++++++++++
 2 files changed, 39 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c05b38f3/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 95425d4..04bee42 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
@@ -62,8 +62,10 @@ public class UserProvisioningFilter implements Filter {
     
     @Override
     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
-        Optional<MailboxSession> session = Optional.ofNullable((MailboxSession)request.getAttribute(AuthenticationFilter.MAILBOX_SESSION));
-        session.ifPresent(this::createAccountIfNeeded);
+        if (!usersRepository.isReadOnly()) {
+            Optional<MailboxSession> session = Optional.ofNullable((MailboxSession) request.getAttribute(AuthenticationFilter.MAILBOX_SESSION));
+            session.ifPresent(this::createAccountIfNeeded);
+        }
         chain.doFilter(request, response);
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/c05b38f3/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 4bab49d..dde8aa5 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
@@ -19,8 +19,11 @@
 package org.apache.james.jmap;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
 import java.io.IOException;
@@ -33,6 +36,7 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.metrics.api.NoopMetricFactory;
+import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.james.user.lib.mock.InMemoryUsersRepository;
 import org.junit.Before;
@@ -90,4 +94,35 @@ public class UserProvisioningFilterTest {
         verify(chain).doFilter(request, response);
         assertThat(usersRepository.list()).contains(USERNAME);
     }
+
+    @Test
+    public void filterShouldNotTryToAddUserWhenReadOnlyUsersRepository() throws Exception {
+        UsersRepository usersRepository = mock(UsersRepository.class);
+        when(usersRepository.isReadOnly()).thenReturn(true);
+        sut = new UserProvisioningFilter(usersRepository, new NoopMetricFactory());
+
+        MailboxSession mailboxSession = new MockMailboxSession(MAIL);
+        when(request.getAttribute(AuthenticationFilter.MAILBOX_SESSION))
+            .thenReturn(mailboxSession);
+
+        sut.doFilter(request, response, chain);
+
+        verify(usersRepository).isReadOnly();
+        verifyNoMoreInteractions(usersRepository);
+    }
+
+    @Test
+    public void filterShouldChainCallsWhenReadOnlyUsersRepository() throws Exception {
+        UsersRepository usersRepository = mock(UsersRepository.class);
+        when(usersRepository.isReadOnly()).thenReturn(true);
+        sut = new UserProvisioningFilter(usersRepository, new NoopMetricFactory());
+
+        MailboxSession mailboxSession = new MockMailboxSession(MAIL);
+        when(request.getAttribute(AuthenticationFilter.MAILBOX_SESSION))
+            .thenReturn(mailboxSession);
+
+        sut.doFilter(request, response, chain);
+
+        verify(chain).doFilter(eq(request), any());
+    }
 }


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