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.PrintWriter;
8 import java.io.StringWriter;
9 import java.net.MalformedURLException;
10 import java.net.URLEncoder;
11 import java.util.HashMap;
12 import java.util.Locale;
14 import org.cacert.gigi.GigiApiException;
15 import org.cacert.gigi.dbObjects.Group;
16 import org.cacert.gigi.dbObjects.User;
17 import org.cacert.gigi.localisation.Language;
18 import org.cacert.gigi.pages.admin.support.SupportEnterTicketPage;
19 import org.cacert.gigi.pages.admin.support.SupportUserDetailsPage;
20 import org.cacert.gigi.testUtils.ClientTest;
21 import org.cacert.gigi.testUtils.TestEmailReceiver.TestMail;
22 import org.cacert.gigi.util.ServerConstants;
23 import org.junit.Test;
25 public class TestSEAdminNotificationMail extends ClientTest {
29 public TestSEAdminNotificationMail() throws IOException, GigiApiException {
30 grant(u, Group.SUPPORTER);
31 cookie = login(email, TEST_PASSWORD);
32 assertEquals(302, post(cookie, SupportEnterTicketPage.PATH, "ticketno=a20140808.8&setTicket=action", 0).getResponseCode());
34 String email = createUniqueName() + "@example.com";
35 String fname = "Först";
36 String lname = "Secönd";
37 targetID = createVerifiedUser(fname, lname, email, TEST_PASSWORD);
41 public void testChangeAccountData() throws MalformedURLException, IOException {
43 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "dobd=1&dobm=2&doby=2000&detailupdate", 0);
46 String message = getMailReceiver().receive().getMessage();
47 assertThat(message, containsString("The DoB was changed"));
48 assertThat(message, containsString("supporter " + u.getPreferredName().toString() + " triggered:"));
50 message = getMailReceiver().receive().getMessage();
51 assertThat(message, containsString("The DoB in your account was changed to 2000-02-01."));
55 public void testPasswordReset() throws MalformedURLException, IOException {
56 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "aword=SecretWord&resetPass", 0);
58 String targetMail = ServerConstants.getSupportMailAddress();
60 tm = getMailReceiver().receive();
61 } while ( !tm.getTo().equals(targetMail));
62 assertThat(tm.getMessage(), containsString("A password reset was triggered and an email was sent to user."));
66 public void testGrantUserGroup() throws MalformedURLException, IOException {
67 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "addGroup&groupToModify=" + URLEncoder.encode(Group.CODESIGNING.getDBName(), "UTF-8"), 0);
69 StringWriter sw = new StringWriter();
70 PrintWriter pw = new PrintWriter(sw);
71 Group.CODESIGNING.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
74 String message = getMailReceiver().receive().getMessage();
75 assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted."));
77 message = getMailReceiver().receive().getMessage();
78 assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted to your account."));
82 public void testRemoveUserGroup() throws MalformedURLException, IOException {
83 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "removeGroup&groupToModify=" + URLEncoder.encode(Group.CODESIGNING.getDBName(), "UTF-8"), 0);
85 StringWriter sw = new StringWriter();
86 PrintWriter pw = new PrintWriter(sw);
87 Group.CODESIGNING.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
90 String message = getMailReceiver().receive().getMessage();
91 assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked."));
93 message = getMailReceiver().receive().getMessage();
94 assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked from your account."));
98 public void testGrantSupporterGroup() throws MalformedURLException, IOException {
99 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "addGroup&groupToModify=" + URLEncoder.encode(Group.SUPPORTER.getDBName(), "UTF-8"), 0);
101 StringWriter sw = new StringWriter();
102 PrintWriter pw = new PrintWriter(sw);
103 Group.SUPPORTER.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
104 User target = User.getById(targetID);
107 String message = getMailReceiver().receive().getMessage();
108 assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted."));
110 message = getMailReceiver().receive().getMessage();
111 assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted to your account."));
113 message = getMailReceiver().receive().getMessage();
114 assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted for '" + target.getPreferredName().toString() + "'."));
118 public void testRemoveSupporterGroup() throws MalformedURLException, IOException {
119 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "removeGroup&groupToModify=" + URLEncoder.encode(Group.SUPPORTER.getDBName(), "UTF-8"), 0);
121 StringWriter sw = new StringWriter();
122 PrintWriter pw = new PrintWriter(sw);
123 Group.SUPPORTER.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
124 User target = User.getById(targetID);
127 String message = getMailReceiver().receive().getMessage();
128 assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked."));
130 message = getMailReceiver().receive().getMessage();
131 assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked from your account."));
133 message = getMailReceiver().receive().getMessage();
134 assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked for '" + target.getPreferredName().toString() + "'."));
138 public void testRevokeAllCertificates() throws MalformedURLException, IOException {
139 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "revokeall", 1);
140 User user = User.getById(targetID);
143 String message = getMailReceiver().receive().getMessage();
144 assertThat(message, containsString("All certificates in the account " + user.getPreferredName().toString()));
146 message = getMailReceiver().receive().getMessage();
147 assertThat(message, containsString("All certificates in your account have been revoked."));