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