]> WPIA git - gigi.git/blob - tests/club/wpia/gigi/pages/admin/TestSEAdminNotificationMail.java
a84e0e2f7c0cbaddecf5c383eab4a8e04e9c86b7
[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.URLConnection;
11 import java.net.URLEncoder;
12 import java.util.HashMap;
13 import java.util.Locale;
14
15 import org.hamcrest.CoreMatchers;
16 import org.junit.Test;
17
18 import club.wpia.gigi.GigiApiException;
19 import club.wpia.gigi.dbObjects.Group;
20 import club.wpia.gigi.dbObjects.User;
21 import club.wpia.gigi.localisation.Language;
22 import club.wpia.gigi.pages.account.MyDetails;
23 import club.wpia.gigi.pages.admin.support.SupportUserDetailsPage;
24 import club.wpia.gigi.testUtils.ArrayContains;
25 import club.wpia.gigi.testUtils.IOUtils;
26 import club.wpia.gigi.testUtils.SEClientTest;
27 import club.wpia.gigi.testUtils.TestEmailReceiver.TestMail;
28 import club.wpia.gigi.util.ServerConstants;
29 import club.wpia.gigi.util.ServerConstants.Host;
30
31 public class TestSEAdminNotificationMail extends SEClientTest {
32
33     private int targetID;
34
35     private String targetEmail;
36
37     public TestSEAdminNotificationMail() throws IOException, GigiApiException {
38         targetEmail = createUniqueName() + "@example.com";
39         String fname = "Först";
40         String lname = "Secönd";
41         targetID = createVerifiedUser(fname, lname, targetEmail, TEST_PASSWORD);
42     }
43
44     @Test
45     public void testChangeAccountData() throws MalformedURLException, IOException {
46
47         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "dobd=1&dobm=2&doby=2000&detailupdate", 0);
48
49         // mail to support
50         String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
51         assertThat(message, containsString("The DoB was changed"));
52         assertThat(message, containsString("supporter " + u.getPreferredName().toString() + " triggered:"));
53         // mail to user
54         message = getMailReceiver().receive(targetEmail).getMessage();
55         assertThat(message, containsString("The DoB in your account was changed to 2000-02-01."));
56     }
57
58     @Test
59     public void testPasswordReset() throws MalformedURLException, IOException {
60         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "aword=SecretWord&resetPass", 0);
61         getMailReceiver().receive(targetEmail);
62         TestMail tm = getMailReceiver().receive(ServerConstants.getSupportMailAddress());
63         assertThat(tm.getMessage(), containsString("A password reset was triggered and an email was sent to user."));
64
65         User test = User.getById(targetID);
66         String[] result = test.getAdminLog();
67         assertThat(result, ArrayContains.contains(CoreMatchers.equalTo("SE triggered password reset (a20140808.8)")));
68     }
69
70     @Test
71     public void testGrantUserGroup() throws MalformedURLException, IOException {
72         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "addGroup&groupToModify=" + URLEncoder.encode(Group.CODESIGNING.getDBName(), "UTF-8"), 0);
73
74         StringWriter sw = new StringWriter();
75         PrintWriter pw = new PrintWriter(sw);
76         Group.CODESIGNING.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
77
78         // mail to support
79         String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
80         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted."));
81         // mail to user
82         message = getMailReceiver().receive(targetEmail).getMessage();
83         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted to your account."));
84     }
85
86     @Test
87     public void testRemoveUserGroup() throws MalformedURLException, IOException {
88         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "removeGroup&groupToModify=" + URLEncoder.encode(Group.CODESIGNING.getDBName(), "UTF-8"), 0);
89
90         StringWriter sw = new StringWriter();
91         PrintWriter pw = new PrintWriter(sw);
92         Group.CODESIGNING.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
93
94         // mail to support
95         String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
96         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked."));
97         // mail to user
98         message = getMailReceiver().receive(targetEmail).getMessage();
99         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked from your account."));
100     }
101
102     @Test
103     public void testGrantSupporterGroup() throws MalformedURLException, IOException {
104         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "addGroup&groupToModify=" + URLEncoder.encode(Group.SUPPORTER.getDBName(), "UTF-8"), 0);
105
106         StringWriter sw = new StringWriter();
107         PrintWriter pw = new PrintWriter(sw);
108         Group.SUPPORTER.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
109         User target = User.getById(targetID);
110
111         // mail to support
112         String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
113         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted."));
114         // mail to user
115         message = getMailReceiver().receive(targetEmail).getMessage();
116         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted to your account."));
117         // mail to board
118         message = getMailReceiver().receive(ServerConstants.getBoardMailAddress()).getMessage();
119         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted for '" + target.getPreferredName().toString() + "'."));
120     }
121
122     @Test
123     public void testRemoveSupporterGroup() throws MalformedURLException, IOException {
124         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "removeGroup&groupToModify=" + URLEncoder.encode(Group.SUPPORTER.getDBName(), "UTF-8"), 0);
125
126         StringWriter sw = new StringWriter();
127         PrintWriter pw = new PrintWriter(sw);
128         Group.SUPPORTER.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
129         User target = User.getById(targetID);
130
131         // mail to support
132         String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
133         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked."));
134         // mail to user
135         message = getMailReceiver().receive(targetEmail).getMessage();
136         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked from your account."));
137         // mail to board
138         message = getMailReceiver().receive(ServerConstants.getBoardMailAddress()).getMessage();
139         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked for '" + target.getPreferredName().toString() + "'."));
140     }
141
142     @Test
143     public void testRevokeAllCertificates() throws MalformedURLException, IOException {
144         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "revokeall", 1);
145         User user = User.getById(targetID);
146
147         // mail to support
148         String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
149         assertThat(message, containsString("All certificates in the account " + user.getPreferredName().toString()));
150         // mail to user
151         message = getMailReceiver().receive(targetEmail).getMessage();
152         assertThat(message, containsString("All certificates in your account have been revoked."));
153     }
154
155     @Test
156     public void testSupportSupporterGroup() throws MalformedURLException, IOException {
157         // supporter adds to his own groups
158         String s = IOUtils.readURL(post(SupportUserDetailsPage.PATH + u.getId() + "/", "addGroup&groupToModify=" + URLEncoder.encode(Group.ORG_AGENT.getDBName(), "UTF-8")));
159         assertThat(s, containsString("Supporter may not modify himself."));
160
161         // supporter removes from his own groups
162         s = IOUtils.readURL(post(SupportUserDetailsPage.PATH + u.getId() + "/", "removeGroup&groupToModify=" + URLEncoder.encode(Group.ORG_AGENT.getDBName(), "UTF-8")));
163         assertThat(s, containsString("Supporter may not modify himself."));
164
165         // supporter removes supporter flag
166         URLConnection uc = post(SupportUserDetailsPage.PATH + u.getId() + "/", "removeGroup&groupToModify=" + URLEncoder.encode(Group.SUPPORTER.getDBName(), "UTF-8"));
167         assertEquals("https://" + ServerConstants.getHostNamePortSecure(Host.SECURE) + MyDetails.PATH, uc.getHeaderField("Location"));
168         StringWriter sw = new StringWriter();
169         PrintWriter pw = new PrintWriter(sw);
170         Group.SUPPORTER.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
171         // mail to support
172         String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
173         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked."));
174         // mail to user
175         message = getMailReceiver().receive(u.getEmail()).getMessage();
176         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked from your account."));
177         // mail to board
178         message = getMailReceiver().receive(ServerConstants.getBoardMailAddress()).getMessage();
179         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked for '" + u.getPreferredName().toString() + "'."));
180         s = IOUtils.readURL(get(cookie, MyDetails.PATH));
181         assertThat(s, not(containsString("supporter")));
182     }
183
184 }