]> WPIA git - gigi.git/blob - tests/club/wpia/gigi/pages/admin/TestSEAdminNotificationMail.java
30aeb64f94a3b077acf1bb039ab0689fd470d794
[gigi.git] / tests / club / wpia / gigi / pages / admin / TestSEAdminNotificationMail.java
1 package club.wpia.gigi.pages.admin;
2
3 import static org.hamcrest.CoreMatchers.*;
4 import static org.junit.Assert.*;
5
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;
13
14 import org.junit.Test;
15
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;
24
25 public class TestSEAdminNotificationMail extends SEClientTest {
26
27     private int targetID;
28
29     private String targetEmail;
30
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);
36     }
37
38     @Test
39     public void testChangeAccountData() throws MalformedURLException, IOException {
40
41         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "dobd=1&dobm=2&doby=2000&detailupdate", 0);
42
43         // mail to support
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:"));
47         // mail to user
48         message = getMailReceiver().receive(targetEmail).getMessage();
49         assertThat(message, containsString("The DoB in your account was changed to 2000-02-01."));
50     }
51
52     @Test
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."));
58     }
59
60     @Test
61     public void testGrantUserGroup() throws MalformedURLException, IOException {
62         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "addGroup&groupToModify=" + URLEncoder.encode(Group.CODESIGNING.getDBName(), "UTF-8"), 0);
63
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>());
67
68         // mail to support
69         String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
70         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted."));
71         // mail to user
72         message = getMailReceiver().receive(targetEmail).getMessage();
73         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted to your account."));
74     }
75
76     @Test
77     public void testRemoveUserGroup() throws MalformedURLException, IOException {
78         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "removeGroup&groupToModify=" + URLEncoder.encode(Group.CODESIGNING.getDBName(), "UTF-8"), 0);
79
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>());
83
84         // mail to support
85         String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
86         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked."));
87         // mail to user
88         message = getMailReceiver().receive(targetEmail).getMessage();
89         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked from your account."));
90     }
91
92     @Test
93     public void testGrantSupporterGroup() throws MalformedURLException, IOException {
94         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "addGroup&groupToModify=" + URLEncoder.encode(Group.SUPPORTER.getDBName(), "UTF-8"), 0);
95
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);
100
101         // mail to support
102         String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
103         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted."));
104         // mail to user
105         message = getMailReceiver().receive(targetEmail).getMessage();
106         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted to your account."));
107         // mail to board
108         message = getMailReceiver().receive(ServerConstants.getBoardMailAddress()).getMessage();
109         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted for '" + target.getPreferredName().toString() + "'."));
110     }
111
112     @Test
113     public void testRemoveSupporterGroup() throws MalformedURLException, IOException {
114         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "removeGroup&groupToModify=" + URLEncoder.encode(Group.SUPPORTER.getDBName(), "UTF-8"), 0);
115
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);
120
121         // mail to support
122         String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
123         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked."));
124         // mail to user
125         message = getMailReceiver().receive(targetEmail).getMessage();
126         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked from your account."));
127         // mail to board
128         message = getMailReceiver().receive(ServerConstants.getBoardMailAddress()).getMessage();
129         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked for '" + target.getPreferredName().toString() + "'."));
130     }
131
132     @Test
133     public void testRevokeAllCertificates() throws MalformedURLException, IOException {
134         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "revokeall", 1);
135         User user = User.getById(targetID);
136
137         // mail to support
138         String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
139         assertThat(message, containsString("All certificates in the account " + user.getPreferredName().toString()));
140         // mail to user
141         message = getMailReceiver().receive(targetEmail).getMessage();
142         assertThat(message, containsString("All certificates in your account have been revoked."));
143     }
144 }