import org.cacert.gigi.crypto.SPKAC;
import org.cacert.gigi.dbObjects.Digest;
-import org.cacert.gigi.dbObjects.User;
import org.cacert.gigi.pages.account.certs.CertificateAdd;
import org.cacert.gigi.pages.account.certs.CertificateIssueForm;
+import org.cacert.gigi.testUtils.ClientTest;
import org.cacert.gigi.testUtils.IOUtils;
-import org.cacert.gigi.testUtils.ManagedTest;
import org.cacert.gigi.util.PEM;
import org.junit.Test;
import sun.security.x509.SubjectAlternativeNameExtension;
import sun.security.x509.X509Key;
-public class TestCertificateAdd extends ManagedTest {
+public class TestCertificateAdd extends ClientTest {
KeyPair kp = generateKeypair();
- User u = User.getById(createVerifiedUser("testuser", "testname", uniq + "@testdom.com", TEST_PASSWORD));
-
- String session = login(uniq + "@testdom.com", TEST_PASSWORD);
-
String csrf;
public TestCertificateAdd() throws GeneralSecurityException, IOException {
- TestDomain.addDomain(session, uniq + ".tld");
+ TestDomain.addDomain(cookie, uniq + ".tld");
}
public void testSimpleMail() throws IOException, GeneralSecurityException {
PKCS10Attributes atts = buildAtts(new ObjectIdentifier[] {
CertificateIssueForm.OID_KEY_USAGE_EMAIL_PROTECTION
- }, new DNSName("a." + uniq + ".tld"), new DNSName("b." + uniq + ".tld"), new RFC822Name(uniq + "@testdom.com"));
+ }, new DNSName("a." + uniq + ".tld"), new DNSName("b." + uniq + ".tld"), new RFC822Name(email));
- String pem = generatePEMCSR(kp, "CN=testuser testname", atts, "SHA384WithRSA");
+ String pem = generatePEMCSR(kp, "CN=a b", atts, "SHA384WithRSA");
String[] res = fillOutForm("CSR=" + URLEncoder.encode(pem, "UTF-8"));
assertArrayEquals(new String[] {
- "mail", "testuser testname", "dns:a." + uniq + ".tld\ndns:b." + uniq + ".tld\nemail:" + uniq + "@testdom.com\n", Digest.SHA384.toString()
+ "mail", "a b", "dns:a." + uniq + ".tld\ndns:b." + uniq + ".tld\nemail:" + email + "\n", Digest.SHA384.toString()
}, res);
}
public void testSimpleClient() throws IOException, GeneralSecurityException {
PKCS10Attributes atts = buildAtts(new ObjectIdentifier[] {
CertificateIssueForm.OID_KEY_USAGE_SSL_CLIENT
- }, new RFC822Name(uniq + "@testdom.com"));
+ }, new RFC822Name(email));
- String pem = generatePEMCSR(kp, "CN=testuser testname,email=" + uniq + "@testdom.com", atts, "SHA512WithRSA");
+ String pem = generatePEMCSR(kp, "CN=a b,email=" + email, atts, "SHA512WithRSA");
String[] res = fillOutForm("CSR=" + URLEncoder.encode(pem, "UTF-8"));
assertArrayEquals(new String[] {
- "client", "testuser testname", "email:" + uniq + "@testdom.com\n", Digest.SHA512.toString()
+ "client", "a b", "email:" + email + "\n", Digest.SHA512.toString()
}, res);
}
public void testIssue() throws IOException, GeneralSecurityException {
PKCS10Attributes atts = buildAtts(new ObjectIdentifier[] {
CertificateIssueForm.OID_KEY_USAGE_SSL_CLIENT
- }, new RFC822Name(uniq + "@testdom.com"));
+ }, new RFC822Name(email));
- String pem = generatePEMCSR(kp, "CN=testuser testname,email=" + uniq + "@testdom.com", atts, "SHA512WithRSA");
+ String pem = generatePEMCSR(kp, "CN=a b,email=" + email, atts, "SHA512WithRSA");
String[] res = fillOutForm("CSR=" + URLEncoder.encode(pem, "UTF-8"));
assertArrayEquals(new String[] {
- "client", "testuser testname", "email:" + uniq + "@testdom.com\n", Digest.SHA512.toString()
+ "client", "a b", "email:" + email + "\n", Digest.SHA512.toString()
}, res);
HttpURLConnection huc = (HttpURLConnection) ncert.openConnection();
- huc.setRequestProperty("Cookie", session);
+ huc.setRequestProperty("Cookie", cookie);
huc.setDoOutput(true);
OutputStream out = huc.getOutputStream();
out.write(("csrf=" + URLEncoder.encode(csrf, "UTF-8")).getBytes());
- out.write(("&profile=client&CN=testuser+testname&SANs=" + URLEncoder.encode("email:" + uniq + "@testdom.com\n", "UTF-8")).getBytes());
+ out.write(("&profile=client&CN=a+b&SANs=" + URLEncoder.encode("email:" + email + "\n", "UTF-8")).getBytes());
out.write(("&hash_alg=SHA512&CCA=y").getBytes());
URLConnection uc = authenticate(new URL(huc.getHeaderField("Location") + ".crt"));
String crt = IOUtils.readURL(new InputStreamReader(uc.getInputStream(), "UTF-8"));
uc = authenticate(new URL(huc.getHeaderField("Location")));
String gui = IOUtils.readURL(uc);
assertThat(gui, containsString("clientAuth"));
- assertThat(gui, containsString("CN=testuser testname"));
+ assertThat(gui, containsString("CN=a b"));
assertThat(gui, containsString("SHA512withRSA"));
- assertThat(gui, containsString("RFC822Name: " + uniq + "@testdom.com"));
+ assertThat(gui, containsString("RFC822Name: " + email));
}
private X509Certificate createCertWithValidity(String validity) throws IOException, GeneralSecurityException, UnsupportedEncodingException, MalformedURLException, CertificateException {
PKCS10Attributes atts = buildAtts(new ObjectIdentifier[] {
CertificateIssueForm.OID_KEY_USAGE_SSL_CLIENT
- }, new RFC822Name(uniq + "@testdom.com"));
+ }, new RFC822Name(email));
- String pem = generatePEMCSR(kp, "CN=testuser testname", atts, "SHA512WithRSA");
+ String pem = generatePEMCSR(kp, "CN=a b", atts, "SHA512WithRSA");
fillOutForm("CSR=" + URLEncoder.encode(pem, "UTF-8"));
HttpURLConnection huc = (HttpURLConnection) ncert.openConnection();
- huc.setRequestProperty("Cookie", session);
+ huc.setRequestProperty("Cookie", cookie);
huc.setDoOutput(true);
OutputStream out = huc.getOutputStream();
out.write(("csrf=" + URLEncoder.encode(csrf, "UTF-8")).getBytes());
- out.write(("&profile=client&CN=testuser+testname&SANs=" + URLEncoder.encode("email:" + uniq + "@testdom.com\n", "UTF-8")).getBytes());
+ out.write(("&profile=client&CN=a+b&SANs=" + URLEncoder.encode("email:" + email + "\n", "UTF-8")).getBytes());
out.write(("&hash_alg=SHA512&CCA=y&").getBytes());
out.write(validity.getBytes());
private URLConnection authenticate(URL url) throws IOException {
URLConnection uc = url.openConnection();
- uc.setRequestProperty("Cookie", session);
+ uc.setRequestProperty("Cookie", cookie);
return uc;
}
protected String testSPKAC(boolean correctChallange) throws GeneralSecurityException, IOException {
HttpURLConnection uc = (HttpURLConnection) ncert.openConnection();
- uc.setRequestProperty("Cookie", session);
+ uc.setRequestProperty("Cookie", cookie);
String s = IOUtils.readURL(uc);
csrf = extractPattern(s, Pattern.compile("<input [^>]*name='csrf' [^>]*value='([^']*)'>"));
private String[] fillOutForm(String pem) throws IOException {
HttpURLConnection uc = (HttpURLConnection) ncert.openConnection();
- uc.setRequestProperty("Cookie", session);
+ uc.setRequestProperty("Cookie", cookie);
csrf = getCSRF(uc);
return fillOutFormDirect(pem);
private String[] fillOutFormDirect(String pem) throws IOException {
HttpURLConnection uc = (HttpURLConnection) ncert.openConnection();
- uc.setRequestProperty("Cookie", session);
+ uc.setRequestProperty("Cookie", cookie);
uc.setDoOutput(true);
uc.getOutputStream().write(("csrf=" + URLEncoder.encode(csrf, "UTF-8") + "&" + pem).getBytes());
uc.getOutputStream().flush();
import java.net.URLEncoder;
import org.cacert.gigi.GigiApiException;
-import org.cacert.gigi.dbObjects.User;
-import org.cacert.gigi.testUtils.ManagedTest;
+import org.cacert.gigi.testUtils.ClientTest;
import org.junit.Test;
-public class TestChangePassword extends ManagedTest {
-
- User u = User.getById(createVerifiedUser("fn", "ln", createUniqueName() + "uni@example.org", TEST_PASSWORD));
-
- String cookie;
+public class TestChangePassword extends ClientTest {
String path = ChangePasswordPage.PATH;
import java.net.URL;
import java.net.URLConnection;
+import org.cacert.gigi.testUtils.ClientTest;
import org.cacert.gigi.testUtils.IOUtils;
-import org.cacert.gigi.testUtils.ManagedTest;
import org.junit.Test;
-public class TestContactInformation extends ManagedTest {
+public class TestContactInformation extends ClientTest {
@Test
public void testDirectoryListingToggle() throws IOException {
- String email = createUniqueName() + "@e.fg";
- createVerifiedUser("Kurti", createUniqueName(), email, TEST_PASSWORD);
- String cookie = login(email, TEST_PASSWORD);
assertNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "listme=1&contactinfo=&processContact", 1));
URLConnection url = new URL("https://" + getServerName() + MyDetails.PATH).openConnection();
url.setRequestProperty("Cookie", cookie);
@Test
public void testContactinfoSet() throws IOException {
- String email = createUniqueName() + "@e.fg";
- createVerifiedUser("Kurti", createUniqueName(), email, TEST_PASSWORD);
- String cookie = login(email, TEST_PASSWORD);
String text = createUniqueName();
assertNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "listme=1&contactinfo=" + text + "&processContact", 1));
URLConnection url = new URL("https://" + getServerName() + MyDetails.PATH).openConnection();
import java.io.IOException;
import java.net.URLEncoder;
-import org.cacert.gigi.dbObjects.User;
import org.cacert.gigi.pages.account.domain.DomainOverview;
-import org.cacert.gigi.testUtils.ManagedTest;
+import org.cacert.gigi.testUtils.ClientTest;
import org.junit.Test;
-public class TestDomain extends ManagedTest {
-
- User u = User.getById(createVerifiedUser("testuser", "testname", uniq + "@testdom.com", TEST_PASSWORD));
-
- String session = login(uniq + "@testdom.com", TEST_PASSWORD);
+public class TestDomain extends ClientTest {
public TestDomain() throws IOException {}
@Test
public void testAdd() throws IOException {
- assertNull(addDomain(session, uniq + ".de"));
- assertNotNull(addDomain(session, uniq + ".de"));
+ assertNull(addDomain(cookie, uniq + ".de"));
+ assertNotNull(addDomain(cookie, uniq + ".de"));
}
public static String addDomain(String session, String domain) throws IOException {
import org.cacert.gigi.dbObjects.User;
import org.cacert.gigi.localisation.Language;
import org.cacert.gigi.pages.account.mail.MailOverview;
-import org.cacert.gigi.testUtils.ManagedTest;
+import org.cacert.gigi.testUtils.ClientTest;
import org.junit.Test;
-public class TestMailManagement extends ManagedTest {
-
- private User u = User.getById(createVerifiedUser("fn", "ln", createUniqueName() + "uni@example.org", TEST_PASSWORD));
-
- private String cookie;
+public class TestMailManagement extends ClientTest {
private String path = MailOverview.DEFAULT_PATH;
import org.cacert.gigi.dbObjects.Organisation;
import org.cacert.gigi.dbObjects.Organisation.Affiliation;
import org.cacert.gigi.dbObjects.User;
+import org.cacert.gigi.testUtils.ClientTest;
import org.cacert.gigi.testUtils.IOUtils;
-import org.cacert.gigi.testUtils.ManagedTest;
import org.junit.Test;
-public class TestOrgaManagement extends ManagedTest {
-
- public User u = User.getById(createVerifiedUser("testuser", "testname", uniq + "@testdom.com", TEST_PASSWORD));
-
- public String session;
+public class TestOrgaManagement extends ClientTest {
public TestOrgaManagement() throws IOException {
u.grantGroup(u, Group.getByString("orgassurer"));
clearCaches();
- session = login(uniq + "@testdom.com", TEST_PASSWORD);
+ cookie = login(email, TEST_PASSWORD);
}
@Test
public void testAdd() throws IOException {
- executeBasicWebInteraction(session, CreateOrgPage.DEFAULT_PATH, "O=name&contact=mail&L=K%C3%B6ln&ST=%C3%9C%C3%96%C3%84%C3%9F&C=DE&comments=jkl%C3%B6loiuzfdfgjlh%C3%B6", 0);
+ executeBasicWebInteraction(cookie, CreateOrgPage.DEFAULT_PATH, "O=name&contact=mail&L=K%C3%B6ln&ST=%C3%9C%C3%96%C3%84%C3%9F&C=DE&comments=jkl%C3%B6loiuzfdfgjlh%C3%B6", 0);
Organisation[] orgs = Organisation.getOrganisations(0, 30);
assertEquals(1, orgs.length);
assertEquals("mail", orgs[0].getContactEmail());
assertEquals("ÜÖÄß", orgs[0].getProvince());
User u2 = User.getById(createVerifiedUser("testworker", "testname", createUniqueName() + "@testdom.com", TEST_PASSWORD));
- executeBasicWebInteraction(session, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "email=" + URLEncoder.encode(u2.getEmail(), "UTF-8") + "&do_affiliate=y&master=y", 1);
+ executeBasicWebInteraction(cookie, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "email=" + URLEncoder.encode(u2.getEmail(), "UTF-8") + "&do_affiliate=y&master=y", 1);
List<Affiliation> allAdmins = orgs[0].getAllAdmins();
assertEquals(1, allAdmins.size());
Affiliation affiliation = allAdmins.get(0);
assertSame(u2, affiliation.getTarget());
assertTrue(affiliation.isMaster());
- executeBasicWebInteraction(session, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "email=" + URLEncoder.encode(u.getEmail(), "UTF-8") + "&do_affiliate=y", 1);
+ executeBasicWebInteraction(cookie, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "email=" + URLEncoder.encode(u.getEmail(), "UTF-8") + "&do_affiliate=y", 1);
allAdmins = orgs[0].getAllAdmins();
assertEquals(2, allAdmins.size());
Affiliation affiliation2 = allAdmins.get(0);
assertSame(u.getId(), affiliation2.getTarget().getId());
assertFalse(affiliation2.isMaster());
- executeBasicWebInteraction(session, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "del=" + URLEncoder.encode(u.getEmail(), "UTF-8") + "&email=&do_affiliate=y", 1);
+ executeBasicWebInteraction(cookie, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "del=" + URLEncoder.encode(u.getEmail(), "UTF-8") + "&email=&do_affiliate=y", 1);
assertEquals(1, orgs[0].getAllAdmins().size());
- executeBasicWebInteraction(session, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "del=" + URLEncoder.encode(u2.getEmail(), "UTF-8") + "&email=&do_affiliate=y", 1);
+ executeBasicWebInteraction(cookie, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "del=" + URLEncoder.encode(u2.getEmail(), "UTF-8") + "&email=&do_affiliate=y", 1);
assertEquals(0, orgs[0].getAllAdmins().size());
- executeBasicWebInteraction(session, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "O=name1&contact=&L=K%C3%B6ln&ST=%C3%9C%C3%96%C3%84%C3%9F&C=DE&comments=jkl%C3%B6loiuzfdfgjlh%C3%B6", 0);
+ executeBasicWebInteraction(cookie, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "O=name1&contact=&L=K%C3%B6ln&ST=%C3%9C%C3%96%C3%84%C3%9F&C=DE&comments=jkl%C3%B6loiuzfdfgjlh%C3%B6", 0);
clearCaches();
orgs = Organisation.getOrganisations(0, 30);
assertEquals("name1", orgs[0].getName());
assertEquals(404, ((HttpURLConnection) uc).getResponseCode());
uc = new URL("https://" + getServerName() + ViewOrgPage.DEFAULT_PATH).openConnection();
- uc.addRequestProperty("Cookie", session);
+ uc.addRequestProperty("Cookie", cookie);
content = IOUtils.readURL(uc);
assertThat(content, containsString("name21"));
assertThat(content, containsString("name12"));
- uc = cookie(new URL("https://" + getServerName() + ViewOrgPage.DEFAULT_PATH + "/" + o1.getId()).openConnection(), session);
+ uc = cookie(new URL("https://" + getServerName() + ViewOrgPage.DEFAULT_PATH + "/" + o1.getId()).openConnection(), cookie);
assertEquals(200, ((HttpURLConnection) uc).getResponseCode());
- uc = cookie(new URL("https://" + getServerName() + ViewOrgPage.DEFAULT_PATH + "/" + o2.getId()).openConnection(), session);
+ uc = cookie(new URL("https://" + getServerName() + ViewOrgPage.DEFAULT_PATH + "/" + o2.getId()).openConnection(), cookie);
assertEquals(200, ((HttpURLConnection) uc).getResponseCode());
o1.delete();
o2.delete();
import org.cacert.gigi.dbObjects.Group;
import org.cacert.gigi.dbObjects.ObjectCache;
import org.cacert.gigi.dbObjects.User;
+import org.cacert.gigi.testUtils.ClientTest;
import org.cacert.gigi.testUtils.IOUtils;
-import org.cacert.gigi.testUtils.ManagedTest;
import org.junit.Test;
-public class TestTTP extends ManagedTest {
-
- User u = User.getById(createVerifiedUser("fn", "ln", "test-" + createUniqueName() + "@example.org", TEST_PASSWORD));
-
- String cookie = login(u.getEmail(), TEST_PASSWORD);
+public class TestTTP extends ClientTest {
URL ttpPage = new URL("https://" + getServerName() + RequestTTPPage.PATH);
import org.cacert.gigi.dbObjects.Group;
import org.cacert.gigi.dbObjects.User;
import org.cacert.gigi.pages.admin.TTPAdminPage;
-import org.cacert.gigi.testUtils.ManagedTest;
+import org.cacert.gigi.testUtils.ClientTest;
import org.junit.Test;
-public class TestTTPAdmin extends ManagedTest {
-
- User us;
-
- String cookie;
+public class TestTTPAdmin extends ClientTest {
User us2;
public TestTTPAdmin() throws IOException {
- String email = uniq + "@example.com";
- us = User.getById(createVerifiedUser("fn", "ln", email, TEST_PASSWORD));
- cookie = login(email, TEST_PASSWORD);
us2 = User.getById(createVerifiedUser("fn", "ln", createUniqueName() + "@example.com", TEST_PASSWORD));
}
public void testTTPAdmin(boolean hasRight) throws IOException {
if (hasRight) {
- grant(us.getEmail(), Group.getByString("ttp-assurer"));
+ grant(email, Group.getByString("ttp-assurer"));
}
- grant(us.getEmail(), TTPAdminPage.TTP_APPLICANT);
- cookie = login(us.getEmail(), TEST_PASSWORD);
+ grant(u.getEmail(), TTPAdminPage.TTP_APPLICANT);
+ cookie = login(u.getEmail(), TEST_PASSWORD);
assertEquals( !hasRight ? 403 : 200, fetchStatusCode("https://" + getServerName() + TTPAdminPage.PATH));
assertEquals( !hasRight ? 403 : 200, fetchStatusCode("https://" + getServerName() + TTPAdminPage.PATH + "/"));
- assertEquals( !hasRight ? 403 : 200, fetchStatusCode("https://" + getServerName() + TTPAdminPage.PATH + "/" + us.getId()));
+ assertEquals( !hasRight ? 403 : 200, fetchStatusCode("https://" + getServerName() + TTPAdminPage.PATH + "/" + u.getId()));
assertEquals( !hasRight ? 403 : 404, fetchStatusCode("https://" + getServerName() + TTPAdminPage.PATH + "/" + us2.getId()));
assertEquals( !hasRight ? 403 : 404, fetchStatusCode("https://" + getServerName() + TTPAdminPage.PATH + "/" + 100));
}
private void createCertificate(String test, CertificateProfile profile) throws GeneralSecurityException, IOException, SQLException, InterruptedException, GigiApiException {
kp = generateKeypair();
String csr = generatePEMCSR(kp, "CN=" + test);
- c = new Certificate(User.getById(userid), Certificate.buildDN("CN", test), "sha256", csr, CSRType.CSR, profile);
+ c = new Certificate(User.getById(id), Certificate.buildDN("CN", test), "sha256", csr, CSRType.CSR, profile);
c.issue(null, "2y").waitFor(60000);
}
import java.io.IOException;
+import org.cacert.gigi.dbObjects.User;
+
+/**
+ * Superclass for testsuites in a scenario where there is an registered member,
+ * who is already logged on.
+ */
public abstract class ClientTest extends ManagedTest {
+ /**
+ * Email of the member.
+ */
protected String email = createUniqueName() + "@example.org";
- protected int userid = createVerifiedUser("a", "b", email, TEST_PASSWORD);
+ /**
+ * Id of the member
+ */
+ protected int id = createVerifiedUser("a", "b", email, TEST_PASSWORD);
- protected String cookie;
+ /**
+ * {@link User} object of the member
+ */
+ protected User u = User.getById(id);
- protected String csrf;
+ /**
+ * Session cookie of the member.
+ */
+ protected String cookie;
public ClientTest() {
try {
import sun.security.pkcs10.PKCS10Attributes;
import sun.security.x509.X500Name;
-public class ConfiguredTest {
+/**
+ * Base class for a Testsuite that makes use of the config variables that define
+ * the environment.
+ */
+public abstract class ConfiguredTest {
static Properties testProps = new Properties();
import org.junit.AfterClass;
import org.junit.BeforeClass;
+/**
+ * Base class for test suites who require a launched Gigi instance. The instance
+ * is cleared once per test suite.
+ */
public class ManagedTest extends ConfiguredTest {
static {
}
/**
- * Some password that fullfills the password criteria.
+ * Some password that fulfills the password criteria.
*/
protected static final String TEST_PASSWORD = "xvXV12°§";
import org.cacert.gigi.pages.account.domain.DomainOverview;
import org.junit.After;
+/**
+ * Base class for test suites that check extensively if the domain-ping
+ * functionality wroks as expected.
+ */
public abstract class PingTest extends ClientTest {
+ protected String csrf;
+
protected static void updateService(String token, String value, String action) throws IOException, MalformedURLException {
String manage = getTestProps().getProperty("domain.manage");
assumeNotNull(manage);