From: Felix Dörre Date: Thu, 4 Aug 2016 19:30:24 +0000 (+0200) Subject: Merge "upd: fixes wording" X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=7243641e3fc1ded767f1070a7300a099ad98ecad;hp=15c3594cf26458503691dc1993bdd6b414cf83c6 Merge "upd: fixes wording" --- diff --git a/src/org/cacert/gigi/Gigi.java b/src/org/cacert/gigi/Gigi.java index 812f61fb..9e111ae7 100644 --- a/src/org/cacert/gigi/Gigi.java +++ b/src/org/cacert/gigi/Gigi.java @@ -58,8 +58,8 @@ import org.cacert.gigi.pages.account.certs.Certificates; import org.cacert.gigi.pages.account.domain.DomainOverview; import org.cacert.gigi.pages.account.mail.MailOverview; import org.cacert.gigi.pages.admin.TTPAdminPage; -import org.cacert.gigi.pages.admin.support.FindDomainPage; -import org.cacert.gigi.pages.admin.support.FindUserPage; +import org.cacert.gigi.pages.admin.support.FindUserByDomainPage; +import org.cacert.gigi.pages.admin.support.FindUserByEmailPage; import org.cacert.gigi.pages.admin.support.SupportEnterTicketPage; import org.cacert.gigi.pages.admin.support.SupportUserDetailsPage; import org.cacert.gigi.pages.error.AccessDenied; @@ -153,8 +153,8 @@ public final class Gigi extends HttpServlet { putPage(ViewOrgPage.DEFAULT_PATH + "/*", new ViewOrgPage(), "Organisation Admin"); putPage(SupportEnterTicketPage.PATH, new SupportEnterTicketPage(), "Support Console"); - putPage(FindUserPage.PATH, new FindUserPage(), "Support Console"); - putPage(FindDomainPage.PATH, new FindDomainPage(), "Support Console"); + putPage(FindUserByEmailPage.PATH, new FindUserByEmailPage(), "Support Console"); + putPage(FindUserByDomainPage.PATH, new FindUserByDomainPage(), "Support Console"); putPage(SupportUserDetailsPage.PATH + "*", new SupportUserDetailsPage(), null); putPage(ChangePasswordPage.PATH, new ChangePasswordPage(), "My Account"); diff --git a/src/org/cacert/gigi/dbObjects/EmailAddress.java b/src/org/cacert/gigi/dbObjects/EmailAddress.java index 964d1b68..a3208165 100644 --- a/src/org/cacert/gigi/dbObjects/EmailAddress.java +++ b/src/org/cacert/gigi/dbObjects/EmailAddress.java @@ -2,6 +2,7 @@ package org.cacert.gigi.dbObjects; import java.io.IOException; import java.util.Date; +import java.util.LinkedList; import java.util.Locale; import org.cacert.gigi.GigiApiException; @@ -149,4 +150,20 @@ public class EmailAddress implements IdCachable, Verifyable { } return em; } + + public User getOwner() { + return owner; + } + + public static EmailAddress[] findByAllEmail(String mail) { + LinkedList results = new LinkedList(); + try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT `emails`.`id` FROM `emails` INNER JOIN `users` ON `users`.`id` = `emails`.`memid` INNER JOIN `certOwners` ON `certOwners`.`id` = `users`.`id` WHERE `emails`.`email` LIKE ? AND `emails`.`deleted` IS NULL AND `certOwners`.`deleted` IS NULL ORDER BY `users`.`id`, `emails`.`email` LIMIT 100")) { + ps.setString(1, mail); + GigiResultSet rs = ps.executeQuery(); + while (rs.next()) { + results.add(EmailAddress.getById(rs.getInt(1))); + } + return results.toArray(new EmailAddress[results.size()]); + } + } } diff --git a/src/org/cacert/gigi/localisation/Language.java b/src/org/cacert/gigi/localisation/Language.java index 95971120..4caaa79b 100644 --- a/src/org/cacert/gigi/localisation/Language.java +++ b/src/org/cacert/gigi/localisation/Language.java @@ -99,6 +99,9 @@ public class Language { } public String getTranslation(String text) { + if (text == null || text.equals("")) { + return text; + } String string = translations.get(text); if (string == null || string.equals("")) { return text; diff --git a/src/org/cacert/gigi/output/AssurancesDisplay.java b/src/org/cacert/gigi/output/AssurancesDisplay.java index 595872ac..8f0e6cab 100644 --- a/src/org/cacert/gigi/output/AssurancesDisplay.java +++ b/src/org/cacert/gigi/output/AssurancesDisplay.java @@ -4,6 +4,7 @@ import java.io.PrintWriter; import java.util.Map; import org.cacert.gigi.dbObjects.Assurance; +import org.cacert.gigi.dbObjects.Name; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.template.IterableDataset; import org.cacert.gigi.output.template.Outputable; @@ -44,12 +45,13 @@ public class AssurancesDisplay implements Outputable { Assurance assurance = assurances[i]; vars.put("id", assurance.getId()); vars.put("method", assurance.getMethod()); + Name to = assurance.getTo(); if (assurer) { - vars.put("verbVal", assurance.getTo().getOwner().getId()); - vars.put("myName", assurance.getTo()); + vars.put("verbVal", to == null ? l.getTranslation("applicant's name removed") : to.getOwner().getId()); + vars.put("myName", to == null ? l.getTranslation("applicant's name removed") : to); } else { vars.put("verbVal", assurance.getFrom().getPreferredName()); - vars.put("myName", assurance.getTo()); + vars.put("myName", to == null ? l.getTranslation("own name removed") : to); } vars.put("date", assurance.getDate()); vars.put("location", assurance.getLocation()); diff --git a/src/org/cacert/gigi/pages/admin/support/FindDomainForm.java b/src/org/cacert/gigi/pages/admin/support/FindUserByDomainForm.java similarity index 87% rename from src/org/cacert/gigi/pages/admin/support/FindDomainForm.java rename to src/org/cacert/gigi/pages/admin/support/FindUserByDomainForm.java index 93c4b0c1..779b0026 100644 --- a/src/org/cacert/gigi/pages/admin/support/FindDomainForm.java +++ b/src/org/cacert/gigi/pages/admin/support/FindUserByDomainForm.java @@ -13,13 +13,13 @@ import org.cacert.gigi.output.template.Form; import org.cacert.gigi.output.template.SprintfCommand; import org.cacert.gigi.output.template.Template; -public class FindDomainForm extends Form { +public class FindUserByDomainForm extends Form { private CertificateOwner res = null; - private static final Template t = new Template(FindDomainForm.class.getResource("FindDomainForm.templ")); + private static final Template t = new Template(FindUserByDomainForm.class.getResource("FindUserByDomainForm.templ")); - public FindDomainForm(HttpServletRequest hsr) { + public FindUserByDomainForm(HttpServletRequest hsr) { super(hsr); } diff --git a/src/org/cacert/gigi/pages/admin/support/FindDomainForm.templ b/src/org/cacert/gigi/pages/admin/support/FindUserByDomainForm.templ similarity index 100% rename from src/org/cacert/gigi/pages/admin/support/FindDomainForm.templ rename to src/org/cacert/gigi/pages/admin/support/FindUserByDomainForm.templ diff --git a/src/org/cacert/gigi/pages/admin/support/FindDomainPage.java b/src/org/cacert/gigi/pages/admin/support/FindUserByDomainPage.java similarity index 79% rename from src/org/cacert/gigi/pages/admin/support/FindDomainPage.java rename to src/org/cacert/gigi/pages/admin/support/FindUserByDomainPage.java index 06d41621..ee5192b0 100644 --- a/src/org/cacert/gigi/pages/admin/support/FindDomainPage.java +++ b/src/org/cacert/gigi/pages/admin/support/FindUserByDomainPage.java @@ -7,17 +7,17 @@ import org.cacert.gigi.output.template.Form; import org.cacert.gigi.pages.OneFormPage; import org.cacert.gigi.util.AuthorizationContext; -public class FindDomainPage extends OneFormPage { +public class FindUserByDomainPage extends OneFormPage { public static final String PATH = "/support/find/domain"; - public FindDomainPage() { - super("Find Domain", FindDomainForm.class); + public FindUserByDomainPage() { + super("Find Domain", FindUserByDomainForm.class); } @Override public String getSuccessPath(Form f) { - CertificateOwner res = ((FindDomainForm) f).getRes(); + CertificateOwner res = ((FindUserByDomainForm) f).getRes(); if (res instanceof User) { return SupportUserDetailsPage.PATH + res.getId(); } else if (res instanceof Organisation) { diff --git a/src/org/cacert/gigi/pages/admin/support/FindUserForm.java b/src/org/cacert/gigi/pages/admin/support/FindUserByEmailForm.java similarity index 61% rename from src/org/cacert/gigi/pages/admin/support/FindUserForm.java rename to src/org/cacert/gigi/pages/admin/support/FindUserByEmailForm.java index 3a7bf07c..12c33e97 100644 --- a/src/org/cacert/gigi/pages/admin/support/FindUserForm.java +++ b/src/org/cacert/gigi/pages/admin/support/FindUserByEmailForm.java @@ -6,29 +6,29 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.cacert.gigi.GigiApiException; -import org.cacert.gigi.dbObjects.User; +import org.cacert.gigi.dbObjects.EmailAddress; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.template.Form; import org.cacert.gigi.output.template.SprintfCommand; import org.cacert.gigi.output.template.Template; -public class FindUserForm extends Form { +public class FindUserByEmailForm extends Form { - private User users[]; + private EmailAddress emails[]; - private static final Template t = new Template(FindDomainForm.class.getResource("FindUserForm.templ")); + private static final Template t = new Template(FindUserByDomainForm.class.getResource("FindUserByEmailForm.templ")); - public FindUserForm(HttpServletRequest hsr) { + public FindUserByEmailForm(HttpServletRequest hsr) { super(hsr); } @Override public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { - User[] users = User.findByEmail(req.getParameter("email")); - if (users.length == 0) { + EmailAddress[] emails = EmailAddress.findByAllEmail(req.getParameter("email")); + if (emails.length == 0) { throw new GigiApiException(SprintfCommand.createSimple("No users found matching {0}", req.getParameter("email"))); } - this.users = users; + this.emails = emails; return true; } @@ -37,8 +37,8 @@ public class FindUserForm extends Form { t.output(out, l, vars); } - public User[] getUsers() { - return users; + public EmailAddress[] getEmails() { + return emails; } } diff --git a/src/org/cacert/gigi/pages/admin/support/FindUserForm.templ b/src/org/cacert/gigi/pages/admin/support/FindUserByEmailForm.templ similarity index 93% rename from src/org/cacert/gigi/pages/admin/support/FindUserForm.templ rename to src/org/cacert/gigi/pages/admin/support/FindUserByEmailForm.templ index 01682243..0461bc39 100644 --- a/src/org/cacert/gigi/pages/admin/support/FindUserForm.templ +++ b/src/org/cacert/gigi/pages/admin/support/FindUserByEmailForm.templ @@ -11,7 +11,7 @@ - + diff --git a/src/org/cacert/gigi/pages/admin/support/FindUserPage.java b/src/org/cacert/gigi/pages/admin/support/FindUserByEmailPage.java similarity index 71% rename from src/org/cacert/gigi/pages/admin/support/FindUserPage.java rename to src/org/cacert/gigi/pages/admin/support/FindUserByEmailPage.java index 059298f8..42d9e8d0 100644 --- a/src/org/cacert/gigi/pages/admin/support/FindUserPage.java +++ b/src/org/cacert/gigi/pages/admin/support/FindUserByEmailPage.java @@ -8,36 +8,36 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.cacert.gigi.GigiApiException; -import org.cacert.gigi.dbObjects.User; +import org.cacert.gigi.dbObjects.EmailAddress; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.template.Form; import org.cacert.gigi.output.template.IterableDataset; import org.cacert.gigi.pages.Page; import org.cacert.gigi.util.AuthorizationContext; -public class FindUserPage extends Page { +public class FindUserByEmailPage extends Page { - public static final String PATH = "/support/find/user"; + public static final String PATH = "/support/find/email"; - public FindUserPage() { - super("Find User"); + public FindUserByEmailPage() { + super("Find Email"); } @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { HashMap vars = new HashMap(); vars.put("first", true); - new FindUserForm(req).output(resp.getWriter(), Page.getLanguage(req), vars); + new FindUserByEmailForm(req).output(resp.getWriter(), Page.getLanguage(req), vars); } @Override public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { - FindUserForm form = Form.getForm(req, FindUserForm.class); + FindUserByEmailForm form = Form.getForm(req, FindUserByEmailForm.class); try { form.submit(resp.getWriter(), req); - final User[] users = form.getUsers(); - if (users.length == 1) { - resp.sendRedirect(SupportUserDetailsPage.PATH + users[0].getId()); + final EmailAddress[] emails = form.getEmails(); + if (emails.length == 1) { + resp.sendRedirect(SupportUserDetailsPage.PATH + emails[0].getOwner().getId()); } else { HashMap vars = new HashMap(); vars.put("first", false); @@ -47,11 +47,11 @@ public class FindUserPage extends Page { @Override public boolean next(Language l, Map vars) { - if (i == users.length) { + if (i == emails.length) { return false; } - vars.put("usrid", users[i].getId()); - vars.put("usermail", users[i].getEmail()); + vars.put("usrid", emails[i].getOwner().getId()); + vars.put("usermail", emails[i].getAddress()); i++; return true; } diff --git a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java index bf6f1488..f97b2c44 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java +++ b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java @@ -26,7 +26,7 @@ import org.cacert.gigi.pages.PasswordResetPage; public class SupportUserDetailsForm extends Form { - private static final Template t = new Template(FindDomainForm.class.getResource("SupportUserDetailsForm.templ")); + private static final Template t = new Template(FindUserByDomainForm.class.getResource("SupportUserDetailsForm.templ")); private SupportedUser user; diff --git a/tests/org/cacert/gigi/pages/admin/TestSEAdminPageUserDomainSearch.java b/tests/org/cacert/gigi/pages/admin/TestSEAdminPageUserDomainSearch.java index 5c0f1e0b..a4fb4b43 100644 --- a/tests/org/cacert/gigi/pages/admin/TestSEAdminPageUserDomainSearch.java +++ b/tests/org/cacert/gigi/pages/admin/TestSEAdminPageUserDomainSearch.java @@ -13,7 +13,7 @@ import org.cacert.gigi.GigiApiException; import org.cacert.gigi.dbObjects.Domain; import org.cacert.gigi.dbObjects.Group; import org.cacert.gigi.dbObjects.User; -import org.cacert.gigi.pages.admin.support.FindDomainPage; +import org.cacert.gigi.pages.admin.support.FindUserByDomainPage; import org.cacert.gigi.pages.admin.support.SupportEnterTicketPage; import org.cacert.gigi.pages.admin.support.SupportUserDetailsPage; import org.cacert.gigi.testUtils.ClientTest; @@ -45,20 +45,20 @@ public class TestSEAdminPageUserDomainSearch extends ClientTest { @Test public void testDomainSearch() throws MalformedURLException, UnsupportedEncodingException, IOException, GigiApiException { - URLConnection uc = post(FindDomainPage.PATH, "process&domain=" + URLEncoder.encode(domainName, "UTF-8")); + URLConnection uc = post(FindUserByDomainPage.PATH, "process&domain=" + URLEncoder.encode(domainName, "UTF-8")); assertEquals("https://" + ServerConstants.getWwwHostNamePortSecure() + SupportUserDetailsPage.PATH + tid, uc.getHeaderField("Location")); } @Test public void testDomainSearchById() throws MalformedURLException, UnsupportedEncodingException, IOException, GigiApiException { - URLConnection uc = post(FindDomainPage.PATH, "process&domain=#" + d.getId()); + URLConnection uc = post(FindUserByDomainPage.PATH, "process&domain=#" + d.getId()); assertEquals("https://" + ServerConstants.getWwwHostNamePortSecure() + SupportUserDetailsPage.PATH + tid, uc.getHeaderField("Location")); } @Test public void testDomainSearchNonExist() throws MalformedURLException, UnsupportedEncodingException, IOException, GigiApiException { - URLConnection uc = post(FindDomainPage.PATH, "process&domain=" + URLEncoder.encode(createUniqueName() + ".de", "UTF-8")); + URLConnection uc = post(FindUserByDomainPage.PATH, "process&domain=" + URLEncoder.encode(createUniqueName() + ".de", "UTF-8")); assertNotNull(fetchStartErrorMessage(IOUtils.readURL(uc))); } @@ -76,7 +76,7 @@ public class TestSEAdminPageUserDomainSearch extends ClientTest { found = true; } assumeTrue(found); - URLConnection uc = post(FindDomainPage.PATH, "process&domain=#" + id); + URLConnection uc = post(FindUserByDomainPage.PATH, "process&domain=#" + id); assertNotNull(fetchStartErrorMessage(IOUtils.readURL(uc))); } } diff --git a/tests/org/cacert/gigi/pages/admin/TestSEAdminPageUserMailSearch.java b/tests/org/cacert/gigi/pages/admin/TestSEAdminPageUserMailSearch.java index 70e5bd4f..bb05a71b 100644 --- a/tests/org/cacert/gigi/pages/admin/TestSEAdminPageUserMailSearch.java +++ b/tests/org/cacert/gigi/pages/admin/TestSEAdminPageUserMailSearch.java @@ -9,8 +9,10 @@ import java.net.MalformedURLException; import java.net.URLConnection; import java.net.URLEncoder; +import org.cacert.gigi.GigiApiException; import org.cacert.gigi.dbObjects.Group; -import org.cacert.gigi.pages.admin.support.FindUserPage; +import org.cacert.gigi.dbObjects.User; +import org.cacert.gigi.pages.admin.support.FindUserByEmailPage; import org.cacert.gigi.pages.admin.support.SupportEnterTicketPage; import org.cacert.gigi.pages.admin.support.SupportUserDetailsPage; import org.cacert.gigi.testUtils.ClientTest; @@ -30,7 +32,7 @@ public class TestSEAdminPageUserMailSearch extends ClientTest { String mail = createUniqueName() + "@example.com"; int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD); - URLConnection uc = post(cookie, FindUserPage.PATH, "process&email=" + URLEncoder.encode(mail, "UTF-8"), 0); + URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode(mail, "UTF-8"), 0); assertEquals("https://" + ServerConstants.getWwwHostNamePortSecure() + SupportUserDetailsPage.PATH + id, uc.getHeaderField("Location")); } @@ -39,7 +41,7 @@ public class TestSEAdminPageUserMailSearch extends ClientTest { String mail = createUniqueName() + "@example.tld"; int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD); - URLConnection uc = post(cookie, FindUserPage.PATH, "process&email=" + URLEncoder.encode("%@example.tld", "UTF-8"), 0); + URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@example.tld", "UTF-8"), 0); assertEquals("https://" + ServerConstants.getWwwHostNamePortSecure() + SupportUserDetailsPage.PATH + id, uc.getHeaderField("Location")); } @@ -49,7 +51,7 @@ public class TestSEAdminPageUserMailSearch extends ClientTest { int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD); String mail2 = createUniqueName() + "@example.org"; int id2 = createVerifiedUser("Först", "Secönd", mail2, TEST_PASSWORD); - URLConnection uc = post(cookie, FindUserPage.PATH, "process&email=" + URLEncoder.encode("%@example.org", "UTF-8"), 0); + URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@example.org", "UTF-8"), 0); String res = IOUtils.readURL(uc); assertThat(res, containsString(SupportUserDetailsPage.PATH + id)); @@ -63,7 +65,7 @@ public class TestSEAdminPageUserMailSearch extends ClientTest { String mail2 = createUniqueName() + "@fxample.org"; int id2 = createVerifiedUser("Först", "Secönd", mail2, TEST_PASSWORD); - URLConnection uc = post(cookie, FindUserPage.PATH, "process&email=" + URLEncoder.encode("%@_xample.org", "UTF-8"), 0); + URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@_xample.org", "UTF-8"), 0); String res = IOUtils.readURL(uc); assertThat(res, containsString(SupportUserDetailsPage.PATH + id)); @@ -72,14 +74,95 @@ public class TestSEAdminPageUserMailSearch extends ClientTest { @Test public void testWildcardMailSearchNoRes() throws MalformedURLException, UnsupportedEncodingException, IOException { - URLConnection uc = post(FindUserPage.PATH, "process&email=" + URLEncoder.encode("%@_humpfelkumpf.org", "UTF-8")); + URLConnection uc = post(FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@_humpfelkumpf.org", "UTF-8")); assertNotNull(fetchStartErrorMessage(IOUtils.readURL(uc))); } @Test public void testFulltextMailSearchNoRes() throws MalformedURLException, UnsupportedEncodingException, IOException { - URLConnection uc = post(cookie, FindUserPage.PATH, "process&email=" + URLEncoder.encode(createUniqueName() + "@example.org", "UTF-8"), 0); + URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode(createUniqueName() + "@example.org", "UTF-8"), 0); assertNotNull(fetchStartErrorMessage(IOUtils.readURL(uc))); } + + @Test + public void testSearchSecondEmailAddress() throws MalformedURLException, UnsupportedEncodingException, IOException, InterruptedException, GigiApiException { + String mail = createUniqueName() + "@example1.org"; + int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD); + User testuser = User.getById(id); + String mail2 = createUniqueName() + "@example1.org"; + createVerifiedEmail(testuser, mail2); + + URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode(mail2, "UTF-8"), 0); + assertEquals("https://" + ServerConstants.getWwwHostNamePortSecure() + SupportUserDetailsPage.PATH + id, uc.getHeaderField("Location")); + } + + @Test + public void testWildcardMailSearchSecondEmailAddress() throws MalformedURLException, UnsupportedEncodingException, IOException, InterruptedException, GigiApiException { + clearCaches(); + String mail = createUniqueName() + "@example2.org"; + int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD); + User testuser = User.getById(id); + String mail2 = createUniqueName() + "@example2.org"; + createVerifiedEmail(testuser, mail2); + + URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@example2.org", "UTF-8"), 0); + + String res = IOUtils.readURL(uc); + assertThat(res, containsString(mail)); + assertThat(res, containsString(mail2)); + } + + @Test + public void testWildcardMailSearchMultipleEmailAddressOneAccount() throws MalformedURLException, UnsupportedEncodingException, IOException, InterruptedException, GigiApiException { + clearCaches(); + String mail = createUniqueName() + "@example3.org"; + int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD); + User testuser = User.getById(id); + String mail2 = createUniqueName() + "@test3.org"; + createVerifiedEmail(testuser, mail2); + String mail3 = createUniqueName() + "@test3.org"; + createVerifiedEmail(testuser, mail3); + + URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@example3.org", "UTF-8"), 0); + assertEquals("https://" + ServerConstants.getWwwHostNamePortSecure() + SupportUserDetailsPage.PATH + id, uc.getHeaderField("Location")); + + uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@test3.org", "UTF-8"), 0); + + String res = IOUtils.readURL(uc); + assertThat(res, not(containsString(mail))); + assertThat(res, containsString(mail2)); + assertThat(res, containsString(mail3)); + } + + @Test + public void testWildcardMailSearchMultipleEmailAddressMultipleAccounts() throws MalformedURLException, UnsupportedEncodingException, IOException, InterruptedException, GigiApiException { + String mail = createUniqueName() + "1@example4.org"; + int id = createVerifiedUser("Först", "Secönd", mail, TEST_PASSWORD); + User testuser = User.getById(id); + String mail2 = createUniqueName() + "@test4.org"; + createVerifiedEmail(testuser, mail2); + + String mail3 = createUniqueName() + "2@example4.org"; + int id2 = createVerifiedUser("Först", "Secönd", mail3, TEST_PASSWORD); + User testuser2 = User.getById(id2); + String mail4 = createUniqueName() + "@test4.org"; + createVerifiedEmail(testuser2, mail4); + + URLConnection uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@example4.org", "UTF-8"), 0); + + String res = IOUtils.readURL(uc); + assertThat(res, containsString(mail)); + assertThat(res, not(containsString(mail2))); + assertThat(res, containsString(mail3)); + assertThat(res, not(containsString(mail4))); + + uc = post(cookie, FindUserByEmailPage.PATH, "process&email=" + URLEncoder.encode("%@test4.org", "UTF-8"), 0); + + res = IOUtils.readURL(uc); + assertThat(res, not(containsString(mail))); + assertThat(res, containsString(mail2)); + assertThat(res, not(containsString(mail3))); + assertThat(res, containsString(mail4)); + } } diff --git a/tests/org/cacert/gigi/pages/admin/TestSEAdminTicketSetting.java b/tests/org/cacert/gigi/pages/admin/TestSEAdminTicketSetting.java index c4c1a305..62d89de2 100644 --- a/tests/org/cacert/gigi/pages/admin/TestSEAdminTicketSetting.java +++ b/tests/org/cacert/gigi/pages/admin/TestSEAdminTicketSetting.java @@ -7,8 +7,8 @@ import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import org.cacert.gigi.dbObjects.Group; -import org.cacert.gigi.pages.admin.support.FindDomainPage; -import org.cacert.gigi.pages.admin.support.FindUserPage; +import org.cacert.gigi.pages.admin.support.FindUserByDomainPage; +import org.cacert.gigi.pages.admin.support.FindUserByEmailPage; import org.cacert.gigi.pages.admin.support.SupportEnterTicketPage; import org.cacert.gigi.testUtils.ClientTest; import org.junit.Test; @@ -21,12 +21,12 @@ public class TestSEAdminTicketSetting extends ClientTest { @Test public void testFulltextMailSearch() throws MalformedURLException, UnsupportedEncodingException, IOException { - assertEquals(403, get(FindUserPage.PATH).getResponseCode()); + assertEquals(403, get(FindUserByEmailPage.PATH).getResponseCode()); assertEquals(302, post(cookie, SupportEnterTicketPage.PATH, "ticketno=a20140808.8&setTicket=action", 0).getResponseCode()); - assertEquals(200, get(FindUserPage.PATH).getResponseCode()); - assertEquals(200, get(FindDomainPage.PATH).getResponseCode()); + assertEquals(200, get(FindUserByEmailPage.PATH).getResponseCode()); + assertEquals(200, get(FindUserByDomainPage.PATH).getResponseCode()); assertEquals(302, post(cookie, SupportEnterTicketPage.PATH, "ticketno=a20140808.8&deleteTicket=action", 0).getResponseCode()); - assertEquals(403, get(FindUserPage.PATH).getResponseCode()); + assertEquals(403, get(FindUserByEmailPage.PATH).getResponseCode()); } } diff --git a/tests/org/cacert/gigi/testUtils/ManagedTest.java b/tests/org/cacert/gigi/testUtils/ManagedTest.java index 036adc92..aab620a3 100644 --- a/tests/org/cacert/gigi/testUtils/ManagedTest.java +++ b/tests/org/cacert/gigi/testUtils/ManagedTest.java @@ -468,13 +468,17 @@ public class ManagedTest extends ConfiguredTest { } public EmailAddress createVerifiedEmail(User u) throws InterruptedException, GigiApiException { - EmailAddress adrr = new EmailAddress(u, createUniqueName() + "test@test.tld", Locale.ENGLISH); + return createVerifiedEmail(u, createUniqueName() + "test@test.tld"); + } + + public EmailAddress createVerifiedEmail(User u, String email) throws InterruptedException, GigiApiException { + EmailAddress addr = new EmailAddress(u, email, Locale.ENGLISH); TestMail testMail = getMailReceiver().receive(); - assertEquals(adrr.getAddress(), testMail.getTo()); + assertEquals(addr.getAddress(), testMail.getTo()); String hash = testMail.extractLink().substring(testMail.extractLink().lastIndexOf('=') + 1); - adrr.verify(hash); + addr.verify(hash); getMailReceiver().clearMails(); - return adrr; + return addr; } public static URLConnection cookie(URLConnection openConnection, String cookie) {
: