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 <rcord...@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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org