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 e8d9cff379583fb67e98642282d2da9a803edc53 Author: Rene Cordier <rcord...@linagora.com> AuthorDate: Thu Aug 13 16:42:37 2020 +0700 [Refactoring] Migrate AbstractDomainListTest to DomainListContract JUnit5 --- .../cassandra/CassandraDomainListTest.java | 41 ++--- .../james/domainlist/jpa/JPADomainListTest.java | 28 ++-- .../domainlist/lib/AbstractDomainListTest.java | 168 --------------------- .../james/domainlist/lib/DomainListContract.java | 159 +++++++++++++++++++ .../domainlist/memory/MemoryDomainListTest.java | 24 ++- 5 files changed, 201 insertions(+), 219 deletions(-) diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java index 9e869fb..3fa2c61 100644 --- a/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java +++ b/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java @@ -20,38 +20,27 @@ package org.apache.james.domainlist.cassandra; 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.domainlist.api.DomainList; -import org.apache.james.domainlist.lib.AbstractDomainListTest; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; +import org.apache.james.domainlist.lib.DomainListContract; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.extension.RegisterExtension; -public class CassandraDomainListTest extends AbstractDomainListTest { +class CassandraDomainListTest implements DomainListContract { + @RegisterExtension + static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension(CassandraDomainListModule.MODULE); - @Rule - public DockerCassandraRule cassandraServer = new DockerCassandraRule(); + CassandraDomainList domainList; - private CassandraCluster cassandra; - - @Override - @Before - public void setUp() throws Exception { - cassandra = CassandraCluster.create(CassandraDomainListModule.MODULE, cassandraServer.getHost()); - super.setUp(); - } - - @After - public void tearDown() { - cassandra.close(); + @BeforeEach + public void setUp(CassandraCluster cassandra) throws Exception { + domainList = new CassandraDomainList(getDNSServer("localhost"), cassandra.getConf()); + domainList.setAutoDetect(false); + domainList.setAutoDetectIP(false); } @Override - protected DomainList createDomainList() throws Exception { - CassandraDomainList testee = new CassandraDomainList(getDNSServer("localhost"), cassandra.getConf()); - testee.setAutoDetect(false); - testee.setAutoDetectIP(false); - return testee; + public DomainList domainList() { + return domainList; } - } diff --git a/server/data/data-jpa/src/test/java/org/apache/james/domainlist/jpa/JPADomainListTest.java b/server/data/data-jpa/src/test/java/org/apache/james/domainlist/jpa/JPADomainListTest.java index 0126bb1..1faac7c 100644 --- a/server/data/data-jpa/src/test/java/org/apache/james/domainlist/jpa/JPADomainListTest.java +++ b/server/data/data-jpa/src/test/java/org/apache/james/domainlist/jpa/JPADomainListTest.java @@ -22,24 +22,25 @@ import org.apache.james.backends.jpa.JpaTestCluster; import org.apache.james.core.Domain; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.jpa.model.JPADomain; -import org.apache.james.domainlist.lib.AbstractDomainListTest; -import org.junit.After; -import org.junit.Before; +import org.apache.james.domainlist.lib.DomainListContract; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; /** * Test the JPA implementation of the DomainList. */ -public class JPADomainListTest extends AbstractDomainListTest { +class JPADomainListTest implements DomainListContract { - private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPADomain.class); + static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPADomain.class); - @Override - @Before + JPADomainList jpaDomainList; + + @BeforeEach public void setUp() throws Exception { - super.setUp(); + jpaDomainList = createDomainList(); } - @After + @AfterEach public void tearDown() throws Exception { DomainList domainList = createDomainList(); for (Domain domain: domainList.getDomains()) { @@ -48,13 +49,16 @@ public class JPADomainListTest extends AbstractDomainListTest { } @Override - protected DomainList createDomainList() throws Exception { + public DomainList domainList() { + return jpaDomainList; + } + + private JPADomainList createDomainList() throws Exception { JPADomainList jpaDomainList = new JPADomainList(getDNSServer("localhost"), JPA_TEST_CLUSTER.getEntityManagerFactory()); jpaDomainList.setAutoDetect(false); jpaDomainList.setAutoDetectIP(false); - + return jpaDomainList; } - } diff --git a/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListTest.java b/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListTest.java deleted file mode 100644 index e54cc05..0000000 --- a/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListTest.java +++ /dev/null @@ -1,168 +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.domainlist.lib; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Fail.fail; - -import java.net.UnknownHostException; - -import org.apache.james.core.Domain; -import org.apache.james.dnsservice.api.DNSService; -import org.apache.james.dnsservice.api.InMemoryDNSService; -import org.apache.james.domainlist.api.DomainList; -import org.apache.james.domainlist.api.DomainListException; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public abstract class AbstractDomainListTest { - - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractDomainListTest.class); - - private static final Domain DOMAIN_1 = Domain.of("domain1.tld"); - private static final Domain DOMAIN_2 = Domain.of("domain2.tld"); - private static final Domain DOMAIN_3 = Domain.of("domain3.tld"); - private static final Domain DOMAIN_4 = Domain.of("domain4.tld"); - private static final Domain DOMAIN_5 = Domain.of("domain5.tld"); - private static final Domain DOMAIN_UPPER_5 = Domain.of("Domain5.tld"); - - private DomainList domainList; - - public void setUp() throws Exception { - domainList = createDomainList(); - } - - @Test - public void createListDomains() throws DomainListException { - domainList.addDomain(DOMAIN_3); - domainList.addDomain(DOMAIN_4); - domainList.addDomain(DOMAIN_5); - assertThat(domainList.getDomains()).containsOnly(DOMAIN_3, DOMAIN_4, DOMAIN_5); - } - - @Test - public void domainsShouldBeListedInLowerCase() throws DomainListException { - domainList.addDomain(DOMAIN_UPPER_5); - assertThat(domainList.getDomains()).containsOnly(DOMAIN_5); - } - - @Test - public void containShouldReturnTrueWhenThereIsADomain() throws DomainListException { - domainList.addDomain(DOMAIN_2); - assertThat(domainList.containsDomain(DOMAIN_2)).isTrue(); - } - - @Test - public void containShouldBeCaseSensitive() throws DomainListException { - domainList.addDomain(DOMAIN_5); - assertThat(domainList.containsDomain(DOMAIN_UPPER_5)).isTrue(); - } - - @Test - public void listDomainsShouldReturnNullWhenThereIsNoDomains() throws DomainListException { - assertThat(domainList.getDomains()).isEmpty(); - } - - @Test - public void testAddRemoveContainsSameDomain() throws DomainListException { - domainList.addDomain(DOMAIN_1); - domainList.removeDomain(DOMAIN_1); - assertThat(domainList.getDomains()).isEmpty(); - } - - @Test(expected = DomainListException.class) - public void addShouldBeCaseSensitive() throws DomainListException { - try { - domainList.addDomain(DOMAIN_5); - } catch (Exception e) { - fail(e.getMessage()); - } - domainList.addDomain(DOMAIN_UPPER_5); - } - - @Test - public void deletingADomainShouldNotDeleteOtherDomains() throws DomainListException { - domainList.addDomain(DOMAIN_1); - try { - domainList.removeDomain(DOMAIN_2); - } catch (DomainListException e) { - LOGGER.info("Ignored error", e); - } - assertThat(domainList.getDomains()).containsOnly(DOMAIN_1); - } - - @Test - public void containShouldReturnFalseWhenThereIsNoDomain() throws DomainListException { - assertThat(domainList.containsDomain(DOMAIN_1)).isFalse(); - } - - @Test - public void containsShouldReturnFalseWhenDomainIsRemoved() throws DomainListException { - domainList.addDomain(DOMAIN_1); - domainList.removeDomain(DOMAIN_1); - assertThat(domainList.containsDomain(DOMAIN_1)).isFalse(); - } - - @Test - public void removeShouldRemoveDomainsUsingUpperCases() throws DomainListException { - domainList.addDomain(DOMAIN_UPPER_5); - domainList.removeDomain(DOMAIN_UPPER_5); - assertThat(domainList.containsDomain(DOMAIN_UPPER_5)).isFalse(); - } - - @Test - public void removeShouldRemoveDomainsUsingLowerCases() throws DomainListException { - domainList.addDomain(DOMAIN_UPPER_5); - domainList.removeDomain(DOMAIN_5); - assertThat(domainList.containsDomain(DOMAIN_UPPER_5)).isFalse(); - } - - @Test(expected = DomainListException.class) - public void addDomainShouldThrowIfWeAddTwoTimesTheSameDomain() throws DomainListException { - try { - domainList.addDomain(DOMAIN_1); - } catch (Exception e) { - fail(e.getMessage()); - } - domainList.addDomain(DOMAIN_1); - } - - @Test(expected = DomainListException.class) - public void removeDomainShouldThrowIfTheDomainIsAbsent() throws DomainListException { - domainList.removeDomain(DOMAIN_1); - } - - /** - * Return a fake DNSServer. - */ - protected DNSService getDNSServer(final String hostName) throws UnknownHostException { - return new InMemoryDNSService() - .registerMxRecord(hostName, "127.0.0.1") - .registerMxRecord("127.0.0.1", "127.0.0.1"); - } - - /** - * Implementing test classes must provide the corresponding implement - * of the DomainList interface. - * - * @return an implementation of DomainList - */ - protected abstract DomainList createDomainList() throws Exception; -} diff --git a/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/DomainListContract.java b/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/DomainListContract.java new file mode 100644 index 0000000..9388bea --- /dev/null +++ b/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/DomainListContract.java @@ -0,0 +1,159 @@ +/**************************************************************** + * 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.domainlist.lib; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.assertj.core.api.Fail.fail; + +import java.net.UnknownHostException; + +import org.apache.james.core.Domain; +import org.apache.james.dnsservice.api.DNSService; +import org.apache.james.dnsservice.api.InMemoryDNSService; +import org.apache.james.domainlist.api.DomainList; +import org.apache.james.domainlist.api.DomainListException; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public interface DomainListContract { + Logger LOGGER = LoggerFactory.getLogger(DomainListContract.class); + + Domain DOMAIN_1 = Domain.of("domain1.tld"); + Domain DOMAIN_2 = Domain.of("domain2.tld"); + Domain DOMAIN_3 = Domain.of("domain3.tld"); + Domain DOMAIN_4 = Domain.of("domain4.tld"); + Domain DOMAIN_5 = Domain.of("domain5.tld"); + Domain DOMAIN_UPPER_5 = Domain.of("Domain5.tld"); + + DomainList domainList(); + + @Test + default void createListDomains() throws DomainListException { + domainList().addDomain(DOMAIN_3); + domainList().addDomain(DOMAIN_4); + domainList().addDomain(DOMAIN_5); + assertThat(domainList().getDomains()).containsOnly(DOMAIN_3, DOMAIN_4, DOMAIN_5); + } + + @Test + default void domainsShouldBeListedInLowerCase() throws DomainListException { + domainList().addDomain(DOMAIN_UPPER_5); + assertThat(domainList().getDomains()).containsOnly(DOMAIN_5); + } + + @Test + default void containShouldReturnTrueWhenThereIsADomain() throws DomainListException { + domainList().addDomain(DOMAIN_2); + assertThat(domainList().containsDomain(DOMAIN_2)).isTrue(); + } + + @Test + default void containShouldBeCaseSensitive() throws DomainListException { + domainList().addDomain(DOMAIN_5); + assertThat(domainList().containsDomain(DOMAIN_UPPER_5)).isTrue(); + } + + @Test + default void listDomainsShouldReturnNullWhenThereIsNoDomains() throws DomainListException { + assertThat(domainList().getDomains()).isEmpty(); + } + + @Test + default void testAddRemoveContainsSameDomain() throws DomainListException { + domainList().addDomain(DOMAIN_1); + domainList().removeDomain(DOMAIN_1); + assertThat(domainList().getDomains()).isEmpty(); + } + + @Test + default void addShouldBeCaseSensitive() { + try { + domainList().addDomain(DOMAIN_5); + } catch (Exception e) { + fail(e.getMessage()); + } + assertThatThrownBy(() -> domainList().addDomain(DOMAIN_UPPER_5)) + .isInstanceOf(DomainListException.class); + } + + @Test + default void deletingADomainShouldNotDeleteOtherDomains() throws DomainListException { + domainList().addDomain(DOMAIN_1); + try { + domainList().removeDomain(DOMAIN_2); + } catch (DomainListException e) { + LOGGER.info("Ignored error", e); + } + assertThat(domainList().getDomains()).containsOnly(DOMAIN_1); + } + + @Test + default void containShouldReturnFalseWhenThereIsNoDomain() throws DomainListException { + assertThat(domainList().containsDomain(DOMAIN_1)).isFalse(); + } + + @Test + default void containsShouldReturnFalseWhenDomainIsRemoved() throws DomainListException { + domainList().addDomain(DOMAIN_1); + domainList().removeDomain(DOMAIN_1); + assertThat(domainList().containsDomain(DOMAIN_1)).isFalse(); + } + + @Test + default void removeShouldRemoveDomainsUsingUpperCases() throws DomainListException { + domainList().addDomain(DOMAIN_UPPER_5); + domainList().removeDomain(DOMAIN_UPPER_5); + assertThat(domainList().containsDomain(DOMAIN_UPPER_5)).isFalse(); + } + + @Test + default void removeShouldRemoveDomainsUsingLowerCases() throws DomainListException { + domainList().addDomain(DOMAIN_UPPER_5); + domainList().removeDomain(DOMAIN_5); + assertThat(domainList().containsDomain(DOMAIN_UPPER_5)).isFalse(); + } + + @Test + default void addDomainShouldThrowIfWeAddTwoTimesTheSameDomain() { + try { + domainList().addDomain(DOMAIN_1); + } catch (Exception e) { + fail(e.getMessage()); + } + assertThatThrownBy(() -> domainList().addDomain(DOMAIN_1)) + .isInstanceOf(DomainListException.class); + } + + @Test + default void removeDomainShouldThrowIfTheDomainIsAbsent() { + assertThatThrownBy(() -> domainList().removeDomain(DOMAIN_1)) + .isInstanceOf(DomainListException.class); + } + + /** + * Return a fake DNSServer. + */ + default DNSService getDNSServer(final String hostName) throws UnknownHostException { + return new InMemoryDNSService() + .registerMxRecord(hostName, "127.0.0.1") + .registerMxRecord("127.0.0.1", "127.0.0.1"); + } +} diff --git a/server/data/data-memory/src/test/java/org/apache/james/domainlist/memory/MemoryDomainListTest.java b/server/data/data-memory/src/test/java/org/apache/james/domainlist/memory/MemoryDomainListTest.java index 2095aa5..42ee644 100644 --- a/server/data/data-memory/src/test/java/org/apache/james/domainlist/memory/MemoryDomainListTest.java +++ b/server/data/data-memory/src/test/java/org/apache/james/domainlist/memory/MemoryDomainListTest.java @@ -20,23 +20,21 @@ package org.apache.james.domainlist.memory; import org.apache.james.domainlist.api.DomainList; -import org.apache.james.domainlist.lib.AbstractDomainListTest; -import org.junit.Before; +import org.apache.james.domainlist.lib.DomainListContract; +import org.junit.jupiter.api.BeforeEach; -public class MemoryDomainListTest extends AbstractDomainListTest { +class MemoryDomainListTest implements DomainListContract { + MemoryDomainList domainList; - @Override - @Before - public void setUp() throws Exception { - super.setUp(); + @BeforeEach + void setUp() throws Exception { + domainList = new MemoryDomainList(getDNSServer("localhost")); + domainList.setAutoDetect(false); + domainList.setAutoDetectIP(false); } @Override - protected DomainList createDomainList() throws Exception { - MemoryDomainList testee = new MemoryDomainList(getDNSServer("localhost")); - testee.setAutoDetect(false); - testee.setAutoDetectIP(false); - return testee; + public DomainList domainList() { + return domainList; } - } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org