(james-jspf) 02/07: Move tests to a common abstract test class

[email protected]
Newsgroups gmane.comp.jakarta.james.devel
Message-ID <[email protected]>
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-jspf.git

commit 621cb96ea60caf9f0e17ead234e7bd6feb9fb08d
Author: Emerson Pinter <[email protected]>
AuthorDate: Fri Jan 24 15:37:11 2025 -0300

    Move tests to a common abstract test class
    
    The tests from async executor, sync executor and Default resolver are
    basically the same, changing just the executor used for the tests. This
    commit moves all the tests to an abstract base class to avoid code
    duplication. The DefaultSPFResolverTest will run the same test as sync
    executor test class, but using the DefaultSPF constructor.
---
 .../AsynchronousSPFExecutorIntegrationTest.java    | 65 ++++------------------
 .../apache/james/jspf/DefaultSPFResolverTest.java  | 40 ++++---------
 ...tegrationTest.java => SPFExecutorBaseTest.java} | 55 +++++-------------
 .../SynchronousSPFExecutorIntegrationTest.java     | 65 ++++------------------
 4 files changed, 48 insertions(+), 177 deletions(-)

diff --git a/resolver/src/test/java/org/apache/james/jspf/AsynchronousSPFExecutorIntegrationTest.java b/resolver/src/test/java/org/apache/james/jspf/AsynchronousSPFExecutorIntegrationTest.java
index 3d0dfd9..cc5b5a5 100644
--- a/resolver/src/test/java/org/apache/james/jspf/AsynchronousSPFExecutorIntegrationTest.java
+++ b/resolver/src/test/java/org/apache/james/jspf/AsynchronousSPFExecutorIntegrationTest.java
@@ -19,25 +19,20 @@
 
 package org.apache.james.jspf;
 
-import static org.junit.Assert.assertEquals;
-
+import org.apache.james.jspf.core.DNSService;
 import org.apache.james.jspf.executor.AsynchronousSPFExecutor;
-import org.apache.james.jspf.executor.SPFResult;
-import org.apache.james.jspf.impl.DNSServiceXBillImpl;
 import org.apache.james.jspf.impl.DefaultSPF;
 import org.apache.james.jspf.impl.SPF;
-import org.junit.Before;
 import org.junit.BeforeClass;
-import org.junit.Test;
-import org.xbill.DNS.DClass;
 import org.xbill.DNS.Lookup;
-import org.xbill.DNS.Resolver;
 import org.xbill.DNS.SimpleResolver;
 
 import java.net.UnknownHostException;
-import java.util.concurrent.ThreadLocalRandom;
 
