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 bt...@apache.org on 2017/08/08 10:46:39 UTC

[04/10] james-project git commit: JAMES-1589 Add tests for auto-detected domain upon "contains"

JAMES-1589 Add tests for auto-detected domain upon "contains"


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ff51cee2
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ff51cee2
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ff51cee2

Branch: refs/heads/master
Commit: ff51cee2435a144024c45f23b2f86f867b06cb96
Parents: f375965
Author: benwa <bt...@linagora.com>
Authored: Fri Jul 28 17:03:09 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Tue Aug 8 17:08:50 2017 +0700

----------------------------------------------------------------------
 .../cassandra/CassandraDomainList.java          |  2 +-
 .../james/domainlist/xml/XMLDomainList.java     |  2 +-
 .../james/domainlist/hbase/HBaseDomainList.java |  2 +-
 .../james/domainlist/jpa/JPADomainList.java     |  2 +-
 .../domainlist/lib/AbstractDomainList.java      | 10 ++-
 .../AbstractDomainListPrivateMethodsTest.java   | 82 +++++++++++++++++++-
 .../domainlist/memory/MemoryDomainList.java     |  2 +-
 7 files changed, 94 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/ff51cee2/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
index efbc554..ae889aa 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/domainlist/cassandra/CassandraDomainList.java
@@ -100,7 +100,7 @@ public class CassandraDomainList extends AbstractDomainList {
     }
 
     @Override
