From: Felix Dörre Date: Sat, 14 Nov 2015 15:18:47 +0000 (+0100) Subject: add: external test for password reset X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=ef6c1c7fe9290cfefb355a6c0d4794ab220c4619 add: external test for password reset --- diff --git a/tests/org/cacert/gigi/pages/account/TestPasswordResetExternal.java b/tests/org/cacert/gigi/pages/account/TestPasswordResetExternal.java new file mode 100644 index 00000000..8acef6b2 --- /dev/null +++ b/tests/org/cacert/gigi/pages/account/TestPasswordResetExternal.java @@ -0,0 +1,58 @@ +package org.cacert.gigi.pages.account; + +import static org.junit.Assert.*; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLEncoder; + +import org.cacert.gigi.dbObjects.User; +import org.cacert.gigi.pages.wot.TestAssurance; +import org.cacert.gigi.testUtils.ClientTest; +import org.cacert.gigi.testUtils.IOUtils; +import org.cacert.gigi.testUtils.TestEmailReceiver.TestMail; +import org.cacert.gigi.util.RandomToken; +import org.junit.Test; + +public class TestPasswordResetExternal extends ClientTest { + + @Test + public void testByAssurance() throws IOException { + User u = User.getById(createAssuranceUser("fn", "ln", createUniqueName() + "@example.com", TEST_PASSWORD)); + String cookie2 = login(u.getEmail(), TEST_PASSWORD); + URLConnection uc = TestAssurance.buildupAssureFormConnection(cookie2, email, true); + String avalue = RandomToken.generateToken(32); + uc.getOutputStream().write(("date=1910-01-01&location=testcase&certify=1&rules=1&CCAAgreed=1&assertion=1&points=10&passwordReset=1&passwordResetValue=" + URLEncoder.encode(avalue, "UTF-8")).getBytes("UTF-8")); + uc.getOutputStream().flush(); + String error = fetchStartErrorMessage(IOUtils.readURL(uc)); + assertNull(error); + + TestMail mail = getMailReciever().receive(); + System.out.println(mail.getMessage()); + String link = mail.extractLink(); + String npw = TEST_PASSWORD + "'"; + assertNotNull(toPasswordReset(avalue, link, npw, npw + "'")); + assertNotNull(toPasswordReset(avalue + "'", link, npw, npw)); + assertNotNull(toPasswordReset(avalue, link, "a", "a")); + assertNull(toPasswordReset(avalue, link, npw, npw)); + assertNotNull(login(email, npw)); + } + + private String toPasswordReset(String avalue, String link, String npw, String npw2) throws IOException, MalformedURLException, UnsupportedEncodingException { + URLConnection uc2 = new URL(link).openConnection(); + String csrf = getCSRF(uc2); + String headerField = uc2.getHeaderField("Set-Cookie"); + assertNotNull(headerField); + String cookie3 = stripCookie(headerField); + uc2 = new URL(link).openConnection(); + cookie(uc2, cookie3); + uc2.setDoOutput(true); + OutputStream o = uc2.getOutputStream(); + o.write(("csrf=" + csrf + "&pword1=" + URLEncoder.encode(npw, "UTF-8") + "&pword2=" + URLEncoder.encode(npw2, "UTF-8") + "&private_token=" + URLEncoder.encode(avalue, "UTF-8")).getBytes("UTF-8")); + return fetchStartErrorMessage(IOUtils.readURL(uc2)); + } +} diff --git a/tests/org/cacert/gigi/pages/wot/TestAssurance.java b/tests/org/cacert/gigi/pages/wot/TestAssurance.java index b6396a17..58a791f3 100644 --- a/tests/org/cacert/gigi/pages/wot/TestAssurance.java +++ b/tests/org/cacert/gigi/pages/wot/TestAssurance.java @@ -215,11 +215,15 @@ public class TestAssurance extends ManagedTest { } private URLConnection buildupAssureFormConnection(boolean doCSRF) throws MalformedURLException, IOException { + return buildupAssureFormConnection(cookie, assureeM, doCSRF); + } + + public static URLConnection buildupAssureFormConnection(String cookie, String email, boolean doCSRF) throws MalformedURLException, IOException { URL u = new URL("https://" + getServerName() + AssurePage.PATH); URLConnection uc = u.openConnection(); uc.addRequestProperty("Cookie", cookie); uc.setDoOutput(true); - uc.getOutputStream().write(("email=" + URLEncoder.encode(assureeM, "UTF-8") + "&day=1&month=1&year=1910&search").getBytes("UTF-8")); + uc.getOutputStream().write(("email=" + URLEncoder.encode(email, "UTF-8") + "&day=1&month=1&year=1910&search").getBytes("UTF-8")); String csrf = getCSRF(uc); uc = u.openConnection(); diff --git a/tests/org/cacert/gigi/testUtils/ManagedTest.java b/tests/org/cacert/gigi/testUtils/ManagedTest.java index 0ae9f9a7..bd35e821 100644 --- a/tests/org/cacert/gigi/testUtils/ManagedTest.java +++ b/tests/org/cacert/gigi/testUtils/ManagedTest.java @@ -330,7 +330,7 @@ public class ManagedTest extends ConfiguredTest { ps2.execute(); } - static String stripCookie(String headerField) { + protected static String stripCookie(String headerField) { return headerField.substring(0, headerField.indexOf(';')); }