]> WPIA git - gigi.git/blobdiff - tests/org/cacert/gigi/ping/TestDNS.java
Test more error cases for DNS ping.
[gigi.git] / tests / org / cacert / gigi / ping / TestDNS.java
index 0a28491124614982de438235bbcd1fa04e87c3b6..4ee94743c8a48f66e969f373dcfa26f64b3e2863 100644 (file)
@@ -14,34 +14,51 @@ import java.sql.SQLException;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.naming.NamingException;
+
 import org.cacert.gigi.database.DatabaseConnection;
 import org.cacert.gigi.pages.account.DomainOverview;
 import org.cacert.gigi.testUtils.IOUtils;
 import org.cacert.gigi.testUtils.ManagedTest;
 import org.cacert.gigi.testUtils.TestEmailReciever.TestMail;
+import org.cacert.gigi.util.DNSUtil;
 import org.cacert.gigi.util.RandomToken;
+import org.junit.After;
 import org.junit.Test;
 
 public class TestDNS extends ManagedTest {
 
     @Test
-    public void testDNSSanity() throws IOException {
+    public void testDNSSanity() throws IOException, NamingException {
 
         String token = RandomToken.generateToken(16);
         String value = RandomToken.generateToken(16);
 
-        Process p = updateDNS(token, value);
-        String reRead = new String(IOUtils.readURL(p.getInputStream()));
-        reRead = reRead.trim();
-        reRead = reRead.substring(1, reRead.length() - 1);
+        String reRead = updateDNS(token, value);
         assertEquals(value, reRead);
 
     }
 
     @Test
-    public void testEmailAndDNS() throws IOException, InterruptedException, SQLException {
+    public void testEmailAndDNSSuccess() throws IOException, InterruptedException, SQLException, NamingException {
+        testEmailAndDNS(0, 0, true, true);
+    }
+
+    @After
+    public void test() throws SQLException, IOException {
+        purgeDatabase();
+    }
+
+    @Test
+    public void testEmailAndDNSFail() throws IOException, InterruptedException, SQLException, NamingException {
+        testEmailAndDNS(1, 0, false, true);
+        purgeDatabase();
+        testEmailAndDNS(2, 0, false, true);
+    }
+
+    public void testEmailAndDNS(int dnsVariant, int emailVariant, boolean successDNS, boolean successMail) throws IOException, InterruptedException, SQLException, NamingException {
         String email = createUniqueName() + "@example.org";
-        int uid = createVerifiedUser("a", "b", email, TEST_PASSWORD);
+        createVerifiedUser("a", "b", email, TEST_PASSWORD);
         String cookie = login(email, TEST_PASSWORD);
 
         String test = getTestProps().getProperty("domain.dnstest");
@@ -54,7 +71,7 @@ public class TestDNS extends ManagedTest {
         Pattern p = Pattern.compile("cacert-([A-Za-z0-9]+) IN TXT ([A-Za-z0-9]+)");
         Matcher m = p.matcher(content1);
         m.find();
-        updateDNS(m.group(1), m.group(2));
+        updateDNS(m.group(1) + (dnsVariant == 1 ? "a" : ""), m.group(2) + (dnsVariant == 2 ? "a" : ""));
 
         String content = "newdomain=" + URLEncoder.encode(test, "UTF-8") + //
                 "&emailType=y&email=2&DNSType=y" + //
@@ -91,22 +108,19 @@ public class TestDNS extends ManagedTest {
 
         newcontent = IOUtils.readURL(cookie(u2.openConnection(), cookie));
         Pattern pat = Pattern.compile("<td>dns</td>\\s*<td>success</td>");
-        assertTrue(newcontent, pat.matcher(newcontent).find());
+        assertTrue(newcontent, !successDNS ^ pat.matcher(newcontent).find());
         pat = Pattern.compile("<td>email</td>\\s*<td>success</td>");
-        assertTrue(newcontent, pat.matcher(newcontent).find());
+        assertTrue(newcontent, !successMail ^ pat.matcher(newcontent).find());
     }
 
-    private Process updateDNS(String token, String value) throws IOException, MalformedURLException {
+    private String updateDNS(String token, String value) throws IOException, MalformedURLException, NamingException {
         String test = getTestProps().getProperty("domain.dnstest");
         String targetDomain = "cacert-" + token + "." + test;
         String manage = getTestProps().getProperty("domain.dnsmanage");
         String url = manage + "t1=" + token + "&t2=" + value;
         assertEquals(200, ((HttpURLConnection) new URL(url).openConnection()).getResponseCode());
-
-        Process p = Runtime.getRuntime().exec(new String[] {
-                "dig", "@" + getTestProps().getProperty("domain.testns"), "+short", "TXT", targetDomain
-        });
-        return p;
+        String[] data = DNSUtil.getTXTEntries(targetDomain, getTestProps().getProperty("domain.testns"));
+        assertEquals(1, data.length);
+        return data[0];
     }
-
 }