You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rc...@apache.org on 2020/08/17 09:11:20 UTC
[james-project] 09/26: [Refactoring] Migrate
AccessTokenRepositoryTest to AccessTokenRepositoryContract in JUnit5
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 0306f81e1d0fb704886167cd84524eac2908d288
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Thu Aug 13 15:02:05 2020 +0700
[Refactoring] Migrate AccessTokenRepositoryTest to AccessTokenRepositoryContract in JUnit5
---
.../access/CassandraAccessTokenRepositoryTest.java | 37 ++++-----
.../api/access/AccessTokenRepositoryContract.java | 85 ++++++++++++++++++++
.../jmap/api/access/AccessTokenRepositoryTest.java | 91 ----------------------
.../access/MemoryAccessTokenRepositoryTest.java | 20 ++---
4 files changed, 109 insertions(+), 124 deletions(-)
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 5e2c7b3..66640e9 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,36 +20,27 @@
package org.apache.james.jmap.cassandra.access;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.jmap.api.access.AccessTokenRepository;
-import org.apache.james.jmap.api.access.AccessTokenRepositoryTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
+import org.apache.james.jmap.api.access.AccessTokenRepositoryContract;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.RegisterExtension;
-public class CassandraAccessTokenRepositoryTest extends AccessTokenRepositoryTest {
+class CassandraAccessTokenRepositoryTest implements AccessTokenRepositoryContract {
+ @RegisterExtension
+ static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraAccessModule.MODULE);
- @Rule
- public DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
- private CassandraCluster cassandra;
+ AccessTokenRepository accessTokenRepository;
- @Override
- @Before
- public void setUp() throws Exception {
- cassandra = CassandraCluster.create(CassandraAccessModule.MODULE, cassandraServer.getHost());
- super.setUp();
- }
-
- @After
- public void tearDown() {
- cassandra.close();
+ @BeforeEach
+ void setUp(CassandraCluster cassandra) {
+ accessTokenRepository = new CassandraAccessTokenRepository(
+ new CassandraAccessTokenDAO(cassandra.getConf(), AccessTokenRepositoryContract.TTL_IN_MS));
}
@Override
- protected AccessTokenRepository provideAccessTokenRepository() {
- return new CassandraAccessTokenRepository(
- new CassandraAccessTokenDAO(cassandra.getConf(), AccessTokenRepositoryTest.TTL_IN_MS));
+ public AccessTokenRepository accessTokenRepository() {
+ return accessTokenRepository;
}
}
diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryContract.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryContract.java
new file mode 100644
index 0000000..87e11cf
--- /dev/null
+++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryContract.java
@@ -0,0 +1,85 @@
+/****************************************************************
+ * 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.api.access;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import org.apache.james.core.Username;
+import org.apache.james.jmap.api.access.exceptions.InvalidAccessToken;
+import org.junit.jupiter.api.Test;
+
+public interface AccessTokenRepositoryContract {
+ AccessToken TOKEN = AccessToken.generate();
+ Username USERNAME = Username.of("username");
+ long TTL_IN_MS = 1000;
+
+ AccessTokenRepository accessTokenRepository();
+
+ @Test
+ default void validTokenMustBeRetrieved() {
+ accessTokenRepository().addToken(USERNAME, TOKEN).block();
+ assertThat(accessTokenRepository().getUsernameFromToken(TOKEN).block()).isEqualTo(USERNAME);
+ }
+
+ @Test
+ default void absentTokensMustBeInvalid() {
+ assertThatThrownBy(() -> accessTokenRepository().getUsernameFromToken(TOKEN).block()).isExactlyInstanceOf(InvalidAccessToken.class);
+ }
+
+ @Test
+ default void removedTokensMustBeInvalid() {
+ accessTokenRepository().addToken(USERNAME, TOKEN).block();
+ accessTokenRepository().removeToken(TOKEN).block();
+ assertThatThrownBy(() -> accessTokenRepository().getUsernameFromToken(TOKEN).block()).isExactlyInstanceOf(InvalidAccessToken.class);
+ }
+
+ @Test
+ default void outDatedTokenMustBeInvalid() throws Exception {
+ accessTokenRepository().addToken(USERNAME, TOKEN).block();
+ Thread.sleep(2 * TTL_IN_MS);
+ assertThatThrownBy(() -> accessTokenRepository().getUsernameFromToken(TOKEN).block()).isExactlyInstanceOf(InvalidAccessToken.class);
+ }
+
+ @Test
+ default void addTokenMustThrowWhenUsernameIsNull() {
+ assertThatThrownBy(() -> accessTokenRepository().addToken(null, TOKEN))
+ .isInstanceOf(NullPointerException.class);
+ }
+
+ @Test
+ default void addTokenMustThrowWhenTokenIsNull() {
+ assertThatThrownBy(() -> accessTokenRepository().addToken(USERNAME, null))
+ .isInstanceOf(NullPointerException.class);
+ }
+
+ @Test
+ default void removeTokenTokenMustThrowWhenTokenIsNull() {
+ assertThatThrownBy(() -> accessTokenRepository().removeToken(null))
+ .isInstanceOf(NullPointerException.class);
+ }
+
+ @Test
+ default void getUsernameFromTokenMustThrowWhenTokenIsNull() {
+ assertThatThrownBy(() -> accessTokenRepository().getUsernameFromToken(null))
+ .isInstanceOf(NullPointerException.class);
+ }
+
+}
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
deleted file mode 100644
index 4d9ec04..0000000
--- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************
- * 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.api.access;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
-import org.apache.james.core.Username;
-import org.apache.james.jmap.api.access.exceptions.InvalidAccessToken;
-import org.junit.Test;
-
-public abstract class AccessTokenRepositoryTest {
- private static final AccessToken TOKEN = AccessToken.generate();
- private static final Username USERNAME = Username.of("username");
- public static final long TTL_IN_MS = 1000;
-
- private AccessTokenRepository accessTokenRepository;
-
- protected abstract AccessTokenRepository provideAccessTokenRepository();
-
- public void setUp() throws Exception {
- this.accessTokenRepository = provideAccessTokenRepository();
- }
-
- @Test
- public void validTokenMustBeRetrieved() throws Throwable {
- accessTokenRepository.addToken(USERNAME, TOKEN).block();
- assertThat(accessTokenRepository.getUsernameFromToken(TOKEN).block()).isEqualTo(USERNAME);
- }
-
- @Test
- public void absentTokensMustBeInvalid() throws Exception {
- assertThatThrownBy(() -> accessTokenRepository.getUsernameFromToken(TOKEN).block()).isExactlyInstanceOf(InvalidAccessToken.class);
- }
-
- @Test
- public void removedTokensMustBeInvalid() throws Exception {
- accessTokenRepository.addToken(USERNAME, TOKEN).block();
- accessTokenRepository.removeToken(TOKEN).block();
- assertThatThrownBy(() -> accessTokenRepository.getUsernameFromToken(TOKEN).block()).isExactlyInstanceOf(InvalidAccessToken.class);
- }
-
- @Test
- public void outDatedTokenMustBeInvalid() throws Exception {
- accessTokenRepository.addToken(USERNAME, TOKEN).block();
- Thread.sleep(2 * TTL_IN_MS);
- assertThatThrownBy(() -> accessTokenRepository.getUsernameFromToken(TOKEN).block()).isExactlyInstanceOf(InvalidAccessToken.class);
- }
-
- @Test
- public void addTokenMustThrowWhenUsernameIsNull() throws Exception {
- assertThatThrownBy(() -> accessTokenRepository.addToken(null, TOKEN))
- .isInstanceOf(NullPointerException.class);
- }
-
- @Test
- public void addTokenMustThrowWhenTokenIsNull() throws Exception {
- assertThatThrownBy(() -> accessTokenRepository.addToken(USERNAME, null))
- .isInstanceOf(NullPointerException.class);
- }
-
- @Test
- public void removeTokenTokenMustThrowWhenTokenIsNull() throws Exception {
- assertThatThrownBy(() -> accessTokenRepository.removeToken(null))
- .isInstanceOf(NullPointerException.class);
- }
-
- @Test
- public void getUsernameFromTokenMustThrowWhenTokenIsNull() throws Exception {
- assertThatThrownBy(() -> accessTokenRepository.getUsernameFromToken(null))
- .isInstanceOf(NullPointerException.class);
- }
-
-}
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 c63b460..4c868f1 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
@@ -20,19 +20,19 @@
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.Before;
+import org.apache.james.jmap.api.access.AccessTokenRepositoryContract;
+import org.junit.jupiter.api.BeforeEach;
-public class MemoryAccessTokenRepositoryTest extends AccessTokenRepositoryTest {
-
- @Override
- @Before
- public void setUp() throws Exception {
- super.setUp();
+class MemoryAccessTokenRepositoryTest implements AccessTokenRepositoryContract {
+ AccessTokenRepository accessTokenRepository;
+
+ @BeforeEach
+ void setUp() {
+ accessTokenRepository = new MemoryAccessTokenRepository(AccessTokenRepositoryContract.TTL_IN_MS);
}
@Override
- protected AccessTokenRepository provideAccessTokenRepository() {
- return new MemoryAccessTokenRepository(AccessTokenRepositoryTest.TTL_IN_MS);
+ public AccessTokenRepository accessTokenRepository() {
+ return accessTokenRepository;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org