Author: matthieu
Date: Fri Dec 11 12:29:47 2015
New Revision: 1719363

URL: http://svn.apache.org/viewvc?rev=1719363&view=rev
Log:
JAMES-1644 Decorate ProtocolRequest to get authentication data

Added:
    
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/exceptions/NotAnUUIDException.java
      - copied, changed from r1719362, 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java
    
james/project/trunk/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/
    
james/project/trunk/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/
    
james/project/trunk/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenTest.java
      - copied, changed from r1719362, 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java
    
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/AuthenticatedProtocolRequest.java
      - copied, changed from r1719362, 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java
Modified:
    
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java
    james/project/trunk/server/protocols/jmap/pom.xml
    
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/AuthenticationFilter.java
    
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPServlet.java
    
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolRequest.java
    
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/AuthenticationFilterTest.java
    
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java
    
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPGetMailboxesTest.java
    
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java
    
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java

Modified: 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java?rev=1719363&r1=1719362&r2=1719363&view=diff
==============================================================================
--- 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java
 (original)
+++ 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java
 Fri Dec 11 12:29:47 2015
@@ -22,10 +22,16 @@ package org.apache.james.jmap.api.access
 import java.util.Objects;
 import java.util.UUID;
 
+import org.apache.james.jmap.api.access.exceptions.NotAnUUIDException;
+
 public class AccessToken {
 
-    public static AccessToken fromString(String tokenString) {
-        return new AccessToken(UUID.fromString(tokenString));
+    public static AccessToken fromString(String tokenString) throws 
NotAnUUIDException {
+        try {
+            return new AccessToken(UUID.fromString(tokenString));
+        } catch (IllegalArgumentException e) {
+            throw new NotAnUUIDException(e);
+        }
     }
 
     private final UUID token;

Copied: 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/exceptions/NotAnUUIDException.java
 (from r1719362, 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java)
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/exceptions/NotAnUUIDException.java?p2=james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/exceptions/NotAnUUIDException.java&p1=james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java&r1=1719362&r2=1719363&rev=1719363&view=diff
==============================================================================
--- 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java
 (original)
+++ 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/exceptions/NotAnUUIDException.java
 Fri Dec 11 12:29:47 2015
@@ -17,40 +17,12 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.jmap.api.access;
+package org.apache.james.jmap.api.access.exceptions;
 
-import java.util.Objects;
-import java.util.UUID;
+public class NotAnUUIDException extends RuntimeException {
 
-public class AccessToken {
-
-    public static AccessToken fromString(String tokenString) {
-        return new AccessToken(UUID.fromString(tokenString));
-    }
-
-    private final UUID token;
-
-    private AccessToken(UUID token) {
-        this.token = token;
-    }
-    
-    public static AccessToken generate() {
-        return new AccessToken(UUID.randomUUID());
+    public NotAnUUIDException(Exception e) {
+        super(e);
     }
 
-    public String serialize() {
-        return token.toString();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        return o != null
-            && o instanceof AccessToken
-            && Objects.equals(this.token, ((AccessToken)o).token);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(token);
-    }
 }

Copied: 
james/project/trunk/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenTest.java
 (from r1719362, 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java)
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenTest.java?p2=james/project/trunk/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenTest.java&p1=james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java&r1=1719362&r2=1719363&rev=1719363&view=diff
==============================================================================
--- 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java
 (original)
+++ 
james/project/trunk/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenTest.java
 Fri Dec 11 12:29:47 2015
@@ -19,38 +19,23 @@
 
 package org.apache.james.jmap.api.access;
 
-import java.util.Objects;
-import java.util.UUID;
+import static org.assertj.core.api.Assertions.assertThat;
 
-public class AccessToken {
+import org.apache.james.jmap.api.access.exceptions.NotAnUUIDException;
+import org.junit.Test;
 
-    public static AccessToken fromString(String tokenString) {
-        return new AccessToken(UUID.fromString(tokenString));
-    }
-
-    private final UUID token;
-
-    private AccessToken(UUID token) {
-        this.token = token;
-    }
-    
-    public static AccessToken generate() {
-        return new AccessToken(UUID.randomUUID());
-    }
+public class AccessTokenTest {
 
-    public String serialize() {
-        return token.toString();
+    @Test(expected=NotAnUUIDException.class)
+    public void fromStringShouldThrowWhenNotAnUUID() throws NotAnUUIDException 
{
+        AccessToken.fromString("bad");
     }
 
-    @Override
-    public boolean equals(Object o) {
-        return o != null
-            && o instanceof AccessToken
-            && Objects.equals(this.token, ((AccessToken)o).token);
-    }
+    @Test
+    public void fromStringShouldWork() throws NotAnUUIDException {
+        String expectedToken = "dab315ad-a59a-4107-8d00-0fef9a0745b8";
 
-    @Override
-    public int hashCode() {
-        return Objects.hash(token);
+        AccessToken accessToken = AccessToken.fromString(expectedToken);
+        assertThat(accessToken.serialize()).isEqualTo(expectedToken);
     }
 }

Modified: james/project/trunk/server/protocols/jmap/pom.xml
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/pom.xml?rev=1719363&r1=1719362&r2=1719363&view=diff
==============================================================================
--- james/project/trunk/server/protocols/jmap/pom.xml (original)
+++ james/project/trunk/server/protocols/jmap/pom.xml Fri Dec 11 12:29:47 2015
@@ -151,6 +151,10 @@
             <dependencies>
                 <dependency>
                     <groupId>org.apache.james</groupId>
+                    <artifactId>apache-james-mailbox-api</artifactId>
+                </dependency>
+                <dependency>
+                    <groupId>org.apache.james</groupId>
                     <artifactId>james-server-core</artifactId>
                 </dependency>
                 <dependency>

Modified: 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/AuthenticationFilter.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/AuthenticationFilter.java?rev=1719363&r1=1719362&r2=1719363&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/AuthenticationFilter.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/AuthenticationFilter.java
 Fri Dec 11 12:29:47 2015
@@ -33,14 +33,28 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.james.jmap.api.AccessTokenManager;
 import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.api.access.exceptions.NotAnUUIDException;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.exception.BadCredentialsException;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.annotations.VisibleForTesting;
 
 public class AuthenticationFilter implements Filter {
     
-    private AccessTokenManager accessTokenManager;
+    private static final Logger LOG = 
LoggerFactory.getLogger(AuthenticationFilter.class);
+    public static final String MAILBOX_SESSION = "mailboxSession";
+
+    private final AccessTokenManager accessTokenManager;
+    private final MailboxManager mailboxManager;
 
     @Inject
-    public AuthenticationFilter(AccessTokenManager accessTokenManager) {
+    public AuthenticationFilter(AccessTokenManager accessTokenManager, 
MailboxManager mailboxManager) {
         this.accessTokenManager = accessTokenManager;
+        this.mailboxManager = mailboxManager;
     }
 
     @Override
@@ -49,19 +63,46 @@ public class AuthenticationFilter implem
 
     @Override
     public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException {
-        HttpServletRequest httpRequest = (HttpServletRequest)request;
+        HttpServletRequest httpRequest = (HttpServletRequest) request;
+        HttpServletResponse httpResponse = (HttpServletResponse) response;
+
         Optional<String> authHeader = 
Optional.ofNullable(httpRequest.getHeader("Authorization"));
         if (!checkAuthorizationHeader(authHeader)) {
-            
((HttpServletResponse)response).sendError(HttpServletResponse.SC_UNAUTHORIZED);
+            httpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED);
             return;
         }
-        chain.doFilter(request, response);
+
+        addSessionToRequest(httpRequest, httpResponse, authHeader);
+
+        chain.doFilter(httpRequest, response);
+    }
+
+    private void addSessionToRequest(HttpServletRequest httpRequest, 
HttpServletResponse httpResponse, Optional<String> authHeader) throws 
IOException {
+        try {
+            MailboxSession mailboxSession = createMailboxSession(authHeader);
+            httpRequest.setAttribute(MAILBOX_SESSION, mailboxSession);
+        } catch (MailboxException e) {
+            httpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED);
+        }
+    }
+
+    @VisibleForTesting MailboxSession createMailboxSession(Optional<String> 
authHeader) throws BadCredentialsException, MailboxException {
+        String username = authHeader
+            .map(AccessToken::fromString)
+            .map(accessTokenManager::getUsernameFromToken)
+            .orElseThrow(() -> new BadCredentialsException());
+        return mailboxManager.createSystemSession(username, LOG);
     }
 
     private boolean checkAuthorizationHeader(Optional<String> authHeader) 
throws IOException {
-        return authHeader
-                .map(x -> 
accessTokenManager.isValid(AccessToken.fromString(x)))
-                .orElse(false);
+        try {
+            return authHeader
+                    .map(AccessToken::fromString)
+                    .map(accessTokenManager::isValid)
+                    .orElse(false);
+        } catch (NotAnUUIDException e) {
+            return false;
+        }
     }
 
     @Override

Modified: 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPServlet.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPServlet.java?rev=1719363&r1=1719362&r2=1719363&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPServlet.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPServlet.java
 Fri Dec 11 12:29:47 2015
@@ -33,7 +33,9 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.james.jmap.methods.RequestHandler;
+import org.apache.james.jmap.model.AuthenticatedProtocolRequest;
 import org.apache.james.jmap.model.ProtocolRequest;
+import org.apache.james.jmap.model.ProtocolResponse;
 
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.databind.JsonMappingException;
@@ -61,8 +63,9 @@ public class JMAPServlet extends HttpSer
             List<Object[]> responses = 
                 requestAsJsonStream(req)
                 .map(ProtocolRequest::deserialize)
+                .map(x -> AuthenticatedProtocolRequest.decorate(x, req))
                 .map(requestHandler::handle)
-                .map(protocolResponse -> 
protocolResponse.asProtocolSpecification())
+                .map(ProtocolResponse::asProtocolSpecification)
                 .collect(Collectors.toList());
 
             objectMapper.writeValue(resp.getOutputStream(), responses);

Copied: 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/AuthenticatedProtocolRequest.java
 (from r1719362, 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java)
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/AuthenticatedProtocolRequest.java?p2=james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/AuthenticatedProtocolRequest.java&p1=james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java&r1=1719362&r2=1719363&rev=1719363&view=diff
==============================================================================
--- 
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessToken.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/AuthenticatedProtocolRequest.java
 Fri Dec 11 12:29:47 2015
@@ -16,41 +16,28 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
+package org.apache.james.jmap.model;
 
-package org.apache.james.jmap.api.access;
+import javax.servlet.http.HttpServletRequest;
 
-import java.util.Objects;
-import java.util.UUID;
+import org.apache.james.jmap.AuthenticationFilter;
+import org.apache.james.mailbox.MailboxSession;
 
-public class AccessToken {
-
-    public static AccessToken fromString(String tokenString) {
-        return new AccessToken(UUID.fromString(tokenString));
-    }
-
-    private final UUID token;
-
-    private AccessToken(UUID token) {
-        this.token = token;
-    }
+public class AuthenticatedProtocolRequest extends ProtocolRequest {
     
-    public static AccessToken generate() {
-        return new AccessToken(UUID.randomUUID());
+    public static AuthenticatedProtocolRequest decorate(ProtocolRequest 
request, HttpServletRequest httpServletRequest) {
+        return new AuthenticatedProtocolRequest(request, httpServletRequest);
     }
 
-    public String serialize() {
-        return token.toString();
-    }
+    private final HttpServletRequest httpServletRequest;
 
-    @Override
-    public boolean equals(Object o) {
-        return o != null
-            && o instanceof AccessToken
-            && Objects.equals(this.token, ((AccessToken)o).token);
+    private AuthenticatedProtocolRequest(ProtocolRequest request, 
HttpServletRequest httpServletRequest) {
+        super(request.getMethod(), request.getParameters(), 
request.getClientId());
+        this.httpServletRequest = httpServletRequest;
+        
     }
 
-    @Override
-    public int hashCode() {
-        return Objects.hash(token);
+    public MailboxSession getMailboxSession() {
+        return (MailboxSession) 
httpServletRequest.getAttribute(AuthenticationFilter.MAILBOX_SESSION);
     }
-}
+}
\ No newline at end of file

Modified: 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolRequest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolRequest.java?rev=1719363&r1=1719362&r2=1719363&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolRequest.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolRequest.java
 Fri Dec 11 12:29:47 2015
@@ -36,7 +36,7 @@ public class ProtocolRequest {
     private final ObjectNode parameters;
     private final String clientId;
 
-    private ProtocolRequest(String method, ObjectNode parameters, String 
clientId) {
+    protected ProtocolRequest(String method, ObjectNode parameters, String 
clientId) {
         this.method = method;
         this.parameters = parameters;
         this.clientId = clientId;

Modified: 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/AuthenticationFilterTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/AuthenticationFilterTest.java?rev=1719363&r1=1719362&r2=1719363&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/AuthenticationFilterTest.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/AuthenticationFilterTest.java
 Fri Dec 11 12:29:47 2015
@@ -18,16 +18,24 @@
  ****************************************************************/
 package org.apache.james.jmap;
 
+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.when;
 
+import java.util.Optional;
+
 import javax.servlet.FilterChain;
+import javax.servlet.ServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.james.jmap.api.AccessTokenManager;
 import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.api.access.exceptions.NotAnUUIDException;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.exception.BadCredentialsException;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -45,7 +53,8 @@ public class AuthenticationFilterTest {
         mockedRequest = mock(HttpServletRequest.class);
         mockedResponse = mock(HttpServletResponse.class);
         mockedAccessTokenManager = mock(AccessTokenManager.class);
-        tested = new AuthenticationFilter(mockedAccessTokenManager);
+        MailboxManager mockedMailboxManager = mock(MailboxManager.class);
+        tested = new AuthenticationFilter(mockedAccessTokenManager, 
mockedMailboxManager);
         filterChain = mock(FilterChain.class);
     }
     
@@ -70,17 +79,38 @@ public class AuthenticationFilterTest {
         
         verify(mockedResponse).sendError(HttpServletResponse.SC_UNAUTHORIZED);
     }
-    
+
     @Test
     public void filterShouldChainOnValidAuthorizationHeader() throws Exception 
{
+        AccessToken token = AccessToken.fromString(TOKEN);
         when(mockedRequest.getHeader("Authorization"))
             .thenReturn(TOKEN);
-        when(mockedAccessTokenManager.isValid(AccessToken.fromString(TOKEN)))
+        when(mockedAccessTokenManager.isValid(token))
             .thenReturn(true);
+        
when(mockedAccessTokenManager.getUsernameFromToken(token)).thenReturn("[email protected]");
         
         tested.doFilter(mockedRequest, mockedResponse, filterChain);
         
-        verify(filterChain).doFilter(mockedRequest, mockedResponse);
+        verify(filterChain).doFilter(any(ServletRequest.class), 
eq(mockedResponse));
+    }
+
+    @Test(expected=BadCredentialsException.class)
+    public void createMailboxSessionShouldThrowWhenAuthHeaderIsEmpty() throws 
Exception {
+        tested.createMailboxSession(Optional.empty());
+    }
+
+    @Test(expected=NotAnUUIDException.class)
+    public void createMailboxSessionShouldThrowWhenAuthHeaderIsNotAnUUID() 
throws Exception {
+        tested.createMailboxSession(Optional.of("bad"));
+    }
+
+    @Test
+    public void filterShouldReturnUnauthorizedOnBadAuthorizationHeader() 
throws Exception {
+        when(mockedRequest.getHeader("Authorization"))
+            .thenReturn("bad");
+
+        tested.doFilter(mockedRequest, mockedResponse, filterChain);
+        
+        verify(mockedResponse).sendError(HttpServletResponse.SC_UNAUTHORIZED);
     }
-    
 }

Modified: 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java?rev=1719363&r1=1719362&r2=1719363&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java
 Fri Dec 11 12:29:47 2015
@@ -45,6 +45,7 @@ import org.apache.james.jmap.crypto.Sign
 import org.apache.james.jmap.memory.access.MemoryAccessTokenRepository;
 import org.apache.james.jmap.model.ContinuationToken;
 import org.apache.james.jmap.utils.ZonedDateTimeProvider;
+import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.junit.After;
@@ -72,13 +73,13 @@ public class JMAPAuthenticationTest {
     public void setup() throws Exception {
         mockedUsersRepository = mock(UsersRepository.class);
         mockedZonedDateTimeProvider = mock(ZonedDateTimeProvider.class);
+        MailboxManager mockedMailboxManager = mock(MailboxManager.class);
         accessTokenManager = new AccessTokenManagerImpl(new 
MemoryAccessTokenRepository(TimeUnit.MILLISECONDS.convert(1, TimeUnit.HOURS)));
         continuationTokenManager = new SignedContinuationTokenManager(new 
JamesSignatureHandlerProvider().provide(), mockedZonedDateTimeProvider);
         
         AuthenticationServlet authenticationServlet = new 
AuthenticationServlet(mockedUsersRepository, continuationTokenManager, 
accessTokenManager);
 
-
-        AuthenticationFilter authenticationFilter = new 
AuthenticationFilter(accessTokenManager);
+        AuthenticationFilter authenticationFilter = new 
AuthenticationFilter(accessTokenManager, mockedMailboxManager);
         Filter getAuthenticationFilter = new 
BypassOnPostFilter(authenticationFilter);
         
         server = JettyHttpServer.create(

Modified: 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPGetMailboxesTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPGetMailboxesTest.java?rev=1719363&r1=1719362&r2=1719363&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPGetMailboxesTest.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPGetMailboxesTest.java
 Fri Dec 11 12:29:47 2015
@@ -22,20 +22,22 @@ import static com.jayway.restassured.Res
 import static com.jayway.restassured.config.EncoderConfig.encoderConfig;
 import static com.jayway.restassured.config.RestAssuredConfig.newConfig;
 import static org.hamcrest.Matchers.equalTo;
+import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.UUID;
 
 import org.apache.james.http.jetty.Configuration;
 import org.apache.james.http.jetty.JettyHttpServer;
 import org.apache.james.jmap.api.AccessTokenManager;
-import org.apache.james.jmap.api.ContinuationTokenManager;
+import org.apache.james.jmap.api.access.AccessToken;
 import org.apache.james.jmap.methods.GetMailboxesMethod;
 import org.apache.james.jmap.methods.JmapRequestParser;
 import org.apache.james.jmap.methods.JmapRequestParserImpl;
 import org.apache.james.jmap.methods.JmapResponseWriter;
 import org.apache.james.jmap.methods.JmapResponseWriterImpl;
 import org.apache.james.jmap.methods.RequestHandler;
-import org.apache.james.jmap.utils.ZonedDateTimeProvider;
-import org.apache.james.user.api.UsersRepository;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -47,30 +49,29 @@ import com.jayway.restassured.http.Conte
 
 public class JMAPGetMailboxesTest {
 
-    private UsersRepository mockedUsersRepository;
     private RequestHandler requestHandler;
     private JettyHttpServer server;
-    private TestClient client;
-    private ZonedDateTimeProvider mockedZonedDateTimeProvider;
+    private UUID accessToken;
     
     @Before
     public void setup() throws Exception {
-        mockedZonedDateTimeProvider = mock(ZonedDateTimeProvider.class);
-        mockedUsersRepository = mock(UsersRepository.class);
         AccessTokenManager mockedAccessTokenManager = 
mock(AccessTokenManager.class);
-        ContinuationTokenManager mockedContinuationTokenManager = 
mock(ContinuationTokenManager.class);
         JmapRequestParser jmapRequestParser = new JmapRequestParserImpl();
         JmapResponseWriter jmapResponseWriter = new JmapResponseWriterImpl();
 
         requestHandler = new RequestHandler(ImmutableSet.of(new 
GetMailboxesMethod(jmapRequestParser, jmapResponseWriter)));
         JMAPServlet jmapServlet = new JMAPServlet(requestHandler);
 
-        AuthenticationServlet authenticationServlet = new 
AuthenticationServlet(mockedUsersRepository, mockedContinuationTokenManager, 
mockedAccessTokenManager);
+        AuthenticationFilter authenticationFilter = new 
AuthenticationFilter(mockedAccessTokenManager);
+        
+        
when(mockedAccessTokenManager.isValid(any(AccessToken.class))).thenReturn(true);
+        
+        accessToken = UUID.randomUUID();
         
         server = JettyHttpServer.create(
                 Configuration.builder()
-                .serve("/authentication")
-                .with(authenticationServlet)
+                .filter("/jmap")
+                .with(authenticationFilter)
                 .serve("/jmap")
                 .with(jmapServlet)
                 .randomPort()
@@ -80,7 +81,6 @@ public class JMAPGetMailboxesTest {
 
         RestAssured.port = server.getPort();
         RestAssured.config = 
newConfig().encoderConfig(encoderConfig().defaultContentCharset(Charsets.UTF_8));
-        client = new TestClient(mockedUsersRepository, 
mockedZonedDateTimeProvider);
     }
 
     @After
@@ -90,7 +90,6 @@ public class JMAPGetMailboxesTest {
     
     @Test
     public void 
getMailboxesShouldErrorNotSupportedWhenRequestContainsNonNullAccountId() throws 
Exception {
-        String accessToken = client.authenticate();
         given()
             .accept(ContentType.JSON)
             .contentType(ContentType.JSON)
@@ -106,7 +105,6 @@ public class JMAPGetMailboxesTest {
     
     @Test
     public void 
getMailboxesShouldErrorNotSupportedWhenRequestContainsNonNullIds() throws 
Exception {
-        String accessToken = client.authenticate();
         given()
             .accept(ContentType.JSON)
             .contentType(ContentType.JSON)
@@ -121,7 +119,6 @@ public class JMAPGetMailboxesTest {
     
     @Test
     public void 
getMailboxesShouldErrorNotSupportedWhenRequestContainsNonNullProperties() 
throws Exception {
-        String accessToken = client.authenticate();
         given()
             .accept(ContentType.JSON)
             .contentType(ContentType.JSON)
@@ -136,7 +133,6 @@ public class JMAPGetMailboxesTest {
     
     @Test
     public void getMailboxesShouldErrorInvalidArgumentsWhenRequestIsInvalid() 
throws Exception {
-        String accessToken = client.authenticate();
         given()
             .accept(ContentType.JSON)
             .contentType(ContentType.JSON)

Modified: 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java?rev=1719363&r1=1719362&r2=1719363&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java
 Fri Dec 11 12:29:47 2015
@@ -63,8 +63,7 @@ public class JMAPServletTest {
         RestAssured.port = server.getPort();
         RestAssured.config = 
newConfig().encoderConfig(encoderConfig().defaultContentCharset(Charsets.UTF_8));
     }
-    
-    
+
     @After
     public void teardown() throws Exception {
         server.stop();

Modified: 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java?rev=1719363&r1=1719362&r2=1719363&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java
 Fri Dec 11 12:29:47 2015
@@ -124,8 +124,8 @@ public class RequestHandlerTest {
                 new ObjectNode(new JsonNodeFactory(false)).putObject("{\"id\": 
\"id\"}"),
                 new ObjectNode(new JsonNodeFactory(false)).textNode("#1")} ;
 
-        RequestHandler requestHandlerImpl = new 
RequestHandler(ImmutableSet.of());
-        requestHandlerImpl.handle(ProtocolRequest.deserialize(nodes));
+        RequestHandler requestHandler = new RequestHandler(ImmutableSet.of());
+        requestHandler.handle(ProtocolRequest.deserialize(nodes));
     }
 
     @Test(expected=IllegalStateException.class)



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to