-public class AsynchronousSPFExecutorIntegrationTest {
+/**
+ * Class to run the tests using {@link AsynchronousSPFExecutor}
+ */
+public class AsynchronousSPFExecutorIntegrationTest extends SPFExecutorBaseTest {
     @BeforeClass
     public static void setup() {
         // set default resolver before the tests to avoid errors caused by previous tests
@@ -48,51 +43,13 @@ public class AsynchronousSPFExecutorIntegrationTest {
         }
     }
 
-    @Before
-    public void clearDnsCache() {
-        Lookup.getDefaultCache(DClass.IN).clearCache();
-    }
-
-    @Test
-    public void test() {
-        SPF spf = DefaultSPF.createAsync();
-        SPFResult result = spf.checkSPF("109.197.176.25", "[email protected]", "linagora.com");
-        assertEquals("pass", result.getResult());
-        assertEquals("Received-SPF: pass (spfCheck: domain of linagora.com designates 109.197.176.25 as permitted sender) client-ip=109.197.176.25; [email protected]; helo=linagora.com;",
-            result.getHeader());
-    }
-
-    @Test
-    public void shouldHandleDomainNotFound() {
-        SPF spf = DefaultSPF.createAsync();
-        SPFResult result = spf.checkSPF("207.54.72.202",
-                "[email protected]",
-                "reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de");
-        assertEquals("none", result.getResult());
-        assertEquals("Received-SPF: none (spfCheck: 207.54.72.202 is neither permitted nor denied by domain of reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de) client-ip=207.54.72.202; envelope-from=do_not_reply@reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de; helo=reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de;",
-                result.getHeader());
-    }
-
-    @Test
-    public void shouldHandleSPFNotFound() {
-        SPF spf = DefaultSPF.createAsync();
-        SPFResult result = spf.checkSPF("207.54.72.202","[email protected]","com.br");
-        assertEquals("none", result.getResult());
-        assertEquals("Received-SPF: none (spfCheck: 207.54.72.202 is neither permitted nor denied by domain of com.br) client-ip=207.54.72.202; [email protected]; helo=com.br;",
-                result.getHeader());
+    @Override
+    protected SPF createSPF() {
+        return DefaultSPF.createAsync();
     }
 
-    @Test
-    public void shouldReturnTempErrorOnPortUnreachable() throws UnknownHostException {
-        Resolver simpleResolver = new SimpleResolver("127.0.0.1");
-        simpleResolver.setPort(ThreadLocalRandom.current().nextInt(55000, 56000));
-        DNSServiceXBillImpl dns = new DNSServiceXBillImpl(simpleResolver);
-        SPF spf = new SPF(dns, new AsynchronousSPFExecutor(dns));
-        SPFResult result = spf.checkSPF("207.54.72.202",
-                "[email protected]",
-                "reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de");
-        assertEquals("temperror", result.getResult());
-        assertEquals("Received-SPF: temperror (spfCheck: Error in retrieving data from DNS) client-ip=207.54.72.202; envelope-from=do_not_reply@reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de; helo=reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de;",
-                result.getHeader());
+    @Override
+    protected SPF createCustomSPF(DNSService dnsService) {
+        return new SPF(dnsService, new AsynchronousSPFExecutor(dnsService));
     }
 }
diff --git a/resolver/src/test/java/org/apache/james/jspf/DefaultSPFResolverTest.java b/resolver/src/test/java/org/apache/james/jspf/DefaultSPFResolverTest.java
index dee036c..863acc0 100644
--- a/resolver/src/test/java/org/apache/james/jspf/DefaultSPFResolverTest.java
+++ b/resolver/src/test/java/org/apache/james/jspf/DefaultSPFResolverTest.java
@@ -19,21 +19,19 @@
 
 package org.apache.james.jspf;
 
-import org.apache.james.jspf.executor.SPFResult;
+import org.apache.james.jspf.core.DNSService;
 import org.apache.james.jspf.impl.DefaultSPF;
-import org.junit.Assert;
-import org.junit.Before;
+import org.apache.james.jspf.impl.SPF;
 import org.junit.BeforeClass;
-import org.junit.Test;
-import org.xbill.DNS.DClass;
 import org.xbill.DNS.Lookup;
 import org.xbill.DNS.SimpleResolver;
 
 import java.net.UnknownHostException;
 
-import static org.junit.Assert.assertEquals;
-
-public class DefaultSPFResolverTest {
+/**
+ * Class to run the tests using the default executor returned by {@link SPF} and {@link DefaultSPF}
+ */
+public class DefaultSPFResolverTest extends SPFExecutorBaseTest {
     @BeforeClass
     public static void setup() {
         // set default resolver before the tests to avoid errors caused by previous tests
@@ -44,27 +42,13 @@ public class DefaultSPFResolverTest {
         }
     }
 
-    @Before
-    public void clearDnsCache() {
-        Lookup.getDefaultCache(DClass.IN).clearCache();
-    }
-
-    @Test
-    public void shouldHandleDomainNotFound() {
-        SPFResult spfResult = new DefaultSPF().checkSPF("207.54.72.202",
-                "[email protected]",
-                "reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de");
-        assertEquals("none", spfResult.getResult());
-        assertEquals("Received-SPF: none (spfCheck: 207.54.72.202 is neither permitted nor denied by domain of reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de) client-ip=207.54.72.202; envelope-from=do_not_reply@reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de; helo=reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de;",
-                spfResult.getHeader());
+    @Override
+    protected SPF createSPF() {
+        return new DefaultSPF();
     }
 
-    @Test
-    public void shouldHandleSPFNotFound() {
-        SPFResult spfResult = new DefaultSPF().checkSPF("207.54.72.202",
-                "[email protected]", "com.br");
-        assertEquals("none", spfResult.getResult());
-        assertEquals("Received-SPF: none (spfCheck: 207.54.72.202 is neither permitted nor denied by domain of com.br) client-ip=207.54.72.202; [email protected]; helo=com.br;",
-                spfResult.getHeader());
+    @Override
+    protected SPF createCustomSPF(DNSService dnsService) {
+        return new SPF(dnsService);
     }
 }
diff --git a/resolver/src/test/java/org/apache/james/jspf/AsynchronousSPFExecutorIntegrationTest.java b/resolver/src/test/java/org/apache/james/jspf/SPFExecutorBaseTest.java
similarity index 57%
copy from resolver/src/test/java/org/apache/james/jspf/AsynchronousSPFExecutorIntegrationTest.java
copy to resolver/src/test/java/org/apache/james/jspf/SPFExecutorBaseTest.java
index 3d0dfd9..ae1c296 100644
--- a/resolver/src/test/java/org/apache/james/jspf/AsynchronousSPFExecutorIntegrationTest.java
+++ b/resolver/src/test/java/org/apache/james/jspf/SPFExecutorBaseTest.java
@@ -1,33 +1,10 @@
-/****************************************************************
- * 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.jspf;
 
-import static org.junit.Assert.assertEquals;
-
-import org.apache.james.jspf.executor.AsynchronousSPFExecutor;
+import org.apache.james.jspf.core.DNSService;
 import org.apache.james.jspf.executor.SPFResult;
 import org.apache.james.jspf.impl.DNSServiceXBillImpl;
-import org.apache.james.jspf.impl.DefaultSPF;
 import org.apache.james.jspf.impl.SPF;
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Test;
 import org.xbill.DNS.DClass;
 import org.xbill.DNS.Lookup;
@@ -37,16 +14,13 @@ import org.xbill.DNS.SimpleResolver;
 import java.net.UnknownHostException;
 import java.util.concurrent.ThreadLocalRandom;
 
-public class AsynchronousSPFExecutorIntegrationTest {
-    @BeforeClass
-    public static void setup() {
-        // set default resolver before the tests to avoid errors caused by previous tests
-        try {
-            Lookup.setDefaultResolver(new SimpleResolver());
-        } catch (UnknownHostException e) {
-            throw new RuntimeException(e);
-        }
-    }
+import static org.junit.Assert.assertEquals;
+
+public abstract class SPFExecutorBaseTest {
+
+    protected abstract SPF createSPF();
+
+    protected abstract SPF createCustomSPF(DNSService dnsService);
 
     @Before
     public void clearDnsCache() {
@@ -55,16 +29,16 @@ public class AsynchronousSPFExecutorIntegrationTest {
 
     @Test
     public void test() {
-        SPF spf = DefaultSPF.createAsync();
+        SPF spf = createSPF();
         SPFResult result = spf.checkSPF("109.197.176.25", "[email protected]", "linagora.com");
         assertEquals("pass", result.getResult());
         assertEquals("Received-SPF: pass (spfCheck: domain of linagora.com designates 109.197.176.25 as permitted sender) client-ip=109.197.176.25; [email protected]; helo=linagora.com;",
-            result.getHeader());
+                result.getHeader());
     }
 
     @Test
     public void shouldHandleDomainNotFound() {
-        SPF spf = DefaultSPF.createAsync();
+        SPF spf = createSPF();
         SPFResult result = spf.checkSPF("207.54.72.202",
                 "[email protected]",
                 "reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de");
@@ -75,8 +49,8 @@ public class AsynchronousSPFExecutorIntegrationTest {
 
     @Test
     public void shouldHandleSPFNotFound() {
-        SPF spf = DefaultSPF.createAsync();
-        SPFResult result = spf.checkSPF("207.54.72.202","[email protected]","com.br");
+        SPF spf = createSPF();
+        SPFResult result = spf.checkSPF("207.54.72.202", "[email protected]", "com.br");
         assertEquals("none", result.getResult());
         assertEquals("Received-SPF: none (spfCheck: 207.54.72.202 is neither permitted nor denied by domain of com.br) client-ip=207.54.72.202; [email protected]; helo=com.br;",
                 result.getHeader());
@@ -86,8 +60,7 @@ public class AsynchronousSPFExecutorIntegrationTest {
     public void shouldReturnTempErrorOnPortUnreachable() throws UnknownHostException {
         Resolver simpleResolver = new SimpleResolver("127.0.0.1");
         simpleResolver.setPort(ThreadLocalRandom.current().nextInt(55000, 56000));
-        DNSServiceXBillImpl dns = new DNSServiceXBillImpl(simpleResolver);
-        SPF spf = new SPF(dns, new AsynchronousSPFExecutor(dns));
+        SPF spf = createCustomSPF(new DNSServiceXBillImpl(simpleResolver));
         SPFResult result = spf.checkSPF("207.54.72.202",
                 "[email protected]",
                 "reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de");
diff --git a/resolver/src/test/java/org/apache/james/jspf/SynchronousSPFExecutorIntegrationTest.java b/resolver/src/test/java/org/apache/james/jspf/SynchronousSPFExecutorIntegrationTest.java
index afc3190..5a9ac35 100644
--- a/resolver/src/test/java/org/apache/james/jspf/SynchronousSPFExecutorIntegrationTest.java
+++ b/resolver/src/test/java/org/apache/james/jspf/SynchronousSPFExecutorIntegrationTest.java
@@ -19,25 +19,20 @@
 
 package org.apache.james.jspf;
 
-import org.apache.james.jspf.executor.SPFResult;
+import org.apache.james.jspf.core.DNSService;
 import org.apache.james.jspf.executor.SynchronousSPFExecutor;
-import org.apache.james.jspf.impl.DNSServiceXBillImpl;
 import org.apache.james.jspf.impl.DefaultSPF;
 import org.apache.james.jspf.impl.SPF;
-import org.junit.Before;
 import org.junit.BeforeClass;
-import org.junit.Test;
-import org.xbill.DNS.DClass;
 import org.xbill.DNS.Lookup;
-import org.xbill.DNS.Resolver;
 import org.xbill.DNS.SimpleResolver;
 
 import java.net.UnknownHostException;
-import java.util.concurrent.ThreadLocalRandom;
 
-import static org.junit.Assert.assertEquals;
-
-public class SynchronousSPFExecutorIntegrationTest {
+/**
+ * Class to run the tests using {@link SynchronousSPFExecutor}
+ */
+public class SynchronousSPFExecutorIntegrationTest extends SPFExecutorBaseTest {
     @BeforeClass
     public static void setup() {
         // set default resolver before the tests to avoid errors caused by previous tests
@@ -48,51 +43,13 @@ public class SynchronousSPFExecutorIntegrationTest {
         }
     }
 
-    @Before
-    public void clearDnsCache() {
-        Lookup.getDefaultCache(DClass.IN).clearCache();
-    }
-
-    @Test
-    public void test() {
-        SPF spf = DefaultSPF.createSync();
-        SPFResult result = spf.checkSPF("109.197.176.25", "[email protected]", "linagora.com");
-        assertEquals("pass", result.getResult());
-        assertEquals("Received-SPF: pass (spfCheck: domain of linagora.com designates 109.197.176.25 as permitted sender) client-ip=109.197.176.25; [email protected]; helo=linagora.com;",
-            result.getHeader());
-    }
-
-    @Test
-    public void shouldHandleDomainNotFound() {
-        SPF spf = DefaultSPF.createSync();
-        SPFResult result = spf.checkSPF("207.54.72.202",
-                "[email protected]",
-                "reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de");
-        assertEquals("none", result.getResult());
-        assertEquals("Received-SPF: none (spfCheck: 207.54.72.202 is neither permitted nor denied by domain of reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de) client-ip=207.54.72.202; envelope-from=do_not_reply@reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de; helo=reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de;",
-                result.getHeader());
-    }
-
-    @Test
-    public void shouldHandleSPFNotFound() {
-        SPF spf = DefaultSPF.createSync();
-        SPFResult result = spf.checkSPF("207.54.72.202","[email protected]","com.br");
-        assertEquals("none", result.getResult());
-        assertEquals("Received-SPF: none (spfCheck: 207.54.72.202 is neither permitted nor denied by domain of com.br) client-ip=207.54.72.202; [email protected]; helo=com.br;",
-                result.getHeader());
+    @Override
+    protected SPF createSPF() {
+        return DefaultSPF.createSync();
     }
 
-    @Test
-    public void shouldReturnTempErrorOnPortUnreachable() throws UnknownHostException {
-        Resolver simpleResolver = new SimpleResolver("127.0.0.1");
-        simpleResolver.setPort(ThreadLocalRandom.current().nextInt(55000, 56000));
-        DNSServiceXBillImpl dns = new DNSServiceXBillImpl(simpleResolver);
-        SPF spf = new SPF(dns, new SynchronousSPFExecutor(dns));
-        SPFResult result = spf.checkSPF("207.54.72.202",
-                "[email protected]",
-                "reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de");
-        assertEquals("temperror", result.getResult());
-        assertEquals("Received-SPF: temperror (spfCheck: Error in retrieving data from DNS) client-ip=207.54.72.202; envelope-from=do_not_reply@reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de; helo=reyifglerifwukfvbdjhrkbvebvekvfulervkerkeruerbeb.de;"
-                , result.getHeader());
+    @Override
+    protected SPF createCustomSPF(DNSService dnsService) {
+        return new SPF(dnsService, new SynchronousSPFExecutor(dnsService));
     }
 }
\ No newline at end of file
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.