JAMES-2513 Improve AbstractDomainListPrivateMethodsTest - Avoid using mocks. Prefer relying on the configuration POJO - Avoid throwing needless exceptions
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/8daad381 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/8daad381 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/8daad381 Branch: refs/heads/master Commit: 8daad381b28b95ad560f7ece08ab6bb3f7fd34d3 Parents: 5f45d49 Author: benwa <[email protected]> Authored: Thu Aug 2 09:40:51 2018 +0700 Committer: Benoit Tellier <[email protected]> Committed: Fri Aug 3 15:51:29 2018 +0700 ---------------------------------------------------------------------- .../domainlist/lib/AbstractDomainList.java | 4 + .../domainlist/lib/DomainListConfiguration.java | 5 + .../AbstractDomainListPrivateMethodsTest.java | 131 ++++++++----------- 3 files changed, 62 insertions(+), 78 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/8daad381/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java index e8fddd4..e27ed5e 100644 --- a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java +++ b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java @@ -86,6 +86,10 @@ public abstract class AbstractDomainList implements DomainList, Configurable { addEnvDomain(); addConfiguredDomains(domainListConfiguration.getConfiguredDomains()); } + + public void configure(DomainListConfiguration.Builder configurationBuilder) throws ConfigurationException { + configure(configurationBuilder.build()); + } protected void addConfiguredDomains(List<Domain> domains) { domains.stream() http://git-wip-us.apache.org/repos/asf/james-project/blob/8daad381/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/DomainListConfiguration.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/DomainListConfiguration.java b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/DomainListConfiguration.java index 8302b3f..5930fbe 100644 --- a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/DomainListConfiguration.java +++ b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/DomainListConfiguration.java @@ -19,6 +19,7 @@ package org.apache.james.domainlist.lib; +import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Objects; @@ -85,6 +86,10 @@ public class DomainListConfiguration { return this; } + public Builder addConfiguredDomains(Domain... domains) { + return this.addConfiguredDomains(Arrays.asList(domains)); + } + public DomainListConfiguration build() { return new DomainListConfiguration( autoDetectIp.orElse(true), http://git-wip-us.apache.org/repos/asf/james-project/blob/8daad381/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java b/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java index 787e3e8..4ecd689 100644 --- a/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java +++ b/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListPrivateMethodsTest.java @@ -25,14 +25,11 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; -import java.net.Inet4Address; import java.net.InetAddress; import java.util.List; -import org.apache.commons.configuration.HierarchicalConfiguration; import org.apache.james.core.Domain; import org.apache.james.dnsservice.api.DNSService; -import org.apache.james.domainlist.api.DomainListException; import org.junit.Before; import org.junit.Test; @@ -55,28 +52,28 @@ public class AbstractDomainListPrivateMethodsTest { private List<Domain> domains; - public MyDomainList(DNSService dns, EnvDetector envDetector) { + MyDomainList(DNSService dns, EnvDetector envDetector) { super(dns, envDetector); this.domains = Lists.newArrayList(); } @Override - protected boolean containsDomainInternal(Domain domain) throws DomainListException { + protected boolean containsDomainInternal(Domain domain) { return domains.contains(domain); } @Override - public void addDomain(Domain domain) throws DomainListException { + public void addDomain(Domain domain) { domains.add(domain); } @Override - public void removeDomain(Domain domain) throws DomainListException { + public void removeDomain(Domain domain) { domains.remove(domain); } @Override - protected List<Domain> getDomainListInternal() throws DomainListException { + protected List<Domain> getDomainListInternal() { return domains; } } @@ -136,24 +133,20 @@ public class AbstractDomainListPrivateMethodsTest { @Test public void getDomainsShouldNotDetectDomainsWhenDisabled() throws Exception { - HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); + Domain domain = Domain.of("domain.tld"); + domainList.configure(DomainListConfiguration.builder() + .autoDetect(false) + .autoDetectIp(false) + .defaultDomain(domain)); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT, null)).thenReturn(false); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT_IP, null)).thenReturn(false); - String domain = "domain.tld"; - when(configuration.getString(AbstractDomainList.CONFIGURE_DEFAULT_DOMAIN, null)).thenReturn(domain); - domainList.configure(configuration); - - assertThat(domainList.getDomains()).containsOnly(Domain.of(domain)); + assertThat(domainList.getDomains()).containsOnly(domain); } @Test public void getDomainsShouldNotInteractWithDNSWhenDisabled() throws Exception { - HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); - - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT, true)).thenReturn(false); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT_IP, true)).thenReturn(false); - domainList.configure(configuration); + domainList.configure(DomainListConfiguration.builder() + .autoDetect(false) + .autoDetectIp(false)); domainList.getDomains(); verifyZeroInteractions(dnsService); @@ -161,11 +154,9 @@ public class AbstractDomainListPrivateMethodsTest { @Test public void getDomainsShouldContainDetectedDomains() throws Exception { - HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); - - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT, null)).thenReturn(true); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT_IP, null)).thenReturn(false); - domainList.configure(configuration); + domainList.configure(DomainListConfiguration.builder() + .autoDetect(true) + .autoDetectIp(false)); String detected = "detected.tld"; when(dnsService.getLocalHost()).thenReturn(InetAddress.getByName("127.0.0.1")); @@ -176,11 +167,9 @@ public class AbstractDomainListPrivateMethodsTest { @Test public void getDomainsShouldContainDetectedDomainsAndIps() throws Exception { - HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); - - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT, null)).thenReturn(true); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT_IP, null)).thenReturn(true); - domainList.configure(configuration); + domainList.configure(DomainListConfiguration.builder() + .autoDetect(true) + .autoDetectIp(true)); String detected = "detected.tld"; String detectedIp = "148.25.32.1"; @@ -195,11 +184,9 @@ public class AbstractDomainListPrivateMethodsTest { @Test public void getDomainsShouldContainDetectedDomainsAndIpsOfAddedDomains() throws Exception { - HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); - - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT, null)).thenReturn(true); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT_IP, null)).thenReturn(true); - domainList.configure(configuration); + domainList.configure(DomainListConfiguration.builder() + .autoDetect(true) + .autoDetectIp(true)); String added = "added.tld"; String detected = "detected.tld"; @@ -222,15 +209,15 @@ public class AbstractDomainListPrivateMethodsTest { @Test public void getDomainsShouldListAddedDomain() throws Exception { - HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); - Domain defaultDomain = Domain.of("default.tld"); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT, null)).thenReturn(false); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT_IP, null)).thenReturn(false); - when(configuration.getString(AbstractDomainList.CONFIGURE_DEFAULT_DOMAIN, null)).thenReturn(defaultDomain.asString()); Domain domain = Domain.of("added.tld"); + domainList.addDomain(domain); - domainList.configure(configuration); + + domainList.configure(DomainListConfiguration.builder() + .autoDetect(false) + .autoDetectIp(false) + .defaultDomain(defaultDomain)); assertThat(domainList.getDomains()).containsOnly(domain, defaultDomain); } @@ -250,36 +237,31 @@ public class AbstractDomainListPrivateMethodsTest { @Test public void containsDomainShouldReturnTrueWhenDomainIsContained() throws Exception { - HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); - - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT, true)).thenReturn(false); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT_IP, true)).thenReturn(false); Domain domain = Domain.of("added.tld"); domainList.addDomain(domain); - domainList.configure(configuration); + domainList.configure(DomainListConfiguration.builder() + .autoDetect(false) + .autoDetectIp(false)); assertThat(domainList.containsDomain(domain)).isTrue(); } @Test public void containsDomainShouldReturnFalseWhenDomainIsNotContained() throws Exception { - HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); - - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT, true)).thenReturn(false); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT_IP, true)).thenReturn(false); Domain domain = Domain.of("added.tld"); - domainList.configure(configuration); + + domainList.configure(DomainListConfiguration.builder() + .autoDetect(false) + .autoDetectIp(false)); assertThat(domainList.containsDomain(domain)).isFalse(); } @Test public void containsDomainShouldNotInteractWithDNSWhenDisabled() throws Exception { - HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); - - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT, true)).thenReturn(false); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT_IP, true)).thenReturn(false); - domainList.configure(configuration); + domainList.configure(DomainListConfiguration.builder() + .autoDetect(false) + .autoDetectIp(false)); domainList.containsDomain(Domain.of("added.tld")); verifyZeroInteractions(dnsService); @@ -287,11 +269,9 @@ public class AbstractDomainListPrivateMethodsTest { @Test public void containsDomainShouldReturnDetectedDomains() throws Exception { - HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); - - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT, null)).thenReturn(true); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT_IP, null)).thenReturn(false); - domainList.configure(configuration); + domainList.configure(DomainListConfiguration.builder() + .autoDetect(true) + .autoDetectIp(false)); String detected = "detected.tld"; when(dnsService.getLocalHost()).thenReturn(InetAddress.getByName("127.0.0.1")); @@ -305,30 +285,25 @@ public class AbstractDomainListPrivateMethodsTest { String envDomain = "env.tld"; when(envDetector.getEnv(AbstractDomainList.ENV_DOMAIN)).thenReturn(envDomain); - HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT, true)).thenReturn(true); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT_IP, true)).thenReturn(false); - domainList.configure(configuration); + + domainList.configure(DomainListConfiguration.builder() + .autoDetect(true) + .autoDetectIp(false)); assertThat(domainList.containsDomain(Domain.of(envDomain))).isTrue(); } @Test public void configuredDomainShouldBeAddedUponConfiguration() throws Exception { - String domain1 = "conf1.tld"; - String domain2 = "conf2.tld"; - String[] configuredDomain = new String[] {domain1, domain2}; + Domain domain1 = Domain.of("conf1.tld"); + Domain domain2 = Domain.of("conf2.tld"); - HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT, null)).thenReturn(true); - when(configuration.getBoolean(AbstractDomainList.CONFIGURE_AUTODETECT_IP, null)).thenReturn(false); - when(configuration.getStringArray(AbstractDomainList.CONFIGURE_DOMAIN_NAMES)).thenReturn(configuredDomain); - domainList.configure(configuration); + domainList.configure(DomainListConfiguration.builder() + .autoDetect(false) + .autoDetectIp(false) + .addConfiguredDomains(domain1, domain2)); - assertThat(domainList.getDomains()) - .contains( - Domain.of(domain1), - Domain.of(domain2)); + assertThat(domainList.getDomains()).contains(domain1, domain2); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
