X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=tests%2Forg%2Fcacert%2Fgigi%2FtestUtils%2FManagedTest.java;h=1cca75aabab48cba6f7db728d3f88b17a81747d7;hb=2233a655b4ef4c1122a406e83a0e6334b9fd49b6;hp=f591e77259e0f6a1a6d9fd3cf576f0f92469fa45;hpb=a95fcf745db63e39d16aa3ec34a4d4f00b9b60d5;p=gigi.git diff --git a/tests/org/cacert/gigi/testUtils/ManagedTest.java b/tests/org/cacert/gigi/testUtils/ManagedTest.java index f591e772..1cca75aa 100644 --- a/tests/org/cacert/gigi/testUtils/ManagedTest.java +++ b/tests/org/cacert/gigi/testUtils/ManagedTest.java @@ -1,30 +1,56 @@ package org.cacert.gigi.testUtils; -import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; +import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.InetSocketAddress; +import java.net.MalformedURLException; +import java.net.Socket; import java.net.URL; +import java.net.URLConnection; import java.net.URLEncoder; import java.nio.file.Files; import java.nio.file.Paths; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.Principal; +import java.security.PrivateKey; +import java.security.cert.X509Certificate; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.Properties; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.KeyManager; +import javax.net.ssl.SSLContext; +import javax.net.ssl.X509KeyManager; import org.cacert.gigi.DevelLauncher; -import org.cacert.gigi.IOUtils; +import org.cacert.gigi.database.DatabaseConnection; import org.cacert.gigi.testUtils.TestEmailReciever.TestMail; +import org.cacert.gigi.util.DatabaseManager; +import org.cacert.gigi.util.ServerConstants; +import org.cacert.gigi.util.SimpleSigner; import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; public class ManagedTest { + /** + * Some password that fullfills the password criteria. + */ + protected static final String TEST_PASSWORD = "xvXV12°§"; + private final String registerService = "/register"; private static TestEmailReciever ter; @@ -34,52 +60,47 @@ public class ManagedTest { public static String getServerName() { return url; } + static Properties testProps = new Properties(); + static { + InitTruststore.run(); + HttpURLConnection.setFollowRedirects(false); + } + @BeforeClass public static void connectToServer() { try { testProps.load(new FileInputStream("config/test.properties")); + if (!DatabaseConnection.isInited()) { + DatabaseConnection.init(testProps); + } + System.out.println("... purging Database"); + DatabaseManager.run(new String[] { testProps.getProperty("sql.driver"), testProps.getProperty("sql.url"), + testProps.getProperty("sql.user"), testProps.getProperty("sql.password") }); String type = testProps.getProperty("type"); + Properties mainProps = generateMainProps(); + ServerConstants.init(mainProps); if (type.equals("local")) { - url = testProps.getProperty("server"); + url = testProps.getProperty("name.www") + ":" + testProps.getProperty("serverPort"); String[] parts = testProps.getProperty("mail").split(":", 2); - ter = new TestEmailReciever(new InetSocketAddress(parts[0], - Integer.parseInt(parts[1]))); + ter = new TestEmailReciever(new InetSocketAddress(parts[0], Integer.parseInt(parts[1]))); return; } - url = "localhost:" + testProps.getProperty("serverPort"); + url = testProps.getProperty("name.www") + ":" + testProps.getProperty("serverPort"); gigi = Runtime.getRuntime().exec(testProps.getProperty("java")); - DataOutputStream toGigi = new DataOutputStream( - gigi.getOutputStream()); + DataOutputStream toGigi = new DataOutputStream(gigi.getOutputStream()); System.out.println("... starting server"); - Properties mainProps = new Properties(); - mainProps.load(new FileInputStream("config/gigi.properties")); - mainProps.setProperty("host", "127.0.0.1"); - mainProps.setProperty("port", testProps.getProperty("serverPort")); - mainProps.setProperty("emailProvider", - "org.cacert.gigi.email.TestEmailProvider"); - mainProps.setProperty("emailProvider.port", "8473"); - - byte[] cacerts = Files - .readAllBytes(Paths.get("config/cacerts.jks")); - byte[] keystore = Files.readAllBytes(Paths - .get("config/keystore.pkcs12")); - - DevelLauncher.writeGigiConfig(toGigi, new byte[]{}, - "changeit".getBytes(), mainProps, cacerts, keystore); + + byte[] cacerts = Files.readAllBytes(Paths.get("config/cacerts.jks")); + byte[] keystore = Files.readAllBytes(Paths.get("config/keystore.pkcs12")); + + DevelLauncher.writeGigiConfig(toGigi, "changeit".getBytes(), "changeit".getBytes(), mainProps, cacerts, + keystore); toGigi.flush(); - // TODO wait for ready - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - final BufferedReader br = new BufferedReader(new InputStreamReader( - gigi.getErrorStream())); + + final BufferedReader br = new BufferedReader(new InputStreamReader(gigi.getErrorStream())); String line; - while ((line = br.readLine()) != null - && !line.contains("Server:main: Started")) { - System.err.println(line); + while ((line = br.readLine()) != null && !line.contains("Server:main: Started")) { } new Thread() { @Override @@ -94,24 +115,53 @@ public class ManagedTest { } } }.start(); - System.err.println(line); if (line == null) { throw new Error("Server startup failed"); } - ter = new TestEmailReciever( - new InetSocketAddress("localhost", 8473)); + ter = new TestEmailReciever(new InetSocketAddress("localhost", 8473)); + SimpleSigner.runSigner(); } catch (IOException e) { throw new Error(e); + } catch (ClassNotFoundException e1) { + e1.printStackTrace(); + } catch (SQLException e1) { + e1.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); } } + + private static Properties generateMainProps() { + Properties mainProps = new Properties(); + 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("port", testProps.getProperty("serverPort")); + mainProps.setProperty("emailProvider", "org.cacert.gigi.email.TestEmailProvider"); + mainProps.setProperty("emailProvider.port", "8473"); + mainProps.setProperty("sql.driver", testProps.getProperty("sql.driver")); + mainProps.setProperty("sql.url", testProps.getProperty("sql.url")); + mainProps.setProperty("sql.user", testProps.getProperty("sql.user")); + mainProps.setProperty("sql.password", testProps.getProperty("sql.password")); + return mainProps; + } + @AfterClass public static void tearDownServer() { String type = testProps.getProperty("type"); + ter.destroy(); if (type.equals("local")) { return; } gigi.destroy(); + try { + SimpleSigner.stopSigner(); + } catch (InterruptedException e) { + e.printStackTrace(); + } } @After @@ -126,37 +176,44 @@ public class ManagedTest { throw new Error(e); } } + public static TestEmailReciever getMailReciever() { return ter; } + public String runRegister(String param) throws IOException { - HttpURLConnection uc = (HttpURLConnection) new URL("https://" - + getServerName() + registerService).openConnection(); + URL regist = new URL("https://" + getServerName() + registerService); + HttpURLConnection uc = (HttpURLConnection) regist.openConnection(); + HttpURLConnection csrfConn = (HttpURLConnection) regist.openConnection(); + + String headerField = csrfConn.getHeaderField("Set-Cookie"); + headerField = stripCookie(headerField); + + String csrf = getCSRF(csrfConn); + uc.addRequestProperty("Cookie", headerField); uc.setDoOutput(true); - uc.getOutputStream().write(param.getBytes()); + uc.getOutputStream().write((param + "&csrf=" + csrf).getBytes()); String d = IOUtils.readURL(uc); return d; } - public String fetchStartErrorMessage(String query) throws IOException { - String d = runRegister(query); + + public String fetchStartErrorMessage(String d) throws IOException { String formFail = "