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.URL;
+import java.net.URLConnection;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.cacert.gigi.DevelLauncher;
-import org.cacert.gigi.IOUtils;
-import org.cacert.gigi.InitTruststore;
import org.cacert.gigi.database.DatabaseConnection;
import org.cacert.gigi.testUtils.TestEmailReciever.TestMail;
import org.cacert.gigi.util.DatabaseManager;
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());
System.out.println("... starting server");
Properties mainProps = new Properties();
mainProps.setProperty("host", "127.0.0.1");
+ mainProps.setProperty("name.secure", "sec");
+ mainProps
+ .setProperty("name.www", testProps.getProperty("name.www"));
+ mainProps.setProperty("name.static", "stat");
+
mainProps.setProperty("port", testProps.getProperty("serverPort"));
mainProps.setProperty("emailProvider",
"org.cacert.gigi.email.TestEmailProvider");
byte[] keystore = Files.readAllBytes(Paths
.get("config/keystore.pkcs12"));
- DevelLauncher.writeGigiConfig(toGigi, new byte[]{},
+ 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()));
String line;
while ((line = br.readLine()) != null
&& !line.contains("Server:main: Started")) {
- System.err.println(line);
}
new Thread() {
@Override
}
}
}.start();
- System.err.println(line);
if (line == null) {
throw new Error("Server startup failed");
}
@AfterClass
public static void tearDownServer() {
String type = testProps.getProperty("type");
+ ter.destroy();
if (type.equals("local")) {
return;
}
gigi.destroy();
}
-
@After
public void removeMails() {
ter.reset();
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 = "<div class='formError'>";
int idx = d.indexOf(formFail);
assertNotEquals(-1, idx);
+ "&pword1=" + URLEncoder.encode(password, "UTF-8")
+ "&pword2=" + URLEncoder.encode(password, "UTF-8")
+ "&day=1&month=1&year=1910&cca_agree=1";
- String data = fetchStartErrorMessage(query);
+ String data = fetchStartErrorMessage(runRegister(query));
assertTrue(data, data.startsWith("</div>"));
} catch (UnsupportedEncodingException e) {
throw new Error(e);
throw new Error(e);
}
}
+ /**
+ * Creates a new user with 100 Assurance points given by an (invalid)
+ * assurance.
+ *
+ * @param firstName
+ * the first name
+ * @param lastName
+ * the last name
+ * @param email
+ * the email
+ * @param password
+ * the password
+ * @return a new userid.
+ */
public int createAssuranceUser(String firstName, String lastName,
String email, String password) {
int uid = createVerifiedUser(firstName, lastName, email, password);
- // TODO make him pass CATS and be assured for 100 points
+ try {
+ PreparedStatement ps = DatabaseConnection
+ .getInstance()
+ .prepare(
+ "INSERT INTO `cats_passed` SET `user_id`=?, `variant_id`=?");
+ ps.setInt(1, uid);
+ ps.setInt(2, 0);
+ ps.execute();
+ ps = DatabaseConnection.getInstance().prepare(
+ "INSERT INTO `notary` SET `from`=?, `to`=?, points='100'");
+ ps.setInt(1, uid);
+ ps.setInt(2, uid);
+ ps.execute();
+
+ } catch (SQLException e) {
+ throw new Error(e);
+ }
return uid;
}
static int count = 0;
public String createUniqueName() {
return "test" + System.currentTimeMillis() + "a" + (count++);
}
+ public String login(String email, String pw) throws IOException {
+ URL u = new URL("https://" + getServerName() + "/login");
+ HttpURLConnection huc = (HttpURLConnection) u.openConnection();
+ huc.setDoOutput(true);
+ OutputStream os = huc.getOutputStream();
+ String data = "username=" + URLEncoder.encode(email, "UTF-8")
+ + "&password=" + URLEncoder.encode(pw, "UTF-8");
+ os.write(data.getBytes());
+ os.flush();
+ String headerField = huc.getHeaderField("Set-Cookie");
+ headerField = headerField.substring(0, headerField.indexOf(';'));
+ return headerField;
+ }
+
+ public String getCSRF(URLConnection u) throws IOException {
+ String content = IOUtils.readURL(u);
+ Pattern p = Pattern.compile("<input type='csrf' value='([^']+)'>");
+ Matcher m = p.matcher(content);
+ if (!m.find()) {
+ throw new Error("New CSRF Token");
+ }
+ return m.group(1);
+ }
}