Author: matthieu
Date: Fri Dec 11 10:08:45 2015
New Revision: 1719323
URL: http://svn.apache.org/viewvc?rev=1719323&view=rev
Log:
JAMES-1644 Add guice injection in JMAP module
Added:
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/jmap/
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/jmap/JMAPCommonModule.java
Modified:
james/project/trunk/server/container/cassandra-guice/pom.xml
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessTokenRepository.java
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepository.java
james/project/trunk/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java
james/project/trunk/server/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/AuthenticationServlet.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/AccessTokenManagerImpl.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/JamesSignatureHandler.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/SignatureHandler.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/SignedContinuationTokenManager.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/AccessTokenRequest.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/DefaultZonedDateTimeProvider.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/ZonedDateTimeProvider.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/crypto/AccessTokenManagerImplTest.java
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/crypto/SignedContinuationTokenManagerTest.java
Modified: james/project/trunk/server/container/cassandra-guice/pom.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/pom.xml?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/pom.xml (original)
+++ james/project/trunk/server/container/cassandra-guice/pom.xml Fri Dec 11
10:08:45 2015
@@ -267,6 +267,10 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>james-server-jmap</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>james-server-lifecycle-api</artifactId>
</dependency>
<dependency>
Added:
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/jmap/JMAPCommonModule.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/jmap/JMAPCommonModule.java?rev=1719323&view=auto
==============================================================================
---
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/jmap/JMAPCommonModule.java
(added)
+++
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/jmap/JMAPCommonModule.java
Fri Dec 11 10:08:45 2015
@@ -0,0 +1,52 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.jmap;
+
+import java.util.concurrent.TimeUnit;
+
+import org.apache.james.jmap.api.AccessTokenManager;
+import org.apache.james.jmap.api.ContinuationTokenManager;
+import org.apache.james.jmap.api.access.AccessTokenRepository;
+import org.apache.james.jmap.crypto.AccessTokenManagerImpl;
+import org.apache.james.jmap.crypto.JamesSignatureHandler;
+import org.apache.james.jmap.crypto.SignatureHandler;
+import org.apache.james.jmap.crypto.SignedContinuationTokenManager;
+import org.apache.james.jmap.memory.access.MemoryAccessTokenRepository;
+import org.apache.james.jmap.utils.DefaultZonedDateTimeProvider;
+import org.apache.james.jmap.utils.ZonedDateTimeProvider;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.name.Names;
+
+public class JMAPCommonModule extends AbstractModule {
+
+ private static final long DEFAULT_TOKEN_EXPIRATION_IN_MS =
TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);
+
+ @Override
+ protected void configure() {
+ bind(SignatureHandler.class).to(JamesSignatureHandler.class);
+
bind(ZonedDateTimeProvider.class).to(DefaultZonedDateTimeProvider.class);
+
bind(ContinuationTokenManager.class).to(SignedContinuationTokenManager.class);
+
+
bindConstant().annotatedWith(Names.named(AccessTokenRepository.TOKEN_EXPIRATION_IN_MS)).to(DEFAULT_TOKEN_EXPIRATION_IN_MS);
+
bind(AccessTokenRepository.class).to(MemoryAccessTokenRepository.class);
+ bind(AccessTokenManager.class).to(AccessTokenManagerImpl.class);
+ }
+
+}
Modified:
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessTokenRepository.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessTokenRepository.java?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
---
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessTokenRepository.java
(original)
+++
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/access/AccessTokenRepository.java
Fri Dec 11 10:08:45 2015
@@ -24,6 +24,8 @@ import org.apache.james.jmap.api.access.
public interface AccessTokenRepository {
+ String TOKEN_EXPIRATION_IN_MS = "tokenExpirationInMs";
+
void addToken(String username, AccessToken accessToken) throws
AccessTokenAlreadyStored;
void removeToken(AccessToken accessToken);
Modified:
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepository.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepository.java?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
---
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepository.java
(original)
+++
james/project/trunk/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepository.java
Fri Dec 11 10:08:45 2015
@@ -22,6 +22,7 @@ package org.apache.james.jmap.memory.acc
import java.util.Optional;
import javax.inject.Inject;
+import javax.inject.Named;
import javax.inject.Singleton;
import org.apache.commons.collections4.map.PassiveExpiringMap;
@@ -38,7 +39,7 @@ public class MemoryAccessTokenRepository
private final PassiveExpiringMap<AccessToken, String>
tokensExpirationDates;
@Inject
- public MemoryAccessTokenRepository(long durationInMilliseconds) {
+ public MemoryAccessTokenRepository(@Named(TOKEN_EXPIRATION_IN_MS) long
durationInMilliseconds) {
tokensExpirationDates = new
PassiveExpiringMap<>(durationInMilliseconds);
}
Modified:
james/project/trunk/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
---
james/project/trunk/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java
(original)
+++
james/project/trunk/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java
Fri Dec 11 10:08:45 2015
@@ -32,7 +32,7 @@ public class MemoryAccessTokenRepository
private static final AccessToken TOKEN = AccessToken.generate();
private static final String USERNAME = "username";
- private static final int TTL_IN_MS = 100;
+ private static final long TTL_IN_MS = 100;
private MemoryAccessTokenRepository accessTokenRepository;
Modified: james/project/trunk/server/pom.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/pom.xml?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
--- james/project/trunk/server/pom.xml (original)
+++ james/project/trunk/server/pom.xml Fri Dec 11 10:08:45 2015
@@ -538,6 +538,11 @@
<type>test-jar</type>
</dependency>
<dependency>
+ <groupId>org.apache.james</groupId>
+ <artifactId>james-server-jmap</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.james.protocols</groupId>
<artifactId>protocols-smtp</artifactId>
<version>${protocols.version}</version>
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=1719323&r1=1719322&r2=1719323&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 10:08:45 2015
@@ -21,6 +21,7 @@ package org.apache.james.jmap;
import java.io.IOException;
import java.util.Optional;
+import javax.inject.Inject;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
@@ -37,6 +38,7 @@ public class AuthenticationFilter implem
private AccessTokenManager accessTokenManager;
+ @Inject
public AuthenticationFilter(AccessTokenManager accessTokenManager) {
this.accessTokenManager = accessTokenManager;
}
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/AuthenticationServlet.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/AuthenticationServlet.java?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/AuthenticationServlet.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/AuthenticationServlet.java
Fri Dec 11 10:08:45 2015
@@ -21,6 +21,7 @@ package org.apache.james.jmap;
import java.io.IOException;
import javax.inject.Inject;
+import javax.inject.Singleton;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
@@ -45,6 +46,7 @@ import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.annotations.VisibleForTesting;
+@Singleton
public class AuthenticationServlet extends HttpServlet {
public static final String JSON_CONTENT_TYPE = "application/json";
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/AccessTokenManagerImpl.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/AccessTokenManagerImpl.java?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/AccessTokenManagerImpl.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/AccessTokenManagerImpl.java
Fri Dec 11 10:08:45 2015
@@ -19,6 +19,9 @@
package org.apache.james.jmap.crypto;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
import org.apache.james.jmap.api.AccessTokenManager;
import org.apache.james.jmap.api.access.AccessToken;
import org.apache.james.jmap.api.access.AccessTokenRepository;
@@ -26,10 +29,12 @@ import org.apache.james.jmap.api.access.
import com.google.common.base.Preconditions;
+@Singleton
public class AccessTokenManagerImpl implements AccessTokenManager {
private final AccessTokenRepository accessTokenRepository;
+ @Inject
public AccessTokenManagerImpl(AccessTokenRepository accessTokenRepository)
{
this.accessTokenRepository = accessTokenRepository;
}
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/JamesSignatureHandler.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/JamesSignatureHandler.java?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/JamesSignatureHandler.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/JamesSignatureHandler.java
Fri Dec 11 10:08:45 2015
@@ -29,6 +29,9 @@ import java.security.PublicKey;
import java.security.Signature;
import java.security.SignatureException;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalConfiguration;
@@ -37,9 +40,11 @@ import org.apache.james.lifecycle.api.Co
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.base.Throwables;
+@Singleton
public class JamesSignatureHandler implements SignatureHandler, Configurable {
private static final Logger LOGGER =
LoggerFactory.getLogger(JamesSignatureHandler.class);
@@ -54,7 +59,8 @@ public class JamesSignatureHandler imple
private PrivateKey privateKey;
private PublicKey publicKey;
- public JamesSignatureHandler(FileSystem fileSystem) {
+ @Inject
+ @VisibleForTesting JamesSignatureHandler(FileSystem fileSystem) {
this.fileSystem = fileSystem;
}
@@ -63,6 +69,7 @@ public class JamesSignatureHandler imple
secret = configuration.getString("tls.secret", "");
}
+ @Override
public void init() throws Exception {
KeyStore keystore = KeyStore.getInstance(JKS);
InputStream fis = fileSystem.getResource(keystoreURL);
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/SignatureHandler.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/SignatureHandler.java?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/SignatureHandler.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/SignatureHandler.java
Fri Dec 11 10:08:45 2015
@@ -20,6 +20,8 @@
package org.apache.james.jmap.crypto;
public interface SignatureHandler {
+
+ void init() throws Exception;
String sign(String source);
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/SignedContinuationTokenManager.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/SignedContinuationTokenManager.java?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/SignedContinuationTokenManager.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/crypto/SignedContinuationTokenManager.java
Fri Dec 11 10:08:45 2015
@@ -22,17 +22,22 @@ package org.apache.james.jmap.crypto;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
import org.apache.james.jmap.api.ContinuationTokenManager;
import org.apache.james.jmap.model.ContinuationToken;
import org.apache.james.jmap.utils.ZonedDateTimeProvider;
import com.google.common.base.Preconditions;
+@Singleton
public class SignedContinuationTokenManager implements
ContinuationTokenManager {
private final SignatureHandler signatureHandler;
private final ZonedDateTimeProvider zonedDateTimeProvider;
+ @Inject
public SignedContinuationTokenManager(SignatureHandler signatureHandler,
ZonedDateTimeProvider zonedDateTimeProvider) {
this.signatureHandler = signatureHandler;
this.zonedDateTimeProvider = zonedDateTimeProvider;
@@ -41,7 +46,7 @@ public class SignedContinuationTokenMana
@Override
public ContinuationToken generateToken(String username) {
Preconditions.checkNotNull(username);
- ZonedDateTime expirationTime =
zonedDateTimeProvider.provide().plusMinutes(15);
+ ZonedDateTime expirationTime =
zonedDateTimeProvider.get().plusMinutes(15);
return new ContinuationToken(username,
expirationTime,
signatureHandler.sign(username + ContinuationToken.SEPARATOR +
DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(expirationTime)));
@@ -70,6 +75,6 @@ public class SignedContinuationTokenMana
}
private boolean isExpired(ContinuationToken token) {
- return
token.getExpirationDate().isBefore(zonedDateTimeProvider.provide());
+ return token.getExpirationDate().isBefore(zonedDateTimeProvider.get());
}
}
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/AccessTokenRequest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/AccessTokenRequest.java?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/AccessTokenRequest.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/AccessTokenRequest.java
Fri Dec 11 10:08:45 2015
@@ -18,11 +18,12 @@
****************************************************************/
package org.apache.james.jmap.model;
+import org.apache.james.jmap.exceptions.MalformedContinuationTokenException;
+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
-import org.apache.james.jmap.exceptions.MalformedContinuationTokenException;
-@JsonDeserialize(builder=AccessTokenRequest.Builder.class)
+@JsonDeserialize(builder = AccessTokenRequest.Builder.class)
public class AccessTokenRequest {
public static final String UNIQUE_JSON_PATH = "/token";
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/DefaultZonedDateTimeProvider.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/DefaultZonedDateTimeProvider.java?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/DefaultZonedDateTimeProvider.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/DefaultZonedDateTimeProvider.java
Fri Dec 11 10:08:45 2015
@@ -25,7 +25,7 @@ import java.time.ZonedDateTime;
public class DefaultZonedDateTimeProvider implements ZonedDateTimeProvider {
@Override
- public ZonedDateTime provide() {
+ public ZonedDateTime get() {
return ZonedDateTime.now(ZoneOffset.UTC);
}
}
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/ZonedDateTimeProvider.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/ZonedDateTimeProvider.java?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/ZonedDateTimeProvider.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/ZonedDateTimeProvider.java
Fri Dec 11 10:08:45 2015
@@ -21,8 +21,8 @@ package org.apache.james.jmap.utils;
import java.time.ZonedDateTime;
-public interface ZonedDateTimeProvider {
+import javax.inject.Provider;
- ZonedDateTime provide();
+public interface ZonedDateTimeProvider extends Provider<ZonedDateTime> {
}
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=1719323&r1=1719322&r2=1719323&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 10:08:45 2015
@@ -18,11 +18,11 @@
****************************************************************/
package org.apache.james.jmap;
-import static org.assertj.core.api.Assertions.assertThat;
import static com.jayway.restassured.RestAssured.given;
import static com.jayway.restassured.RestAssured.with;
import static com.jayway.restassured.config.EncoderConfig.encoderConfig;
import static com.jayway.restassured.config.RestAssuredConfig.newConfig;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.isA;
import static org.mockito.Mockito.mock;
@@ -38,7 +38,6 @@ import javax.servlet.Filter;
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.crypto.AccessTokenManagerImpl;
import org.apache.james.jmap.crypto.JamesSignatureHandlerProvider;
@@ -65,9 +64,9 @@ public class JMAPAuthenticationTest {
private JettyHttpServer server;
private UsersRepository mockedUsersRepository;
- private ContinuationTokenManager continuationTokenManager;
private ZonedDateTimeProvider mockedZonedDateTimeProvider;
private AccessTokenManager accessTokenManager;
+ private SignedContinuationTokenManager continuationTokenManager;
@Before
public void setup() throws Exception {
@@ -96,7 +95,7 @@ public class JMAPAuthenticationTest {
RestAssured.port = server.getPort();
RestAssured.config =
newConfig().encoderConfig(encoderConfig().defaultContentCharset(Charsets.UTF_8));
}
-
+
@After
public void teardown() throws Exception {
server.stop();
@@ -180,7 +179,7 @@ public class JMAPAuthenticationTest {
@Test
public void mustReturnJsonResponse() throws Exception {
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(oldDate);
given()
@@ -196,7 +195,7 @@ public class JMAPAuthenticationTest {
@Test
public void methodShouldContainPasswordWhenValidResquest() throws
Exception {
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(oldDate);
given()
@@ -212,7 +211,7 @@ public class JMAPAuthenticationTest {
@Test
public void mustReturnContinuationTokenWhenValidResquest() throws
Exception {
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(oldDate);
given()
@@ -228,7 +227,7 @@ public class JMAPAuthenticationTest {
@Test
public void mustReturnAuthenticationFailedWhenBadPassword() throws
Exception {
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(oldDate);
String continuationToken = fromGoodContinuationTokenRequest();
@@ -249,7 +248,7 @@ public class JMAPAuthenticationTest {
when(mockedUsersRepository.test("[email protected]", "password"))
.thenReturn(true);
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(oldDate);
given()
@@ -264,14 +263,14 @@ public class JMAPAuthenticationTest {
@Test
public void
mustReturnRestartAuthenticationWhenContinuationTokenIsExpired() throws
Exception {
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(oldDate);
String continuationToken = fromGoodContinuationTokenRequest();
when(mockedUsersRepository.test("[email protected]", "password"))
.thenReturn(true);
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(afterExpirationDate);
given()
@@ -286,7 +285,7 @@ public class JMAPAuthenticationTest {
@Test
public void mustReturnAuthenticationFailedWhenUsersRepositoryException()
throws Exception {
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(oldDate);
String continuationToken = fromGoodContinuationTokenRequest();
@@ -306,14 +305,14 @@ public class JMAPAuthenticationTest {
@Test
public void mustReturnCreatedWhenGoodPassword() throws Exception {
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(oldDate);
String continuationToken = fromGoodContinuationTokenRequest();
when(mockedUsersRepository.test("[email protected]", "password"))
.thenReturn(true);
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(newDate);
given()
@@ -328,14 +327,14 @@ public class JMAPAuthenticationTest {
@Test
public void mustSendJsonContainingAccessTokenWhenGoodPassword() throws
Exception {
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(oldDate);
String continuationToken = fromGoodContinuationTokenRequest();
when(mockedUsersRepository.test("[email protected]", "password"))
.thenReturn(true);
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(newDate);
given()
@@ -381,14 +380,14 @@ public class JMAPAuthenticationTest {
@Test
public void getMustReturnEndpointsWhenCorrectAuthentication() throws
Exception {
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(oldDate);
String continuationToken = fromGoodContinuationTokenRequest();
when(mockedUsersRepository.test("[email protected]", "password"))
.thenReturn(true);
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(newDate);
String accessToken = fromGoodAccessTokenRequest(continuationToken);
@@ -443,14 +442,14 @@ public class JMAPAuthenticationTest {
@Test
public void deleteMustInvalidAuthorizationOnCorrectAuthorization() throws
Exception {
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(oldDate);
String continuationToken = fromGoodContinuationTokenRequest();
when(mockedUsersRepository.test("[email protected]", "password"))
.thenReturn(true);
- when(mockedZonedDateTimeProvider.provide())
+ when(mockedZonedDateTimeProvider.get())
.thenReturn(newDate);
String accessToken = fromGoodAccessTokenRequest(continuationToken);
Modified:
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/crypto/AccessTokenManagerImplTest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/crypto/AccessTokenManagerImplTest.java?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/crypto/AccessTokenManagerImplTest.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/crypto/AccessTokenManagerImplTest.java
Fri Dec 11 10:08:45 2015
@@ -38,7 +38,7 @@ public class AccessTokenManagerImplTest
accessTokenRepository = new MemoryAccessTokenRepository(100);
accessTokenManager = new AccessTokenManagerImpl(accessTokenRepository);
}
-
+
@Test(expected=NullPointerException.class)
public void grantShouldThrowOnNullUsername() throws Exception {
accessTokenManager.grantAccessToken(null);
Modified:
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/crypto/SignedContinuationTokenManagerTest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/crypto/SignedContinuationTokenManagerTest.java?rev=1719323&r1=1719322&r2=1719323&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/crypto/SignedContinuationTokenManagerTest.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/crypto/SignedContinuationTokenManagerTest.java
Fri Dec 11 10:08:45 2015
@@ -19,10 +19,12 @@
package org.apache.james.jmap.crypto;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import static org.assertj.core.api.Assertions.assertThat;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
import
org.apache.james.jmap.api.ContinuationTokenManager.ContinuationTokenStatus;
import org.apache.james.jmap.model.ContinuationToken;
@@ -30,9 +32,6 @@ import org.apache.james.jmap.utils.Zoned
import org.junit.Before;
import org.junit.Test;
-import java.time.ZonedDateTime;
-import java.time.format.DateTimeFormatter;
-
public class SignedContinuationTokenManagerTest {
private static final String EXPIRATION_DATE_STRING =
"2011-12-03T10:15:30+01:00";
@@ -56,7 +55,7 @@ public class SignedContinuationTokenMana
@Test
public void isValidShouldRecognizeValidTokens() throws Exception {
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE);
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock -> DATE);
assertThat(
toKenManager.isValid(
toKenManager.generateToken("user")))
@@ -65,7 +64,7 @@ public class SignedContinuationTokenMana
@Test
public void isValidShouldRecognizeTokenWhereUsernameIsModified() throws
Exception {
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE);
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock -> DATE);
ContinuationToken continuationToken =
toKenManager.generateToken("user");
ContinuationToken pirateContinuationToken = new
ContinuationToken("pirate",
continuationToken.getExpirationDate(),
@@ -75,7 +74,7 @@ public class SignedContinuationTokenMana
@Test
public void isValidShouldRecognizeTokenWhereExpirationDateIsModified()
throws Exception {
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE);
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock -> DATE);
ContinuationToken continuationToken =
toKenManager.generateToken("user");
ContinuationToken pirateContinuationToken = new
ContinuationToken(continuationToken.getUsername(),
continuationToken.getExpirationDate().plusHours(1),
@@ -85,7 +84,7 @@ public class SignedContinuationTokenMana
@Test
public void isValidShouldRecognizeTokenWhereSignatureIsModified() throws
Exception {
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE);
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock -> DATE);
ContinuationToken continuationToken =
toKenManager.generateToken("user");
ContinuationToken pirateContinuationToken = new
ContinuationToken(continuationToken.getUsername(),
continuationToken.getExpirationDate(),
@@ -95,15 +94,15 @@ public class SignedContinuationTokenMana
@Test
public void isValidShouldReturnFalseWhenTokenIsOutdated() throws Exception
{
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE);
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock -> DATE);
ContinuationToken continuationToken =
toKenManager.generateToken("user");
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE.plusHours(1));
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock ->
DATE.plusHours(1));
assertThat(toKenManager.isValid(continuationToken)).isFalse();
}
@Test
public void isValidShouldReturnFalseOnNonValidSignatures() throws
Exception {
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE);
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock -> DATE);
ContinuationToken pirateContinuationToken = new
ContinuationToken("user", DATE.plusMinutes(15), "fake");
assertThat(toKenManager.isValid(pirateContinuationToken)).isFalse();
}
@@ -115,7 +114,7 @@ public class SignedContinuationTokenMana
@Test
public void getValidityShouldRecognizeValidTokens() throws Exception {
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE);
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock -> DATE);
assertThat(
toKenManager.getValidity(
toKenManager.generateToken("user")))
@@ -124,7 +123,7 @@ public class SignedContinuationTokenMana
@Test
public void getValidityShouldRecognizeTokenWhereUsernameIsModified()
throws Exception {
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE);
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock -> DATE);
ContinuationToken continuationToken =
toKenManager.generateToken("user");
ContinuationToken pirateContinuationToken = new
ContinuationToken("pirate",
continuationToken.getExpirationDate(),
@@ -134,7 +133,7 @@ public class SignedContinuationTokenMana
@Test
public void getValidityhouldRecognizeTokenWhereExpirationDateIsModified()
throws Exception {
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE);
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock -> DATE);
ContinuationToken continuationToken =
toKenManager.generateToken("user");
ContinuationToken pirateContinuationToken = new
ContinuationToken(continuationToken.getUsername(),
continuationToken.getExpirationDate().plusHours(1),
@@ -144,7 +143,7 @@ public class SignedContinuationTokenMana
@Test
public void getValidityShouldRecognizeTokenWhereSignatureIsModified()
throws Exception {
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE);
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock -> DATE);
ContinuationToken continuationToken =
toKenManager.generateToken("user");
ContinuationToken pirateContinuationToken = new
ContinuationToken(continuationToken.getUsername(),
continuationToken.getExpirationDate(),
@@ -154,15 +153,15 @@ public class SignedContinuationTokenMana
@Test
public void getValidityShouldReturnFalseWhenTokenIsOutdated() throws
Exception {
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE);
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock -> DATE);
ContinuationToken continuationToken =
toKenManager.generateToken("user");
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE.plusHours(1));
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock ->
DATE.plusHours(1));
assertThat(toKenManager.getValidity(continuationToken)).isEqualTo(ContinuationTokenStatus.EXPIRED);
}
@Test
public void getValidityShouldReturnFalseOnNonValidSignatures() throws
Exception {
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE);
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock -> DATE);
ContinuationToken pirateContinuationToken = new
ContinuationToken("user", DATE.plusMinutes(15), "fake");
assertThat(toKenManager.getValidity(pirateContinuationToken)).isEqualTo(ContinuationTokenStatus.INVALID);
}
@@ -174,7 +173,7 @@ public class SignedContinuationTokenMana
@Test
public void generateTokenShouldHaveTheRightOutPut() throws Exception {
- when(zonedDateTimeProvider.provide()).thenAnswer(invocationOnMock ->
DATE);
+ when(zonedDateTimeProvider.get()).thenAnswer(invocationOnMock -> DATE);
assertThat(toKenManager.generateToken("user").serialize())
.isEqualTo("user_2011-12-03T10:30:30+01:00_eOvOqTmV3dPrhIkbuQSj2sno3YJMxWl6J1sH1JhwYcaNgMX9twm98/WSF9uyDkvJgvBxFokDr53AbxQ3DsJysB2dAzCC0tUM4u8ZMvl/hQrFXhVCdpVMyHRvixKCxnHsVXAr9g3WMn2vbIVq5i3HPgA6/p9FB1+N4WA06B8ueoCrdxT2w1ITEm8p+QZvje3n1F344SgrqgIYqvt0yUvzxnB24f3ccjAKidlBj4wZkcXgUTMbZ7MdnCbDGbp10+tgJqxiv1S0rXZMeJLJ+vBt5TyqEhsJUmUQ84qctlB4yR5FS+ncbAOyZAxs2dWsHqiQjedb3IR77N7CASzqO2mmVw==");
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]