X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=tests%2Forg%2Fcacert%2Fgigi%2Fpages%2Fwot%2FTestAssurance.java;h=94f194a3a7bd7aa1a330e30c1f67e8e4b86d6fd5;hb=943d8e7ed0ea5a9d56e7e694a3cbd849c52bad16;hp=54a85d8bd964b34321a20a87601e251ed212fa72;hpb=2a294360b047d456e07ff9584e654bbe417cd209;p=gigi.git diff --git a/tests/org/cacert/gigi/pages/wot/TestAssurance.java b/tests/org/cacert/gigi/pages/wot/TestAssurance.java index 54a85d8b..94f194a3 100644 --- a/tests/org/cacert/gigi/pages/wot/TestAssurance.java +++ b/tests/org/cacert/gigi/pages/wot/TestAssurance.java @@ -2,6 +2,7 @@ package org.cacert.gigi.pages.wot; import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; @@ -20,132 +21,153 @@ import org.junit.Test; import static org.junit.Assert.*; public class TestAssurance extends ManagedTest { - private String assurerM; - private String assureeM; - private int assurer; - private int assuree; - private String cookie; - @Before - public void setup() throws IOException { - assurerM = createUniqueName() + "@cacert-test.org"; - assureeM = createUniqueName() + "@cacert-test.org"; - assurer = createAssuranceUser("a", "b", assurerM, "xvXV.1"); - assuree = createAssuranceUser("a", "c", assureeM, "xvXV.1"); - cookie = login(assurerM, "xvXV.1"); - - } - @Test - public void testAssureSearch() throws IOException { - String loc = search("email=" + URLEncoder.encode(assureeM, "UTF-8") - + "&day=1&month=1&year=1910"); - assertTrue(loc, loc.endsWith(AssurePage.PATH + "/" + assuree)); - } - - @Test - public void testAssureSearchEmail() throws IOException { - String loc = search("email=1" + URLEncoder.encode(assureeM, "UTF-8") - + "&day=1&month=1&year=1910"); - assertNull(loc); - } - @Test - public void testAssureSearchDob() throws IOException { - String loc = search("email=" + URLEncoder.encode(assureeM, "UTF-8") - + "&day=2&month=1&year=1910"); - assertNull(loc); - loc = search("email=" + URLEncoder.encode(assureeM, "UTF-8") - + "&day=1&month=2&year=1910"); - assertNull(loc); - loc = search("email=" + URLEncoder.encode(assureeM, "UTF-8") - + "&day=1&month=1&year=1911"); - assertNull(loc); - } - private String search(String query) throws MalformedURLException, - IOException, UnsupportedEncodingException { - URL u = new URL("https://" + getServerName() + AssurePage.PATH); - URLConnection uc = u.openConnection(); - uc.setDoOutput(true); - uc.addRequestProperty("Cookie", cookie); - uc.getOutputStream().write((query).getBytes()); - uc.getOutputStream().flush(); - - String loc = uc.getHeaderField("Location"); - return loc; - } - @Test - public void testAssureForm() throws IOException { - String error = getError("date=2000-01-01&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10"); - assertTrue(error, error.startsWith("")); - } - - @Test - public void testAssureFormRace() throws IOException, SQLException { - URLConnection uc = buildupAssureFormConnection(); - PreparedStatement ps = DatabaseConnection.getInstance().prepare( - "UPDATE `users` SET email='changed' WHERE id=?"); - ps.setInt(1, assuree); - ps.execute(); - uc.getOutputStream() - .write(("date=2000-01-01&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10") - .getBytes()); - uc.getOutputStream().flush(); - String error = fetchStartErrorMessage(IOUtils.readURL(uc)); - assertTrue(error, !error.startsWith("")); - } - @Test - public void testAssureFormFuture() throws IOException { - SimpleDateFormat sdf = new SimpleDateFormat("YYYY"); - int year = Integer.parseInt(sdf.format(new Date(System - .currentTimeMillis()))) + 2; - String error = getError("date=" - + year - + "-01-01&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10"); - assertTrue(error, !error.startsWith("")); - } - @Test - public void testAssureFormNoLoc() throws IOException { - String error = getError("date=2000-01-01&location=a&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10"); - assertTrue(error, !error.startsWith("")); - error = getError("date=2000-01-01&location=&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10"); - assertTrue(error, !error.startsWith("")); - } - - @Test - public void testAssureFormInvalDate() throws IOException { - String error = getError("date=20000101&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10"); - assertTrue(error, !error.startsWith("")); - error = getError("date=&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10"); - assertTrue(error, !error.startsWith("")); - } - @Test - public void testAssureFormBoxes() throws IOException { - String error = getError("date=2000-01-01&location=testcase&certify=0&rules=1&CCAAgreed=1&assertion=1&points=10"); - assertTrue(error, !error.startsWith("")); - error = getError("date=2000-01-01&location=testcase&certify=1&rules=&CCAAgreed=1&assertion=1&points=10"); - assertTrue(error, !error.startsWith("")); - error = getError("date=2000-01-01&location=testcase&certify=1&rules=1&CCAAgreed=a&assertion=1&points=10"); - assertTrue(error, !error.startsWith("")); - error = getError("date=2000-01-01&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=z&points=10"); - assertTrue(error, !error.startsWith("")); - } - private String getError(String query) throws MalformedURLException, - IOException { - URLConnection uc = buildupAssureFormConnection(); - uc.getOutputStream().write((query).getBytes()); - uc.getOutputStream().flush(); - String error = fetchStartErrorMessage(IOUtils.readURL(uc)); - return error; - } - private URLConnection buildupAssureFormConnection() - throws MalformedURLException, IOException { - URL u = new URL("https://" + getServerName() + AssurePage.PATH + "/" - + assuree); - URLConnection uc = u.openConnection(); - uc.addRequestProperty("Cookie", cookie); - uc.getInputStream();// request form - uc = u.openConnection(); - uc.addRequestProperty("Cookie", cookie); - uc.setDoOutput(true); - return uc; - } + + private String assurerM; + + private String assureeM; + + private int assurer; + + private int assuree; + + private String cookie; + + @Before + public void setup() throws IOException { + assurerM = createUniqueName() + "@cacert-test.org"; + assureeM = createUniqueName() + "@cacert-test.org"; + assurer = createAssuranceUser("a", "b", assurerM, TEST_PASSWORD); + assuree = createAssuranceUser("a", "c", assureeM, TEST_PASSWORD); + cookie = login(assurerM, TEST_PASSWORD); + + } + + @Test + public void testAssureSearch() throws IOException { + String loc = search("email=" + URLEncoder.encode(assureeM, "UTF-8") + "&day=1&month=1&year=1910"); + assertTrue(loc, loc.endsWith(AssurePage.PATH + "/" + assuree)); + } + + @Test + public void testAssureSearchEmail() throws IOException { + String loc = search("email=1" + URLEncoder.encode(assureeM, "UTF-8") + "&day=1&month=1&year=1910"); + assertNull(loc); + } + + @Test + public void testAssureSearchDob() throws IOException { + String loc = search("email=" + URLEncoder.encode(assureeM, "UTF-8") + "&day=2&month=1&year=1910"); + assertNull(loc); + loc = search("email=" + URLEncoder.encode(assureeM, "UTF-8") + "&day=1&month=2&year=1910"); + assertNull(loc); + loc = search("email=" + URLEncoder.encode(assureeM, "UTF-8") + "&day=1&month=1&year=1911"); + assertNull(loc); + } + + private String search(String query) throws MalformedURLException, IOException, UnsupportedEncodingException { + URL u = new URL("https://" + getServerName() + AssurePage.PATH); + URLConnection uc = u.openConnection(); + uc.setDoOutput(true); + uc.addRequestProperty("Cookie", cookie); + uc.getOutputStream().write((query).getBytes()); + uc.getOutputStream().flush(); + + String loc = uc.getHeaderField("Location"); + return loc; + } + + @Test + public void testAssureForm() throws IOException { + String error = getError("date=2000-01-01&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10"); + assertTrue(error, error.startsWith("")); + } + + @Test + public void testAssureFormNoCSRF() throws IOException { + // override csrf + HttpURLConnection uc = (HttpURLConnection) buildupAssureFormConnection(false); + uc.getOutputStream().write(("date=2000-01-01&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10").getBytes()); + uc.getOutputStream().flush(); + assertEquals(500, uc.getResponseCode()); + } + + @Test + public void testAssureFormWrongCSRF() throws IOException { + // override csrf + HttpURLConnection uc = (HttpURLConnection) buildupAssureFormConnection(false); + uc.getOutputStream().write(("date=2000-01-01&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10&csrf=aragc").getBytes()); + uc.getOutputStream().flush(); + assertEquals(500, uc.getResponseCode()); + } + + @Test + public void testAssureFormRace() throws IOException, SQLException { + URLConnection uc = buildupAssureFormConnection(true); + PreparedStatement ps = DatabaseConnection.getInstance().prepare("UPDATE `users` SET email='changed' WHERE id=?"); + ps.setInt(1, assuree); + ps.execute(); + uc.getOutputStream().write(("date=2000-01-01&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10").getBytes()); + uc.getOutputStream().flush(); + String error = fetchStartErrorMessage(IOUtils.readURL(uc)); + assertTrue(error, !error.startsWith("")); + } + + @Test + public void testAssureFormFuture() throws IOException { + SimpleDateFormat sdf = new SimpleDateFormat("YYYY"); + int year = Integer.parseInt(sdf.format(new Date(System.currentTimeMillis()))) + 2; + String error = getError("date=" + year + "-01-01&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10"); + assertTrue(error, !error.startsWith("")); + } + + @Test + public void testAssureFormNoLoc() throws IOException { + String error = getError("date=2000-01-01&location=a&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10"); + assertTrue(error, !error.startsWith("")); + error = getError("date=2000-01-01&location=&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10"); + assertTrue(error, !error.startsWith("")); + } + + @Test + public void testAssureFormInvalDate() throws IOException { + String error = getError("date=20000101&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10"); + assertTrue(error, !error.startsWith("")); + error = getError("date=&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10"); + assertTrue(error, !error.startsWith("")); + } + + @Test + public void testAssureFormBoxes() throws IOException { + String error = getError("date=2000-01-01&location=testcase&certify=0&rules=1&CCAAgreed=1&assertion=1&points=10"); + assertTrue(error, !error.startsWith("")); + error = getError("date=2000-01-01&location=testcase&certify=1&rules=&CCAAgreed=1&assertion=1&points=10"); + assertTrue(error, !error.startsWith("")); + error = getError("date=2000-01-01&location=testcase&certify=1&rules=1&CCAAgreed=a&assertion=1&points=10"); + assertTrue(error, !error.startsWith("")); + error = getError("date=2000-01-01&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=z&points=10"); + assertTrue(error, !error.startsWith("")); + } + + private String getError(String query) throws MalformedURLException, IOException { + URLConnection uc = buildupAssureFormConnection(true); + uc.getOutputStream().write((query).getBytes()); + uc.getOutputStream().flush(); + String error = fetchStartErrorMessage(IOUtils.readURL(uc)); + return error; + } + + private URLConnection buildupAssureFormConnection(boolean doCSRF) throws MalformedURLException, IOException { + URL u = new URL("https://" + getServerName() + AssurePage.PATH + "/" + assuree); + URLConnection uc = u.openConnection(); + uc.addRequestProperty("Cookie", cookie); + String csrf = getCSRF(uc); + uc = u.openConnection(); + uc.addRequestProperty("Cookie", cookie); + uc.setDoOutput(true); + if (doCSRF) { + uc.getOutputStream().write(("csrf=" + csrf + "&").getBytes()); + } + return uc; + } }