1 package org.cacert.gigi.pages.admin;
3 import static org.hamcrest.CoreMatchers.*;
4 import static org.junit.Assert.*;
6 import java.io.IOException;
7 import java.io.UnsupportedEncodingException;
8 import java.net.MalformedURLException;
9 import java.net.URLConnection;
10 import java.net.URLEncoder;
12 import org.cacert.gigi.GigiApiException;
13 import org.cacert.gigi.dbObjects.Group;
14 import org.cacert.gigi.dbObjects.User;
15 import org.cacert.gigi.pages.admin.support.FindUserByEmailPage;
16 import org.cacert.gigi.pages.admin.support.SupportEnterTicketPage;
17 import org.cacert.gigi.pages.admin.support.SupportUserDetailsPage;
18 import org.cacert.gigi.testUtils.ClientTest;
19 import org.cacert.gigi.testUtils.IOUtils;
20 import org.cacert.gigi.util.ServerConstants;
21 import org.junit.Test;
23 public class TestSEAdminPageUserMailSearch extends ClientTest {
25 public TestSEAdminPageUserMailSearch() throws IOException, GigiApiException {
26 grant(u, Group.SUPPORTER);
27 cookie = login(email, TEST_PASSWORD);
28 assertEquals(302, post(cookie, SupportEnterTicketPage.PATH, "ticketno=a20140808.8&setTicket=action", 0).getResponseCode());
32 public void testFulltextMailSearch() throws MalformedURLException, UnsupportedEncodingException, IOException {
33 String mail = createUniqueName() + "@example.com";
34 int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD);
36 URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode(mail, "UTF-8"), 0);
37 assertEquals("https://" + ServerConstants.getWwwHostNamePortSecure() + SupportUserDetailsPage.PATH + id + "/", uc.getHeaderField("Location"));
41 public void testWildcardMailSearchSingle() throws MalformedURLException, UnsupportedEncodingException, IOException {
42 String mail = createUniqueName() + "@example.tld";
43 int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD);
45 URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@example.tld", "UTF-8"), 0);
46 assertEquals("https://" + ServerConstants.getWwwHostNamePortSecure() + SupportUserDetailsPage.PATH + id + "/", uc.getHeaderField("Location"));
50 public void testWildcardMailSearchMultiple() throws MalformedURLException, UnsupportedEncodingException, IOException {
51 String mail = createUniqueName() + "@example.org";
52 int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD);
53 String mail2 = createUniqueName() + "@example.org";
54 int id2 = createVerifiedUser("Först", "Secönd", mail2, TEST_PASSWORD);
55 URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@example.org", "UTF-8"), 0);
57 String res = IOUtils.readURL(uc);
58 assertThat(res, containsString(SupportUserDetailsPage.PATH + id + "/"));
59 assertThat(res, containsString(SupportUserDetailsPage.PATH + id2 + "/"));
63 public void testWildcardMailSearchSingleChar() throws MalformedURLException, UnsupportedEncodingException, IOException {
64 String mail = createUniqueName() + "@example.org";
65 int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD);
66 String mail2 = createUniqueName() + "@fxample.org";
67 int id2 = createVerifiedUser("Först", "Secönd", mail2, TEST_PASSWORD);
69 URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@_xample.org", "UTF-8"), 0);
71 String res = IOUtils.readURL(uc);
72 assertThat(res, containsString(SupportUserDetailsPage.PATH + id + "/"));
73 assertThat(res, containsString(SupportUserDetailsPage.PATH + id2 + "/"));
77 public void testWildcardMailSearchNoRes() throws MalformedURLException, UnsupportedEncodingException, IOException {
78 URLConnection uc = post(FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@_humpfelkumpf.org", "UTF-8"));
79 assertNotNull(fetchStartErrorMessage(IOUtils.readURL(uc)));
83 public void testFulltextMailSearchNoRes() throws MalformedURLException, UnsupportedEncodingException, IOException {
84 URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode(createUniqueName() + "@example.org", "UTF-8"), 0);
86 assertNotNull(fetchStartErrorMessage(IOUtils.readURL(uc)));
90 public void testSearchSecondEmailAddress() throws MalformedURLException, UnsupportedEncodingException, IOException, InterruptedException, GigiApiException {
91 String mail = createUniqueName() + "@example1.org";
92 int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD);
93 User testuser = User.getById(id);
94 String mail2 = createUniqueName() + "@example1.org";
95 createVerifiedEmail(testuser, mail2);
97 URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode(mail2, "UTF-8"), 0);
98 assertEquals("https://" + ServerConstants.getWwwHostNamePortSecure() + SupportUserDetailsPage.PATH + id + "/", uc.getHeaderField("Location"));
102 public void testWildcardMailSearchSecondEmailAddress() throws MalformedURLException, UnsupportedEncodingException, IOException, InterruptedException, GigiApiException {
104 String mail = createUniqueName() + "@example2.org";
105 int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD);
106 User testuser = User.getById(id);
107 String mail2 = createUniqueName() + "@example2.org";
108 createVerifiedEmail(testuser, mail2);
110 URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@example2.org", "UTF-8"), 0);
112 String res = IOUtils.readURL(uc);
113 assertThat(res, containsString(mail));
114 assertThat(res, containsString(mail2));
118 public void testWildcardMailSearchMultipleEmailAddressOneAccount() throws MalformedURLException, UnsupportedEncodingException, IOException, InterruptedException, GigiApiException {
120 String mail = createUniqueName() + "@example3.org";
121 int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD);
122 User testuser = User.getById(id);
123 String mail2 = createUniqueName() + "@test3.org";
124 createVerifiedEmail(testuser, mail2);
125 String mail3 = createUniqueName() + "@test3.org";
126 createVerifiedEmail(testuser, mail3);
128 URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@example3.org", "UTF-8"), 0);
129 assertEquals("https://" + ServerConstants.getWwwHostNamePortSecure() + SupportUserDetailsPage.PATH + id + "/", uc.getHeaderField("Location"));
131 uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@test3.org", "UTF-8"), 0);
133 String res = IOUtils.readURL(uc);
134 assertThat(res, not(containsString(mail)));
135 assertThat(res, containsString(mail2));
136 assertThat(res, containsString(mail3));
140 public void testWildcardMailSearchMultipleEmailAddressMultipleAccounts() throws MalformedURLException, UnsupportedEncodingException, IOException, InterruptedException, GigiApiException {
141 String mail = createUniqueName() + "1@example4.org";
142 int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD);
143 User testuser = User.getById(id);
144 String mail2 = createUniqueName() + "@test4.org";
145 createVerifiedEmail(testuser, mail2);
147 String mail3 = createUniqueName() + "2@example4.org";
148 int id2 = createVerifiedUser("Först", "Secönd", mail3, TEST_PASSWORD);
149 User testuser2 = User.getById(id2);
150 String mail4 = createUniqueName() + "@test4.org";
151 createVerifiedEmail(testuser2, mail4);
153 URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@example4.org", "UTF-8"), 0);
155 String res = IOUtils.readURL(uc);
156 assertThat(res, containsString(mail));
157 assertThat(res, not(containsString(mail2)));
158 assertThat(res, containsString(mail3));
159 assertThat(res, not(containsString(mail4)));
161 uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@test4.org", "UTF-8"), 0);
163 res = IOUtils.readURL(uc);
164 assertThat(res, not(containsString(mail)));
165 assertThat(res, containsString(mail2));
166 assertThat(res, not(containsString(mail3)));
167 assertThat(res, containsString(mail4));