X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;ds=inline;f=tests%2Forg%2Fcacert%2Fgigi%2Fping%2FTestSSL.java;h=e0c78bd0a0edae15ddc628cd5e471515422184d9;hb=66dcfd37b5a9debd8e33e71c699a0fdd2f2f595c;hp=9b0e928d424eaf88e15adf262f0a35af62cd76df;hpb=99ef9ee7f8d4a2332e4f08c7a0b23cc84966f555;p=gigi.git diff --git a/tests/org/cacert/gigi/ping/TestSSL.java b/tests/org/cacert/gigi/ping/TestSSL.java index 9b0e928d..e0c78bd0 100644 --- a/tests/org/cacert/gigi/ping/TestSSL.java +++ b/tests/org/cacert/gigi/ping/TestSSL.java @@ -1,10 +1,11 @@ package org.cacert.gigi.ping; import static org.junit.Assert.*; +import static org.junit.Assume.*; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.net.Socket; -import java.net.URL; import java.net.URLEncoder; import java.security.GeneralSecurityException; import java.security.KeyManagementException; @@ -14,8 +15,14 @@ import java.security.Principal; import java.security.PrivateKey; import java.security.SecureRandom; import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.sql.SQLException; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -26,48 +33,113 @@ import javax.net.ssl.SSLServerSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.X509KeyManager; import javax.net.ssl.X509TrustManager; +import javax.security.auth.x500.X500Principal; -import org.cacert.gigi.Certificate; -import org.cacert.gigi.CertificateProfile; -import org.cacert.gigi.Certificate.CSRType; import org.cacert.gigi.GigiApiException; -import org.cacert.gigi.pages.account.DomainOverview; +import org.cacert.gigi.database.DatabaseConnection; +import org.cacert.gigi.database.DatabaseConnection.Link; +import org.cacert.gigi.dbObjects.Certificate; +import org.cacert.gigi.dbObjects.Certificate.CSRType; +import org.cacert.gigi.dbObjects.CertificateProfile; +import org.cacert.gigi.dbObjects.Digest; +import org.cacert.gigi.dbObjects.Job; +import org.cacert.gigi.dbObjects.User; 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.cacert.gigi.util.SimpleSigner; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameter; +import org.junit.runners.Parameterized.Parameters; +@RunWith(Parameterized.class) public class TestSSL extends PingTest { + @Parameters(name = "self-signed = {0}") + public static Iterable genParams() throws IOException { + return Arrays.asList(new Object[] { + true + }, new Object[] { + false + }); + + } + + @Parameter + public Boolean self = false; + + 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; + private X509Certificate c; - @Test + @Test(timeout = 70000) public void sslAndMailSuccess() throws IOException, InterruptedException, SQLException, GeneralSecurityException, GigiApiException { testEmailAndSSL(0, 0, true); } - @Test + @Test(timeout = 70000) public void sslWongTypeAndMailSuccess() throws IOException, InterruptedException, SQLException, GeneralSecurityException, GigiApiException { testEmailAndSSL(1, 0, true); } - @Test + @Test(timeout = 70000) public void sslOneMissingAndMailSuccess() throws IOException, InterruptedException, SQLException, GeneralSecurityException, GigiApiException { testEmailAndSSL(2, 0, true); } - @Test + @Test(timeout = 70000) public void sslBothMissingAndMailSuccess() throws IOException, InterruptedException, SQLException, GeneralSecurityException, GigiApiException { testEmailAndSSL(3, 0, true); } - @Test + @Test(timeout = 70000) public void sslWrongTypeAndMailFail() throws IOException, InterruptedException, SQLException, GeneralSecurityException, GigiApiException { testEmailAndSSL(1, 1, false); } + private void testEmailAndSSL(int sslVariant, int emailVariant, boolean successMail) throws IOException, InterruptedException, SQLException, GeneralSecurityException, GigiApiException { + try (Link link = DatabaseConnection.newLink(false)) { + testEmailAndSSLWithLink(sslVariant, emailVariant, successMail); + } + } + /** * @param sslVariant *