]> WPIA git - gigi.git/blobdiff - tests/org/cacert/gigi/pages/account/TestCertificateAdd.java
chg: replace CAcert Wot User by SomeCA User when creating certificates
[gigi.git] / tests / org / cacert / gigi / pages / account / TestCertificateAdd.java
index 5aebe2d87698d1fdc769f61b34075805c23a64a1..4d6529db3197554802749bfefeee3430c04db9aa 100644 (file)
@@ -31,6 +31,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.cacert.gigi.crypto.SPKAC;
+import org.cacert.gigi.dbObjects.CertificateOwner;
 import org.cacert.gigi.dbObjects.Digest;
 import org.cacert.gigi.pages.account.certs.CertificateAdd;
 import org.cacert.gigi.pages.account.certs.CertificateRequest;
@@ -58,6 +59,8 @@ public class TestCertificateAdd extends ClientTest {
 
     private static class OnPageError extends Error {
 
+        private static final long serialVersionUID = 1L;
+
         public OnPageError(String page) {
             super(page);
         }
@@ -82,7 +85,7 @@ public class TestCertificateAdd extends ClientTest {
 
         String[] res = fillOutForm("CSR=" + URLEncoder.encode(pem, "UTF-8"));
         assertArrayEquals(new String[] {
-                "server", "CAcert WoT User", "dns:a." + uniq + ".tld\ndns:" + uniq + ".tld\n", Digest.SHA256.toString()
+                "server", CertificateRequest.DEFAULT_CN, "dns:a." + uniq + ".tld\ndns:" + uniq + ".tld\n", Digest.SHA256.toString()
         }, res);
     }
 
@@ -138,7 +141,7 @@ public class TestCertificateAdd extends ClientTest {
         huc.setDoOutput(true);
         OutputStream out = huc.getOutputStream();
         out.write(("csrf=" + URLEncoder.encode(csrf, "UTF-8")).getBytes("UTF-8"));
-        out.write(("&CN=CAcert+WoT+User&profile=client&SANs=" + URLEncoder.encode("email:" + email + "\n", "UTF-8")).getBytes("UTF-8"));
+        out.write(("&CN=" + URLEncoder.encode(CertificateRequest.DEFAULT_CN, "UTF-8") + "&profile=client&SANs=" + URLEncoder.encode("email:" + email + "\n", "UTF-8")).getBytes("UTF-8"));
         out.write(("&hash_alg=SHA512").getBytes("UTF-8"));
         URLConnection uc = authenticate(new URL(huc.getHeaderField("Location") + ".crt"));
         String crt = IOUtils.readURL(new InputStreamReader(uc.getInputStream(), "UTF-8"));
@@ -163,7 +166,7 @@ public class TestCertificateAdd extends ClientTest {
         Certificate c = CertificateFactory.getInstance("X509").generateCertificate(new ByteArrayInputStream(cert));
         gui = c.toString();
         assertThat(gui, containsString("clientAuth"));
-        assertThat(gui, containsString("CN=CAcert WoT User"));
+        assertThat(gui, containsString("CN=" + CertificateRequest.DEFAULT_CN));
         assertThat(gui, containsString("SHA512withRSA"));
         assertThat(gui, containsString("RFC822Name: " + email));
 
@@ -222,14 +225,14 @@ public class TestCertificateAdd extends ClientTest {
         Date start = new Date(now);
         Date end = new Date(now + MS_PER_DAY * 10);
         String validity = "&validFrom=" + sdf.format(start) + "&validity=" + sdf.format(end);
-        X509Certificate res = createCertWithValidity(validity);
+        X509Certificate res = createCertWithValidity(validity, false);
         assertNotNull(validity, res);
         assertEquals(start, res.getNotBefore());
         assertEquals(end, res.getNotAfter());
     }
 
     private void testCertificateValidityRelative(int field, int amount, String length, boolean shouldsucceed) throws IOException, GeneralSecurityException, UnsupportedEncodingException, MalformedURLException, CertificateException {
-        X509Certificate parsed = createCertWithValidity("&validFrom=now&validity=" + length);
+        X509Certificate parsed = createCertWithValidity("&validFrom=now&validity=" + length, false);
         if (parsed == null) {
             assertTrue( !shouldsucceed);
             return;
@@ -248,7 +251,7 @@ public class TestCertificateAdd extends ClientTest {
         assertEquals(c.getTime(), end);
     }
 
-    private X509Certificate createCertWithValidity(String validity) throws IOException, GeneralSecurityException, UnsupportedEncodingException, MalformedURLException, CertificateException {
+    private X509Certificate createCertWithValidity(String validity, boolean login) throws IOException, GeneralSecurityException, UnsupportedEncodingException, MalformedURLException, CertificateException {
         PKCS10Attributes atts = buildAtts(new ObjectIdentifier[] {
                 CertificateRequest.OID_KEY_USAGE_SSL_CLIENT
         }, new RFC822Name(email));
@@ -263,6 +266,9 @@ public class TestCertificateAdd extends ClientTest {
         out.write(("csrf=" + URLEncoder.encode(csrf, "UTF-8")).getBytes("UTF-8"));
         out.write(("&profile=client&CN=" + CertificateRequest.DEFAULT_CN + "&SANs=" + URLEncoder.encode("email:" + email + "\n", "UTF-8")).getBytes("UTF-8"));
         out.write(("&hash_alg=SHA512&").getBytes("UTF-8"));
+        if (login) {
+            out.write(("login=1&").getBytes("UTF-8"));
+        }
         out.write(validity.getBytes("UTF-8"));
 
         String certurl = huc.getHeaderField("Location");
@@ -368,4 +374,13 @@ public class TestCertificateAdd extends ClientTest {
         String resultingCN = m.group(1);
         return resultingCN;
     }
+
+    @Test
+    public void testSetLoginEnabled() throws IOException, GeneralSecurityException {
+        X509Certificate parsedLoginNotEnabled = createCertWithValidity("&validFrom=now&validity=1m", false);
+        assertNull(CertificateOwner.getByEnabledSerial(parsedLoginNotEnabled.getSerialNumber().toString(16)));
+
+        X509Certificate parsedLoginEnabled = createCertWithValidity("&validFrom=now&validity=1m", true);
+        assertEquals(u, CertificateOwner.getByEnabledSerial(parsedLoginEnabled.getSerialNumber().toString(16)));
+    }
 }