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]