X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=tests%2Forg%2Fcacert%2Fgigi%2Fping%2FTestSSL.java;h=19aafe258b3bff4986dd4aa4aebc06ae5e9422c9;hp=fccd97ebab28031bcd1d6d58da56cce40c8c0fba;hb=1a1d19be124739d8093781ac8ad5b33416cc6115;hpb=182e0bf4bc672b3e92cbcee950383a2ad8fef7fb diff --git a/tests/org/cacert/gigi/ping/TestSSL.java b/tests/org/cacert/gigi/ping/TestSSL.java index fccd97eb..19aafe25 100644 --- a/tests/org/cacert/gigi/ping/TestSSL.java +++ b/tests/org/cacert/gigi/ping/TestSSL.java @@ -36,11 +36,46 @@ import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.pages.account.domain.DomainOverview; import org.cacert.gigi.testUtils.IOUtils; import org.cacert.gigi.testUtils.PingTest; -import org.cacert.gigi.testUtils.TestEmailReciever.TestMail; +import org.cacert.gigi.testUtils.TestEmailReceiver.TestMail; import org.junit.Test; public class TestSSL extends PingTest { + public abstract static class AsyncTask { + + T res; + + Thread runner; + + Exception ex; + + public T join() throws InterruptedException { + runner.join(); + if (ex != null) { + throw new Error(ex); + } + return res; + } + + public void start() { + runner = new Thread() { + + @Override + public void run() { + try { + res = AsyncTask.this.run(); + } catch (Exception e) { + ex = e; + } + } + }; + runner.start(); + } + + public abstract T run() throws Exception; + + } + private KeyPair kp; private Certificate c; @@ -96,9 +131,9 @@ public class TestSSL extends PingTest { initailizeDomainForm(u); createCertificate(test, CertificateProfile.getByName(sslVariant == 1 ? "client" : "server")); - SSLServerSocket sss = createSSLServer(kp.getPrivate(), c.cert()); + final SSLServerSocket sss = createSSLServer(kp.getPrivate(), c.cert()); int port = sss.getLocalPort(); - SSLServerSocket sss2 = createSSLServer(kp.getPrivate(), c.cert()); + final SSLServerSocket sss2 = createSSLServer(kp.getPrivate(), c.cert()); int port2 = sss2.getLocalPort(); if (sslVariant == 3 || sslVariant == 2) { sss2.close(); @@ -106,7 +141,7 @@ public class TestSSL extends PingTest { sss.close(); } } - String content = "newdomain=" + URLEncoder.encode(test, "UTF-8") + // + String content = "adddomain&newdomain=" + URLEncoder.encode(test, "UTF-8") + // "&emailType=y&email=2&SSLType=y" + // "&ssl-type-0=direct&ssl-port-0=" + port + // "&ssl-type-1=direct&ssl-port-1=" + port2 + // @@ -115,11 +150,23 @@ public class TestSSL extends PingTest { "&adddomain&csrf=" + csrf; URL u2 = sendDomainForm(u, content); boolean firstSucceeds = sslVariant != 0 && sslVariant != 2; - assertTrue(firstSucceeds ^ acceptSSLServer(sss)); + AsyncTask ass = new AsyncTask() { + + @Override + public Boolean run() throws Exception { + return acceptSSLServer(sss); + } + }; + ass.start(); + System.out.println(port + " and " + port2 + " ready"); + System.err.println(port + " and " + port2 + " ready"); + boolean accept2 = acceptSSLServer(sss2); + boolean accept1 = ass.join(); + assertTrue(firstSucceeds ^ accept1); boolean secondsSucceeds = sslVariant != 0; - assertTrue(secondsSucceeds ^ acceptSSLServer(sss2)); + assertTrue(secondsSucceeds ^ accept2); - TestMail mail = getMailReciever().recieve(); + TestMail mail = getMailReciever().receive(); if (emailVariant == 0) { mail.verify(); } @@ -143,8 +190,7 @@ public class TestSSL extends PingTest { } private boolean acceptSSLServer(SSLServerSocket sss) throws IOException { - try { - Socket s = sss.accept(); + try (Socket s = sss.accept()) { s.getOutputStream().write('b'); s.getOutputStream().close(); return true; @@ -222,4 +268,11 @@ public class TestSSL extends PingTest { return (SSLServerSocket) sssf.createServerSocket(0); } + public static void main(String[] args) throws Exception { + initEnvironment(); + TestSSL t1 = new TestSSL(); + t1.sslAndMailSuccess(); + tearDownServer(); + } + }