1 package club.wpia.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.junit.Test;
16 import club.wpia.gigi.GigiApiException;
17 import club.wpia.gigi.dbObjects.Group;
18 import club.wpia.gigi.dbObjects.User;
19 import club.wpia.gigi.localisation.Language;
20 import club.wpia.gigi.pages.admin.support.SupportUserDetailsPage;
21 import club.wpia.gigi.testUtils.SEClientTest;
22 import club.wpia.gigi.testUtils.TestEmailReceiver.TestMail;
23 import club.wpia.gigi.util.ServerConstants;
25 public class TestSEAdminNotificationMail extends SEClientTest {
29 private String targetEmail;
31 public TestSEAdminNotificationMail() throws IOException, GigiApiException {
32 targetEmail = createUniqueName() + "@example.com";
33 String fname = "Först";
34 String lname = "Secönd";
35 targetID = createVerifiedUser(fname, lname, targetEmail, TEST_PASSWORD);
39 public void testChangeAccountData() throws MalformedURLException, IOException {
41 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "dobd=1&dobm=2&doby=2000&detailupdate", 0);
44 String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
45 assertThat(message, containsString("The DoB was changed"));
46 assertThat(message, containsString("supporter " + u.getPreferredName().toString() + " triggered:"));
48 message = getMailReceiver().receive(targetEmail).getMessage();
49 assertThat(message, containsString("The DoB in your account was changed to 2000-02-01."));
53 public void testPasswordReset() throws MalformedURLException, IOException {
54 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "aword=SecretWord&resetPass", 0);
55 getMailReceiver().receive(targetEmail);
56 TestMail tm = getMailReceiver().receive(ServerConstants.getSupportMailAddress());
57 assertThat(tm.getMessage(), containsString("A password reset was triggered and an email was sent to user."));
61 public void testGrantUserGroup() throws MalformedURLException, IOException {
62 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "addGroup&groupToModify=" + URLEncoder.encode(Group.CODESIGNING.getDBName(), "UTF-8"), 0);
64 StringWriter sw = new StringWriter();
65 PrintWriter pw = new PrintWriter(sw);
66 Group.CODESIGNING.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
69 String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
70 assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted."));
72 message = getMailReceiver().receive(targetEmail).getMessage();
73 assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted to your account."));
77 public void testRemoveUserGroup() throws MalformedURLException, IOException {
78 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "removeGroup&groupToModify=" + URLEncoder.encode(Group.CODESIGNING.getDBName(), "UTF-8"), 0);
80 StringWriter sw = new StringWriter();
81 PrintWriter pw = new PrintWriter(sw);
82 Group.CODESIGNING.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
85 String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
86 assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked."));
88 message = getMailReceiver().receive(targetEmail).getMessage();
89 assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked from your account."));
93 public void testGrantSupporterGroup() throws MalformedURLException, IOException {
94 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "addGroup&groupToModify=" + URLEncoder.encode(Group.SUPPORTER.getDBName(), "UTF-8"), 0);
96 StringWriter sw = new StringWriter();
97 PrintWriter pw = new PrintWriter(sw);
98 Group.SUPPORTER.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
99 User target = User.getById(targetID);
102 String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
103 assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted."));
105 message = getMailReceiver().receive(targetEmail).getMessage();
106 assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted to your account."));
108 message = getMailReceiver().receive(ServerConstants.getBoardMailAddress()).getMessage();
109 assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted for '" + target.getPreferredName().toString() + "'."));
113 public void testRemoveSupporterGroup() throws MalformedURLException, IOException {
114 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "removeGroup&groupToModify=" + URLEncoder.encode(Group.SUPPORTER.getDBName(), "UTF-8"), 0);
116 StringWriter sw = new StringWriter();
117 PrintWriter pw = new PrintWriter(sw);
118 Group.SUPPORTER.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
119 User target = User.getById(targetID);
122 String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
123 assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked."));
125 message = getMailReceiver().receive(targetEmail).getMessage();
126 assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked from your account."));
128 message = getMailReceiver().receive(ServerConstants.getBoardMailAddress()).getMessage();
129 assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked for '" + target.getPreferredName().toString() + "'."));
133 public void testRevokeAllCertificates() throws MalformedURLException, IOException {
134 executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "revokeall", 1);
135 User user = User.getById(targetID);
138 String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
139 assertThat(message, containsString("All certificates in the account " + user.getPreferredName().toString()));
141 message = getMailReceiver().receive(targetEmail).getMessage();
142 assertThat(message, containsString("All certificates in your account have been revoked."));