JAMES-2008 data-jmap shoukd not rely on contract tests
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b76a7afd Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b76a7afd Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b76a7afd Branch: refs/heads/master Commit: b76a7afd9ee4f2fd0f7a30e5f2f8cfed1c2b74f9 Parents: a9fdb1c Author: benwa <[email protected]> Authored: Wed Apr 19 16:06:25 2017 +0700 Committer: Antoine Duprat <[email protected]> Committed: Wed Apr 26 13:50:10 2017 +0200 ---------------------------------------------------------------------- server/data/data-jmap-cassandra/pom.xml | 5 --- .../CassandraAccessTokenRepositoryTest.java | 40 +++++++------------ server/data/data-jmap/pom.xml | 5 --- .../api/access/AccessTokenRepositoryTest.java | 41 ++++++++------------ .../access/MemoryAccessTokenRepositoryTest.java | 30 +++----------- 5 files changed, 34 insertions(+), 87 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/b76a7afd/server/data/data-jmap-cassandra/pom.xml ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/pom.xml b/server/data/data-jmap-cassandra/pom.xml index 6500b51..30b55fa 100644 --- a/server/data/data-jmap-cassandra/pom.xml +++ b/server/data/data-jmap-cassandra/pom.xml @@ -232,11 +232,6 @@ <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> - <dependency> - <groupId>org.xenei</groupId> - <artifactId>junit-contracts</artifactId> - <scope>test</scope> - </dependency> </dependencies> </profile> <profile> http://git-wip-us.apache.org/repos/asf/james-project/blob/b76a7afd/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java index 20b332f..da5f421 100644 --- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java +++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java @@ -20,35 +20,21 @@ package org.apache.james.jmap.cassandra.access; import org.apache.james.backends.cassandra.CassandraCluster; +import org.apache.james.jmap.api.access.AccessTokenRepository; import org.apache.james.jmap.api.access.AccessTokenRepositoryTest; -import org.junit.runner.RunWith; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractImpl; -import org.xenei.junit.contract.ContractSuite; -import org.xenei.junit.contract.IProducer; +import org.junit.After; -@RunWith(ContractSuite.class) -@ContractImpl(CassandraAccessTokenRepository.class) -public class CassandraAccessTokenRepositoryTest { +public class CassandraAccessTokenRepositoryTest extends AccessTokenRepositoryTest { + private static final CassandraCluster CLUSTER = CassandraCluster.create(new CassandraAccessModule()); - private IProducer<CassandraAccessTokenRepository> producer = new IProducer<CassandraAccessTokenRepository>() { - - private CassandraCluster cassandra; - - @Override - public CassandraAccessTokenRepository newInstance() { - cassandra = CassandraCluster.create(new CassandraAccessModule()); - return new CassandraAccessTokenRepository(new CassandraAccessTokenDAO(cassandra.getConf(), AccessTokenRepositoryTest.TTL_IN_MS)); - } - - @Override - public void cleanUp() { - cassandra.clearAllTables(); - } - }; - - @Contract.Inject - public IProducer<CassandraAccessTokenRepository> getProducer() { - return producer; + @Override + protected AccessTokenRepository provideAccessTokenRepository() { + return new CassandraAccessTokenRepository( + new CassandraAccessTokenDAO(CLUSTER.getConf(), AccessTokenRepositoryTest.TTL_IN_MS)); } + + @After + public void tearDown() { + CLUSTER.clearAllTables(); + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/b76a7afd/server/data/data-jmap/pom.xml ---------------------------------------------------------------------- diff --git a/server/data/data-jmap/pom.xml b/server/data/data-jmap/pom.xml index 51df151..f363e4d 100644 --- a/server/data/data-jmap/pom.xml +++ b/server/data/data-jmap/pom.xml @@ -222,11 +222,6 @@ <artifactId>slf4j-simple</artifactId> <scope>test</scope> </dependency> - <dependency> - <groupId>org.xenei</groupId> - <artifactId>junit-contracts</artifactId> - <scope>test</scope> - </dependency> </dependencies> </profile> <profile> http://git-wip-us.apache.org/repos/asf/james-project/blob/b76a7afd/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryTest.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryTest.java index 9914883..b7f6c32 100644 --- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryTest.java +++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryTest.java @@ -25,46 +25,37 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import java.util.concurrent.CompletionException; import org.apache.james.jmap.api.access.exceptions.InvalidAccessToken; -import org.junit.After; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractTest; -import org.xenei.junit.contract.IProducer; +import org.junit.Before; +import org.junit.Test; -@Contract(AccessTokenRepository.class) -public class AccessTokenRepositoryTest<T extends AccessTokenRepository> { +public abstract class AccessTokenRepositoryTest { private static final AccessToken TOKEN = AccessToken.generate(); private static final String USERNAME = "username"; public static final long TTL_IN_MS = 1000; - private IProducer<T> producer; - private AccessTokenRepository accessTokenRepository; - @Contract.Inject - public final void setProducer(IProducer<T> producer) { - this.producer = producer; - this.accessTokenRepository = producer.newInstance(); - } + protected abstract AccessTokenRepository provideAccessTokenRepository(); - @After - public void tearDown() { - producer.cleanUp(); + @Before + public final void setUp() { + this.accessTokenRepository = provideAccessTokenRepository(); } - @ContractTest + @Test public void validTokenMustBeRetrieved() throws Throwable { accessTokenRepository.addToken(USERNAME, TOKEN).join(); assertThat(accessTokenRepository.getUsernameFromToken(TOKEN).join()).isEqualTo(USERNAME); } - @ContractTest + @Test public void absentTokensMustBeInvalid() throws Exception { assertThatThrownBy(() -> accessTokenRepository.getUsernameFromToken(TOKEN).join()).isInstanceOf(CompletionException.class); assertThatThrownBy(() -> accessTokenRepository.getUsernameFromToken(TOKEN).join()).hasCauseInstanceOf(InvalidAccessToken.class); } - @ContractTest + @Test public void removedTokensMustBeInvalid() throws Exception { accessTokenRepository.addToken(USERNAME, TOKEN).join(); accessTokenRepository.removeToken(TOKEN).join(); @@ -72,7 +63,7 @@ public class AccessTokenRepositoryTest<T extends AccessTokenRepository> { assertThatThrownBy(() -> accessTokenRepository.getUsernameFromToken(TOKEN).join()).hasCauseInstanceOf(InvalidAccessToken.class); } - @ContractTest + @Test public void outDatedTokenMustBeInvalid() throws Exception { accessTokenRepository.addToken(USERNAME, TOKEN).join(); Thread.sleep(2 * TTL_IN_MS); @@ -80,31 +71,31 @@ public class AccessTokenRepositoryTest<T extends AccessTokenRepository> { assertThatThrownBy(() -> accessTokenRepository.getUsernameFromToken(TOKEN).join()).hasCauseInstanceOf(InvalidAccessToken.class); } - @ContractTest + @Test public void addTokenMustThrowWhenUsernameIsNull() throws Exception { assertThatThrownBy(() -> accessTokenRepository.addToken(null, TOKEN)) .isInstanceOf(NullPointerException.class); } - @ContractTest + @Test public void addTokenMustThrowWhenUsernameIsEmpty() throws Exception { assertThatThrownBy(() -> accessTokenRepository.addToken("", TOKEN)) .isInstanceOf(IllegalArgumentException.class); } - @ContractTest + @Test public void addTokenMustThrowWhenTokenIsNull() throws Exception { assertThatThrownBy(() -> accessTokenRepository.addToken(USERNAME, null)) .isInstanceOf(NullPointerException.class); } - @ContractTest + @Test public void removeTokenTokenMustThrowWhenTokenIsNull() throws Exception { assertThatThrownBy(() -> accessTokenRepository.removeToken(null)) .isInstanceOf(NullPointerException.class); } - @ContractTest + @Test public void getUsernameFromTokenMustThrowWhenTokenIsNull() throws Exception { assertThatThrownBy(() -> accessTokenRepository.getUsernameFromToken(null)) .isInstanceOf(NullPointerException.class); http://git-wip-us.apache.org/repos/asf/james-project/blob/b76a7afd/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java index 8949a48..6cb063a 100644 --- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java +++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java @@ -19,32 +19,12 @@ package org.apache.james.jmap.memory.access; +import org.apache.james.jmap.api.access.AccessTokenRepository; import org.apache.james.jmap.api.access.AccessTokenRepositoryTest; -import org.junit.runner.RunWith; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractImpl; -import org.xenei.junit.contract.ContractSuite; -import org.xenei.junit.contract.IProducer; -@RunWith(ContractSuite.class) -@ContractImpl(MemoryAccessTokenRepository.class) -public class MemoryAccessTokenRepositoryTest { - - private IProducer<MemoryAccessTokenRepository> producer = new IProducer<MemoryAccessTokenRepository>() { - @Override - public MemoryAccessTokenRepository newInstance() { - return new MemoryAccessTokenRepository(AccessTokenRepositoryTest.TTL_IN_MS); - } - - @Override - public void cleanUp() { - - } - }; - - @Contract.Inject - public IProducer<MemoryAccessTokenRepository> getProducer() { - return producer; +public class MemoryAccessTokenRepositoryTest extends AccessTokenRepositoryTest { + @Override + protected AccessTokenRepository provideAccessTokenRepository() { + return new MemoryAccessTokenRepository(AccessTokenRepositoryTest.TTL_IN_MS); } - } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