-    public boolean containsDomain(String domain) throws DomainListException {
+    protected boolean containsDomainInternal(String domain) throws DomainListException {
         return executor.executeSingleRow(readStatement.bind()
                 .setString(DOMAIN, domain.toLowerCase(Locale.US)))
             .join()

http://git-wip-us.apache.org/repos/asf/james-project/blob/ff51cee2/server/data/data-file/src/main/java/org/apache/james/domainlist/xml/XMLDomainList.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/main/java/org/apache/james/domainlist/xml/XMLDomainList.java b/server/data/data-file/src/main/java/org/apache/james/domainlist/xml/XMLDomainList.java
index 34376a9..6848ab5 100644
--- a/server/data/data-file/src/main/java/org/apache/james/domainlist/xml/XMLDomainList.java
+++ b/server/data/data-file/src/main/java/org/apache/james/domainlist/xml/XMLDomainList.java
@@ -59,7 +59,7 @@ public class XMLDomainList extends AbstractDomainList implements Configurable {
     }
 
     @Override
-    public boolean containsDomain(String domains) throws DomainListException {
+    protected boolean containsDomainInternal(String domains) throws DomainListException {
         return domainNames.contains(domains.toLowerCase(Locale.US));
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/ff51cee2/server/data/data-hbase/src/main/java/org/apache/james/domainlist/hbase/HBaseDomainList.java
----------------------------------------------------------------------
diff --git a/server/data/data-hbase/src/main/java/org/apache/james/domainlist/hbase/HBaseDomainList.java b/server/data/data-hbase/src/main/java/org/apache/james/domainlist/hbase/HBaseDomainList.java
index 6342e01..dbeb21b 100644
--- a/server/data/data-hbase/src/main/java/org/apache/james/domainlist/hbase/HBaseDomainList.java
+++ b/server/data/data-hbase/src/main/java/org/apache/james/domainlist/hbase/HBaseDomainList.java
@@ -52,7 +52,7 @@ public class HBaseDomainList extends AbstractDomainList {
      * @see org.apache.james.domainlist.api.DomainList#containsDomain(String)
      */
     @Override
-    public boolean containsDomain(String domain) throws DomainListException {
+    protected boolean containsDomainInternal(String domain) throws DomainListException {
         HTableInterface table = null;
         try {
             table = TablePool.getInstance().getDomainlistTable();

http://git-wip-us.apache.org/repos/asf/james-project/blob/ff51cee2/server/data/data-jpa/src/main/java/org/apache/james/domainlist/jpa/JPADomainList.java
----------------------------------------------------------------------
diff --git a/server/data/data-jpa/src/main/java/org/apache/james/domainlist/jpa/JPADomainList.java b/server/data/data-jpa/src/main/java/org/apache/james/domainlist/jpa/JPADomainList.java
index 14f57fe..af9ea44 100644
--- a/server/data/data-jpa/src/main/java/org/apache/james/domainlist/jpa/JPADomainList.java
+++ b/server/data/data-jpa/src/main/java/org/apache/james/domainlist/jpa/JPADomainList.java
@@ -86,7 +86,7 @@ public class JPADomainList extends AbstractDomainList {
     }
 
     @Override
-    public boolean containsDomain(String domain) throws DomainListException {
+    protected boolean containsDomainInternal(String domain) throws DomainListException {
         String lowerCasedDomain = domain.toLowerCase(Locale.US);
         EntityManager entityManager = entityManagerFactory.createEntityManager();
         final EntityTransaction transaction = entityManager.getTransaction();

http://git-wip-us.apache.org/repos/asf/james-project/blob/ff51cee2/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 afc8a1d..d2b564c 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
@@ -118,6 +118,12 @@ public abstract class AbstractDomainList implements DomainList, LogEnabled, Conf
     }
 
     @Override
+    public boolean containsDomain(String domain) throws DomainListException {
+        boolean internalAnswer = containsDomainInternal(domain);
+        return internalAnswer || getDomains().contains(domain);
+    }
+
+    @Override
     public List<String> getDomains() throws DomainListException {
         List<String> domains = getDomainListInternal();
 
@@ -153,7 +159,7 @@ public abstract class AbstractDomainList implements DomainList, LogEnabled, Conf
             }
 
             getLogger().info("Local host is: " + hostName);
-            if (!hostName.equals("localhost")) {
+            if (hostName != null && !hostName.equals("localhost")) {
                 return ImmutableList.of(hostName.toLowerCase(Locale.US));
             }
         }
@@ -242,4 +248,6 @@ public abstract class AbstractDomainList implements DomainList, LogEnabled, Conf
      */
     protected abstract List<String> getDomainListInternal() throws DomainListException;
 
+    protected abstract boolean containsDomainInternal(String domain) throws DomainListException;
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/ff51cee2/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 9255dfd..5098c08 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
@@ -63,7 +63,7 @@ public class AbstractDomainListPrivateMethodsTest {
         }
 
         @Override
-        public boolean containsDomain(String domain) throws DomainListException {
+        protected boolean containsDomainInternal(String domain) throws DomainListException {
             return domains.contains(domain);
         }
 
@@ -145,7 +145,7 @@ public class AbstractDomainListPrivateMethodsTest {
     }
 
     @Test
-    public void setDefaultDomainNotFailWhenDomainContained() throws Exception {
+    public void setDefaultDomainShouldNotFailWhenDomainContained() throws Exception {
         HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class);
         String expectedDefaultDomain = "myDomain.org";
         when(configuration.getString(AbstractDomainList.CONFIGURE_DEFAULT_DOMAIN, AbstractDomainList.LOCALHOST))
@@ -238,4 +238,82 @@ public class AbstractDomainListPrivateMethodsTest {
 
         assertThat(domainList.getDomains()).containsOnly(detected, detectedIp1, added, detectedIp2);
     }
+
+    @Test
+    public void getDomainsShouldListAddedDomain() 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);
+        String domain = "added.tld";
+        domainList.addDomain(domain);
+        domainList.configure(configuration);
+
+        assertThat(domainList.getDomains()).containsOnly(domain);
+    }
+
+    @Test
+    public void containsDomainShouldReturnDetectedIp() throws Exception {
+        String detected = "detected.tld";
+        String detectedIp = "148.25.32.1";
+        when(dnsService.getHostName(any(InetAddress.class))).thenReturn(detected);
+        InetAddress detectedAddress = mock(InetAddress.class);
+        when(detectedAddress.getHostAddress()).thenReturn(detectedIp);
+        when(dnsService.getAllByName(detected)).thenReturn(ImmutableList.of(detectedAddress));
+
+        assertThat(domainList.containsDomain(detectedIp)).isTrue();
+    }
+
+    @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);
+        String domain = "added.tld";
+        domainList.addDomain(domain);
+        domainList.configure(configuration);
+
+        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);
+        String domain = "added.tld";
+        domainList.configure(configuration);
+
+        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.containsDomain("added.tld");
+
+        verifyZeroInteractions(dnsService);
+    }
+
+    @Test
+    public void containsDomainShouldReturnDetectedDomains() throws Exception {
+        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.setLog(LOGGER);
+        domainList.configure(configuration);
+
+        String detected = "detected.tld";
+        when(dnsService.getHostName(any(InetAddress.class))).thenReturn(detected);
+
+        assertThat(domainList.containsDomain(detected)).isTrue();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/ff51cee2/server/data/data-memory/src/main/java/org/apache/james/domainlist/memory/MemoryDomainList.java
----------------------------------------------------------------------
diff --git a/server/data/data-memory/src/main/java/org/apache/james/domainlist/memory/MemoryDomainList.java b/server/data/data-memory/src/main/java/org/apache/james/domainlist/memory/MemoryDomainList.java
index d890c33..5e135f7 100644
--- a/server/data/data-memory/src/main/java/org/apache/james/domainlist/memory/MemoryDomainList.java
+++ b/server/data/data-memory/src/main/java/org/apache/james/domainlist/memory/MemoryDomainList.java
@@ -42,7 +42,7 @@ public class MemoryDomainList extends AbstractDomainList {
     }
 
     @Override
-    public boolean containsDomain(String domain) throws DomainListException {
+    protected boolean containsDomainInternal(String domain) throws DomainListException {
         return domains.contains(domain.toLowerCase(Locale.US));
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org