]> WPIA git - gigi.git/blob - tests/org/cacert/gigi/pages/main/RegisterPageTest.java
542de8b7b4503f451ffc316641fd8bf1969f9999
[gigi.git] / tests / org / cacert / gigi / pages / main / RegisterPageTest.java
1 package org.cacert.gigi.pages.main;
2
3 import static org.hamcrest.CoreMatchers.*;
4 import static org.junit.Assert.*;
5
6 import java.io.IOException;
7 import java.net.HttpURLConnection;
8 import java.net.URLEncoder;
9 import java.util.regex.Pattern;
10
11 import org.cacert.gigi.testUtils.InitTruststore;
12 import org.cacert.gigi.testUtils.ManagedTest;
13 import org.junit.Before;
14 import org.junit.Test;
15
16 public class RegisterPageTest extends ManagedTest {
17
18     static {
19         InitTruststore.run();
20         HttpURLConnection.setFollowRedirects(false);
21     }
22
23     @Before
24     public void setUp() throws Exception {}
25
26     @Test
27     public void testSuccess() throws IOException, InterruptedException {
28         long uniq = System.currentTimeMillis();
29         registerUser("ab", "b", "correct" + uniq + "@email.de", TEST_PASSWORD);
30         assertSuccessfullRegMail();
31
32         String defaultSignup = "fname=" + URLEncoder.encode("ab", "UTF-8") + "&lname=" + URLEncoder.encode("b", "UTF-8") + "&pword1=" + URLEncoder.encode(TEST_PASSWORD, "UTF-8") + "&pword2=" + URLEncoder.encode(TEST_PASSWORD, "UTF-8") + "&day=1&month=1&year=1910&tos_agree=1&mname=mn&suffix=sf&email=";
33
34         String query = defaultSignup + URLEncoder.encode("correct3_" + uniq + "@email.de", "UTF-8") + "&general=1&country=1&regional=1&radius=1";
35         String data = fetchStartErrorMessage(runRegister(query));
36         assertNull(data);
37         assertSuccessfullRegMail();
38
39         getMailReciever().setEmailCheckError("400 Greylisted");
40         getMailReciever().setApproveRegex(Pattern.compile("a"));
41         query = defaultSignup + URLEncoder.encode("correct4_" + uniq + "@email.de", "UTF-8") + "&general=1&country=1&regional=1&radius=1";
42         data = fetchStartErrorMessage(runRegister(query));
43         assertNotNull(data);
44
45         assertNull(getMailReciever().poll());
46
47     }
48
49     private void assertSuccessfullRegMail() {
50         String link = getMailReciever().receive().extractLink();
51         assertTrue(link, link.startsWith("https://"));
52     }
53
54     @Test
55     public void testNoFname() throws IOException {
56         testFailedForm("lname=b&email=e&pword1=ap&pword2=ap&day=1&month=1&year=1910&tos_agree=1");
57     }
58
59     @Test
60     public void testNoLname() throws IOException {
61         testFailedForm("fname=a&email=e&pword1=ap&pword2=ap&day=1&month=1&year=1910&tos_agree=1");
62     }
63
64     @Test
65     public void testNoEmail() throws IOException {
66         testFailedForm("fname=a&lname=b&pword1=ap&pword2=ap&day=1&month=1&year=1910&tos_agree=1");
67     }
68
69     @Test
70     public void testNoPword() throws IOException {
71         testFailedForm("fname=a&lname=b&email=e&pword2=ap&day=1&month=1&year=1910&tos_agree=1");
72     }
73
74     @Test
75     public void testDiffPword() throws IOException {
76         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap2&day=1&month=1&year=1910&tos_agree=1");
77     }
78
79     @Test
80     public void testNoDay() throws IOException {
81         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&month=1&year=1910&tos_agree=1");
82     }
83
84     @Test
85     public void testNoMonth() throws IOException {
86         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=1&year=1910&tos_agree=1");
87     }
88
89     @Test
90     public void testNoYear() throws IOException {
91         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=1&month=1&tos_agree=1");
92     }
93
94     @Test
95     public void testInvDay() throws IOException {
96         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=40&month=1&year=1910&tos_agree=1");
97         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=0&month=1&year=1910&tos_agree=1");
98         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=-1&month=1&year=1910&tos_agree=1");
99         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=a&month=1&year=1910&tos_agree=1");
100     }
101
102     @Test
103     public void testInvMonth() throws IOException {
104         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=1&month=20&year=1910&tos_agree=1");
105         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=1&month=0&year=1910&tos_agree=1");
106         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=1&month=-1&year=1910&tos_agree=1");
107         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=1&month=a&year=1910&tos_agree=1");
108     }
109
110     @Test
111     public void testInvYear() throws IOException {
112         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=1&month=1&year=0&tos_agree=1");
113         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=1&month=1&year=100&tos_agree=1");
114         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=1&month=1&year=a&tos_agree=1");
115         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=1&month=1&year=-1&tos_agree=1");
116     }
117
118     @Test
119     public void testNoAgree() throws IOException {
120         testFailedForm("fname=a&lname=b&email=e&pword1=ap&pword2=ap&day=1&month=1&year=1910&tos_agree=a");
121     }
122
123     @Test
124     public void testDataStays() throws IOException {
125         long uniq = System.currentTimeMillis();
126         String run = runRegister("fname=fn" + uniq + "&lname=ln" + uniq + "&email=ma" + uniq + "@cacert.org&pword1=pas" + uniq + "&pword2=pas2" + uniq + "&day=1&month=1&year=0");
127         assertThat(run, containsString("fn" + uniq));
128         assertThat(run, containsString("ln" + uniq));
129         assertThat(run, containsString("ma" + uniq + "@cacert.org"));
130         assertThat(run, not(containsString("pas" + uniq)));
131         assertThat(run, not(containsString("pas2" + uniq)));
132
133     }
134
135     @Test
136     public void testCheckboxesStay() throws IOException {
137         String run2 = runRegister("general=1&country=a&regional=1&radius=0");
138         assertThat(run2, containsString("name=\"general\" value=\"1\" checked=\"checked\">"));
139         assertThat(run2, containsString("name=\"country\" value=\"1\">"));
140         assertThat(run2, containsString("name=\"regional\" value=\"1\" checked=\"checked\">"));
141         assertThat(run2, containsString("name=\"radius\" value=\"1\">"));
142         run2 = runRegister("general=0&country=1&radius=1");
143         assertThat(run2, containsString("name=\"general\" value=\"1\">"));
144         assertThat(run2, containsString("name=\"country\" value=\"1\" checked=\"checked\">"));
145         assertThat(run2, containsString("name=\"regional\" value=\"1\">"));
146         assertThat(run2, containsString("name=\"radius\" value=\"1\" checked=\"checked\">"));
147     }
148
149     @Test
150     public void testDoubleMail() throws IOException {
151         long uniq = System.currentTimeMillis();
152         registerUser("RegisterTest", "User", "testmail" + uniq + "@cacert.org", TEST_PASSWORD);
153         try {
154             registerUser("RegisterTest", "User", "testmail" + uniq + "@cacert.org", TEST_PASSWORD);
155             throw new Error("Registering a user with the same email needs to fail.");
156         } catch (AssertionError e) {
157
158         }
159     }
160
161     @Test
162     public void testInvalidMailbox() {
163         getMailReciever().setApproveRegex(Pattern.compile("a"));
164         long uniq = System.currentTimeMillis();
165         try {
166             registerUser("RegisterTest", "User", "testInvalidMailbox" + uniq + "@cacert.org", TEST_PASSWORD);
167             throw new Error("Registering a user with invalid mailbox must fail.");
168         } catch (AssertionError e) {
169
170         }
171     }
172
173     private void testFailedForm(String query) throws IOException {
174         String startError = fetchStartErrorMessage(runRegister(query));
175         assertTrue(startError, !startError.startsWith("</div>"));
176     }
177
178 }