X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;ds=sidebyside;f=tests%2Forg%2Fcacert%2Fgigi%2Fpages%2Faccount%2FTestCertificateAdd.java;h=4d6529db3197554802749bfefeee3430c04db9aa;hb=b4295cc1e6c821c5701986b5bb4424726f0e1596;hp=57a5e634c8d10585bba4312936bbfcb601441a7f;hpb=aa5723dbb64ec8efa63909d39ff72364f0a5ee96;p=gigi.git diff --git a/tests/org/cacert/gigi/pages/account/TestCertificateAdd.java b/tests/org/cacert/gigi/pages/account/TestCertificateAdd.java index 57a5e634..4d6529db 100644 --- a/tests/org/cacert/gigi/pages/account/TestCertificateAdd.java +++ b/tests/org/cacert/gigi/pages/account/TestCertificateAdd.java @@ -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; @@ -56,6 +57,15 @@ import sun.security.x509.X509Key; public class TestCertificateAdd extends ClientTest { + private static class OnPageError extends Error { + + private static final long serialVersionUID = 1L; + + public OnPageError(String page) { + super(page); + } + } + KeyPair kp = generateKeypair(); String csrf; @@ -75,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); } @@ -131,8 +141,8 @@ 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(("&hash_alg=SHA512&tos_agree=y").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")); @@ -156,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)); @@ -215,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; @@ -241,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)); @@ -255,7 +265,10 @@ public class TestCertificateAdd extends ClientTest { OutputStream out = huc.getOutputStream(); 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&tos_agree=y&").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"); @@ -295,8 +308,9 @@ public class TestCertificateAdd extends ClientTest { assertArrayEquals(new String[] { "client", CertificateRequest.DEFAULT_CN, "", Digest.SHA512.toString() }, res); - } catch (Error e) { - assertTrue(e.getMessage().startsWith("
Challenge mismatch")); + } catch (OnPageError e) { + String error = fetchStartErrorMessage(e.getMessage()); + assertTrue(error, error.startsWith("

Challenge mismatch")); } return csrf; } @@ -341,9 +355,8 @@ public class TestCertificateAdd extends ClientTest { private String[] extractFormData(HttpURLConnection uc) throws IOException, Error { String result = IOUtils.readURL(uc); - if (result.contains("

")) { - String s = fetchStartErrorMessage(result); - throw new Error(s); + if (hasError().matches(result)) { + throw new OnPageError(result); } String profileKey = extractPattern(result, Pattern.compile("