]> WPIA git - gigi.git/blobdiff - tests/org/cacert/gigi/TestCertificate.java
SPKAC: add intstall link for signed certificates.
[gigi.git] / tests / org / cacert / gigi / TestCertificate.java
index 42b1c2f359171aeb4e349b435cfa2071929945fc..f686498976fd8470ede64e3038e58bbd93ca100b 100644 (file)
@@ -1,20 +1,12 @@
 package org.cacert.gigi;
 
 import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.Socket;
-import java.net.URL;
 import java.security.GeneralSecurityException;
-import java.security.Principal;
 import java.security.PrivateKey;
 import java.security.cert.X509Certificate;
 import java.sql.SQLException;
 
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.KeyManager;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.X509KeyManager;
-
+import org.cacert.gigi.Certificate.CSRType;
 import org.cacert.gigi.Certificate.CertificateStatus;
 import org.cacert.gigi.testUtils.ManagedTest;
 import org.cacert.gigi.testUtils.PemKey;
@@ -27,85 +19,39 @@ public class TestCertificate extends ManagedTest {
        public void testClientCertLoginStates() throws IOException, GeneralSecurityException, SQLException,
                InterruptedException {
                String[] key1 = generateCSR("/CN=testmail@example.com");
-               Certificate c = new Certificate(1, "/CN=testmail@example.com", "sha256", key1[1]);
+               Certificate c = new Certificate(1, "/CN=testmail@example.com", "sha256", key1[1], CSRType.CSR);
                final PrivateKey pk = PemKey.parsePEMPrivateKey(key1[0]);
-               c.issue();
-               c.waitFor(60000);
+               c.issue().waitFor(60000);
                final X509Certificate ce = c.cert();
-               KeyManager km = new X509KeyManager() {
-
-                       @Override
-                       public String chooseClientAlias(String[] arg0, Principal[] arg1, Socket arg2) {
-                               return "client";
-                       }
-
-                       @Override
-                       public String chooseServerAlias(String arg0, Principal[] arg1, Socket arg2) {
-                               return null;
-                       }
-
-                       @Override
-                       public X509Certificate[] getCertificateChain(String arg0) {
-                               return new X509Certificate[] { ce };
-                       }
-
-                       @Override
-                       public String[] getClientAliases(String arg0, Principal[] arg1) {
-                               return new String[] { "client" };
-                       }
-
-                       @Override
-                       public PrivateKey getPrivateKey(String arg0) {
-                               if (arg0.equals("client")) {
-                                       return pk;
-                               }
-                               return null;
-                       }
-
-                       @Override
-                       public String[] getServerAliases(String arg0, Principal[] arg1) {
-                               return new String[] { "client" };
-                       }
-               };
-               SSLContext sc = SSLContext.getInstance("TLS");
-               sc.init(new KeyManager[] { km }, null, null);
-
-               HttpURLConnection connection = (HttpURLConnection) new URL("https://"
-                       + getServerName().replaceFirst("^www.", "secure.") + "/login").openConnection();
-               if (connection instanceof HttpsURLConnection) {
-                       ((HttpsURLConnection) connection).setSSLSocketFactory(sc.getSocketFactory());
-               }
-               assertEquals(302, connection.getResponseCode());
-               assertEquals("https://" + getServerName().replaceFirst("^www.", "secure.") + "/",
-                       connection.getHeaderField("Location"));
+               assertNotNull(login(pk, ce));
        }
 
        @Test
        public void testCertLifeCycle() throws IOException, GeneralSecurityException, SQLException, InterruptedException {
                String[] key1 = generateCSR("/CN=testmail@example.com");
-               Certificate c = new Certificate(1, "/CN=testmail@example.com", "sha256", key1[1]);
-               testFails(CertificateStatus.DRAFT, c);
-               c.issue();
+               Certificate c = new Certificate(1, "/CN=testmail@example.com", "sha256", key1[1], CSRType.CSR);
+               final PrivateKey pk = PemKey.parsePEMPrivateKey(key1[0]);
 
-               testFails(CertificateStatus.SIGNING, c);
-               c.waitFor(60000);
+               testFails(CertificateStatus.DRAFT, c);
+               c.issue().waitFor(60000);
 
                testFails(CertificateStatus.ISSUED, c);
-               c.revoke();
-
-               testFails(CertificateStatus.BEING_REVOKED, c);
-               c.waitFor(60000);
+               X509Certificate cert = c.cert();
+               assertNotNull(login(pk, cert));
+               c.revoke().waitFor(60000);
 
                testFails(CertificateStatus.REVOKED, c);
+               assertNull(login(pk, cert));
 
        }
 
        private void testFails(CertificateStatus status, Certificate c) throws IOException, GeneralSecurityException,
                SQLException {
+               assertEquals(status, c.getStatus());
                if (status != CertificateStatus.ISSUED) {
                        try {
                                c.revoke();
-                               fail("is in invalid state");
+                               fail(status + " is in invalid state");
                        } catch (IllegalStateException ise) {
 
                        }
@@ -113,7 +59,7 @@ public class TestCertificate extends ManagedTest {
                if (status != CertificateStatus.DRAFT) {
                        try {
                                c.issue();
-                               fail("is in invalid state");
+                               fail(status + " is in invalid state");
                        } catch (IllegalStateException ise) {
 
                        }
@@ -121,7 +67,7 @@ public class TestCertificate extends ManagedTest {
                if (status != CertificateStatus.ISSUED) {
                        try {
                                c.cert();
-                               fail("is in invalid state");
+                               fail(status + " is in invalid state");
                        } catch (IllegalStateException ise) {
 
                        }