X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=tests%2Forg%2Fcacert%2Fgigi%2FtestUtils%2FManagedTest.java;h=dda6736d6ad71a605b83897b2d5a8960c0f20400;hb=defd8706c0f13b8a118d893f4803eb0b9cd80809;hp=17dcc5c9621e616a429b4a6175aaf0d9259e0bef;hpb=b05ce94112d4aa98c6fe6eba0ceddf973d3f09b2;p=gigi.git diff --git a/tests/org/cacert/gigi/testUtils/ManagedTest.java b/tests/org/cacert/gigi/testUtils/ManagedTest.java index 17dcc5c9..dda6736d 100644 --- a/tests/org/cacert/gigi/testUtils/ManagedTest.java +++ b/tests/org/cacert/gigi/testUtils/ManagedTest.java @@ -37,21 +37,14 @@ import org.cacert.gigi.DevelLauncher; import org.cacert.gigi.GigiApiException; import org.cacert.gigi.database.GigiPreparedStatement; import org.cacert.gigi.database.GigiResultSet; -import org.cacert.gigi.database.SQLFileManager.ImportType; -import org.cacert.gigi.dbObjects.CATS.CATSType; -import org.cacert.gigi.dbObjects.Domain; -import org.cacert.gigi.dbObjects.DomainPingType; import org.cacert.gigi.dbObjects.EmailAddress; import org.cacert.gigi.dbObjects.Group; import org.cacert.gigi.dbObjects.Job; import org.cacert.gigi.dbObjects.ObjectCache; import org.cacert.gigi.dbObjects.User; -import org.cacert.gigi.pages.Manager; import org.cacert.gigi.pages.account.MyDetails; import org.cacert.gigi.pages.main.RegisterPage; import org.cacert.gigi.testUtils.TestEmailReceiver.TestMail; -import org.cacert.gigi.util.DatabaseManager; -import org.cacert.gigi.util.ServerConstants; import org.cacert.gigi.util.SimpleSigner; import org.hamcrest.CoreMatchers; import org.junit.After; @@ -68,13 +61,6 @@ public class ManagedTest extends ConfiguredTest { System.setProperty("sun.net.http.allowRestrictedHeaders", "true"); } - /** - * Some password that fulfills the password criteria. - */ - public static final String TEST_PASSWORD = "xvXV12°§"; - - public static final String DIFFICULT_CHARS = "ÜÖÄß𐀀"; - private static TestEmailReceiver ter; private static Process gigi; @@ -88,7 +74,11 @@ public class ManagedTest extends ConfiguredTest { } public static String getServerName() { - return url; + return url.replaceFirst(":443$", ""); + } + + public static String getSecureServerName() { + return getServerName().replaceAll("^www\\.", "secure."); } static { @@ -113,7 +103,6 @@ public class ManagedTest extends ConfiguredTest { purgeDatabase(); String type = testProps.getProperty("type"); generateMainProps(mainProps); - ServerConstants.init(mainProps); if (type.equals("local")) { url = testProps.getProperty("name.www") + ":" + testProps.getProperty("serverPort.https"); String[] parts = testProps.getProperty("mail").split(":", 2); @@ -171,22 +160,13 @@ public class ManagedTest extends ConfiguredTest { } - protected void await(Job j) throws InterruptedException { + protected static void await(Job j) throws InterruptedException { SimpleSigner.ping(); j.waitFor(5000); } public static void purgeDatabase() throws SQLException, IOException { - System.out.print("... resetting Database"); - long ms = System.currentTimeMillis(); - try { - DatabaseManager.run(new String[] { - testProps.getProperty("sql.driver"), testProps.getProperty("sql.url"), testProps.getProperty("sql.user"), testProps.getProperty("sql.password") - }, ImportType.TRUNCATE); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - System.out.println(" in " + (System.currentTimeMillis() - ms) + " ms"); + purgeOnlyDB(); clearCaches(); } @@ -200,13 +180,7 @@ public class ManagedTest extends ConfiguredTest { private static void generateMainProps(Properties mainProps) { mainProps.setProperty("testrunner", "true"); mainProps.setProperty("host", "127.0.0.1"); - mainProps.setProperty("name.secure", testProps.getProperty("name.secure")); - mainProps.setProperty("name.www", testProps.getProperty("name.www")); - mainProps.setProperty("name.static", testProps.getProperty("name.static")); - mainProps.setProperty("name.api", testProps.getProperty("name.api")); - mainProps.setProperty("https.port", testProps.getProperty("serverPort.https")); - mainProps.setProperty("http.port", testProps.getProperty("serverPort.http")); mainProps.setProperty("emailProvider", "org.cacert.gigi.email.TestEmailProvider"); mainProps.setProperty("emailProvider.port", "8473"); mainProps.setProperty("sql.driver", testProps.getProperty("sql.driver")); @@ -243,7 +217,8 @@ public class ManagedTest extends ConfiguredTest { ManagedTest.setAcceptLanguage(null); } - public static TestEmailReceiver getMailReciever() { + @Override + public MailReceiver getMailReceiver() { return ter; } @@ -263,12 +238,15 @@ public class ManagedTest extends ConfiguredTest { uc.addRequestProperty("Cookie", headerField); uc.setDoOutput(true); uc.getOutputStream().write((param + "&csrf=" + csrf).getBytes("UTF-8")); + if (uc.getResponseCode() == 302) { + return ""; + } String d = IOUtils.readURL(uc); return d; } public static org.hamcrest.Matcher hasError() { - return CoreMatchers.containsString("
"); + return CoreMatchers.containsString("
"); } public static org.hamcrest.Matcher hasNoError() { @@ -276,18 +254,18 @@ public class ManagedTest extends ConfiguredTest { } public static String fetchStartErrorMessage(String d) throws IOException { - String formFail = "
"; + String formFail = "
"; int idx = d.indexOf(formFail); if (idx == -1) { return null; } - String startError = d.substring(idx + formFail.length(), idx + 100).trim(); + String startError = d.substring(idx + formFail.length(), idx + formFail.length() + 150).trim(); return startError; } public static void registerUser(String firstName, String lastName, String email, String password) { try { - String query = "fname=" + URLEncoder.encode(firstName, "UTF-8") + "&lname=" + URLEncoder.encode(lastName, "UTF-8") + "&email=" + URLEncoder.encode(email, "UTF-8") + "&pword1=" + URLEncoder.encode(password, "UTF-8") + "&pword2=" + URLEncoder.encode(password, "UTF-8") + "&day=1&month=1&year=1910&tos_agree=1"; + String query = "name-type=western&fname=" + URLEncoder.encode(firstName, "UTF-8") + "&lname=" + URLEncoder.encode(lastName, "UTF-8") + "&email=" + URLEncoder.encode(email, "UTF-8") + "&pword1=" + URLEncoder.encode(password, "UTF-8") + "&pword2=" + URLEncoder.encode(password, "UTF-8") + "&day=1&month=1&year=1910&tos_agree=1"; String data = fetchStartErrorMessage(runRegister(query)); assertNull(data); } catch (UnsupportedEncodingException e) { @@ -317,16 +295,14 @@ public class ManagedTest extends ConfiguredTest { } } - public static void grant(String email, Group g) throws IOException { - HttpURLConnection huc = (HttpURLConnection) new URL("https://" + getServerName() + Manager.PATH).openConnection(); - huc.setDoOutput(true); - huc.getOutputStream().write(("addpriv=y&priv=" + URLEncoder.encode(g.getDatabaseName(), "UTF-8") + "&email=" + URLEncoder.encode(email, "UTF-8")).getBytes("UTF-8")); - assertEquals(200, huc.getResponseCode()); + public static void grant(User u, Group g) throws IOException, GigiApiException { + u.grantGroup(getSupporter(), g); + clearCaches(); } /** - * Creates a new user with 100 Assurance points given by an (invalid) - * assurance. + * Creates a new user with 100 Verification Points given by an (invalid) + * verification. * * @param firstName * the first name @@ -346,20 +322,6 @@ public class ManagedTest extends ConfiguredTest { return uid; } - public static void makeAssurer(int uid) { - try (GigiPreparedStatement ps1 = new GigiPreparedStatement("INSERT INTO cats_passed SET user_id=?, variant_id=?, language='en_EN', version=1")) { - ps1.setInt(1, uid); - ps1.setInt(2, CATSType.ASSURER_CHALLENGE.getId()); - ps1.execute(); - } - - try (GigiPreparedStatement ps2 = new GigiPreparedStatement("INSERT INTO `notary` SET `from`=?, `to`=?, points='100'")) { - ps2.setInt(1, uid); - ps2.setInt(2, uid); - ps2.execute(); - } - } - protected static String stripCookie(String headerField) { return headerField.substring(0, headerField.indexOf(';')); } @@ -391,15 +353,18 @@ public class ManagedTest extends ConfiguredTest { if (headerField == null) { return ""; } + if (huc.getResponseCode() != 302) { + fail(fetchStartErrorMessage(IOUtils.readURL(huc))); + } return stripCookie(headerField); } public static String login(final PrivateKey pk, final X509Certificate ce) throws NoSuchAlgorithmException, KeyManagementException, IOException, MalformedURLException { - HttpURLConnection connection = (HttpURLConnection) new URL("https://" + getServerName().replaceFirst("^www.", "secure.") + "/login").openConnection(); + HttpURLConnection connection = (HttpURLConnection) new URL("https://" + getSecureServerName() + "/login").openConnection(); authenticateClientCert(pk, ce, connection); if (connection.getResponseCode() == 302) { - assertEquals("https://" + getServerName().replaceFirst("^www.", "secure.").replaceFirst(":443$", "") + "/", connection.getHeaderField("Location").replaceFirst(":443$", "")); + assertEquals("https://" + getSecureServerName() + "/", connection.getHeaderField("Location").replaceFirst(":443$", "")); return stripCookie(connection.getHeaderField("Set-Cookie")); } else { return null; @@ -471,7 +436,7 @@ public class ManagedTest extends ConfiguredTest { Matcher m = p.matcher(content); for (int i = 0; i < formIndex + 1; i++) { if ( !m.find()) { - throw new Error("No CSRF Token"); + throw new Error("No CSRF Token:\n" + content); } } return m.group(1); @@ -482,7 +447,10 @@ public class ManagedTest extends ConfiguredTest { } public static String executeBasicWebInteraction(String cookie, String path, String query, int formIndex) throws IOException, MalformedURLException, UnsupportedEncodingException { - URLConnection uc = post(cookie, path, query, formIndex); + HttpURLConnection uc = post(cookie, path, query, formIndex); + if (uc.getResponseCode() == 302) { + return null; + } String error = fetchStartErrorMessage(IOUtils.readURL(uc)); return error; } @@ -509,14 +477,18 @@ public class ManagedTest extends ConfiguredTest { return (HttpURLConnection) uc; } - public static EmailAddress createVerifiedEmail(User u) throws InterruptedException, GigiApiException { - EmailAddress adrr = new EmailAddress(u, createUniqueName() + "test@test.tld", Locale.ENGLISH); - TestMail testMail = getMailReciever().receive(); - assertEquals(adrr.getAddress(), testMail.getTo()); + public EmailAddress createVerifiedEmail(User u) throws InterruptedException, GigiApiException { + return createVerifiedEmail(u, createUniqueName() + "test@test.tld"); + } + + public EmailAddress createVerifiedEmail(User u, String email) throws InterruptedException, GigiApiException { + EmailAddress addr = new EmailAddress(u, email, Locale.ENGLISH); + TestMail testMail = getMailReceiver().receive(); + assertEquals(addr.getAddress(), testMail.getTo()); String hash = testMail.extractLink().substring(testMail.extractLink().lastIndexOf('=') + 1); - adrr.verify(hash); - getMailReciever().clearMails(); - return adrr; + addr.verify(hash); + getMailReceiver().clearMails(); + return addr; } public static URLConnection cookie(URLConnection openConnection, String cookie) { @@ -524,18 +496,21 @@ public class ManagedTest extends ConfiguredTest { return openConnection; } - public static void verify(Domain d) { - try { - System.out.println(d.getId()); - d.addPing(DomainPingType.EMAIL, "admin"); - TestMail testMail = ter.receive(); - testMail.verify(); - assertTrue(d.isVerified()); - } catch (GigiApiException e) { - throw new Error(e); - } catch (IOException e) { - throw new Error(e); + private static User supporter; + + public static User getSupporter() throws GigiApiException, IOException { + if (supporter != null) { + return supporter; } + int i = createVerifiedUser("fn", "ln", createUniqueName() + "@email.com", TEST_PASSWORD); + try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `user_groups` SET `user`=?, `permission`=?::`userGroup`, `grantedby`=?")) { + ps.setInt(1, i); + ps.setString(2, Group.SUPPORTER.getDBName()); + ps.setInt(3, i); + ps.execute(); + } + clearCaches(); + supporter = User.getById(i); + return supporter; } - }