]> WPIA git - gigi.git/blobdiff - tests/club/wpia/gigi/pages/admin/TestSEAdminNotificationMail.java
add: implement password change log
[gigi.git] / tests / club / wpia / gigi / pages / admin / TestSEAdminNotificationMail.java
index 8a439a31628c7499ae2554be6001e812ee409b96..a84e0e2f7c0cbaddecf5c383eab4a8e04e9c86b7 100644 (file)
@@ -7,35 +7,38 @@ import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.net.MalformedURLException;
+import java.net.URLConnection;
 import java.net.URLEncoder;
 import java.util.HashMap;
 import java.util.Locale;
 
+import org.hamcrest.CoreMatchers;
 import org.junit.Test;
 
 import club.wpia.gigi.GigiApiException;
 import club.wpia.gigi.dbObjects.Group;
 import club.wpia.gigi.dbObjects.User;
 import club.wpia.gigi.localisation.Language;
-import club.wpia.gigi.pages.admin.support.SupportEnterTicketPage;
+import club.wpia.gigi.pages.account.MyDetails;
 import club.wpia.gigi.pages.admin.support.SupportUserDetailsPage;
-import club.wpia.gigi.testUtils.ClientTest;
+import club.wpia.gigi.testUtils.ArrayContains;
+import club.wpia.gigi.testUtils.IOUtils;
+import club.wpia.gigi.testUtils.SEClientTest;
 import club.wpia.gigi.testUtils.TestEmailReceiver.TestMail;
 import club.wpia.gigi.util.ServerConstants;
+import club.wpia.gigi.util.ServerConstants.Host;
 
-public class TestSEAdminNotificationMail extends ClientTest {
+public class TestSEAdminNotificationMail extends SEClientTest {
 
     private int targetID;
 
-    public TestSEAdminNotificationMail() throws IOException, GigiApiException {
-        grant(u, Group.SUPPORTER);
-        cookie = login(email, TEST_PASSWORD);
-        assertEquals(302, post(cookie, SupportEnterTicketPage.PATH, "ticketno=a20140808.8&setTicket=action", 0).getResponseCode());
+    private String targetEmail;
 
-        String email = createUniqueName() + "@example.com";
+    public TestSEAdminNotificationMail() throws IOException, GigiApiException {
+        targetEmail = createUniqueName() + "@example.com";
         String fname = "Först";
         String lname = "Secönd";
-        targetID = createVerifiedUser(fname, lname, email, TEST_PASSWORD);
+        targetID = createVerifiedUser(fname, lname, targetEmail, TEST_PASSWORD);
     }
 
     @Test
@@ -44,23 +47,24 @@ public class TestSEAdminNotificationMail extends ClientTest {
         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "dobd=1&dobm=2&doby=2000&detailupdate", 0);
 
         // mail to support
-        String message = getMailReceiver().receive().getMessage();
+        String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
         assertThat(message, containsString("The DoB was changed"));
         assertThat(message, containsString("supporter " + u.getPreferredName().toString() + " triggered:"));
         // mail to user
-        message = getMailReceiver().receive().getMessage();
+        message = getMailReceiver().receive(targetEmail).getMessage();
         assertThat(message, containsString("The DoB in your account was changed to 2000-02-01."));
     }
 
     @Test
     public void testPasswordReset() throws MalformedURLException, IOException {
         executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "aword=SecretWord&resetPass", 0);
-        TestMail tm;
-        String targetMail = ServerConstants.getSupportMailAddress();
-        do {
-            tm = getMailReceiver().receive();
-        } while ( !tm.getTo().equals(targetMail));
+        getMailReceiver().receive(targetEmail);
+        TestMail tm = getMailReceiver().receive(ServerConstants.getSupportMailAddress());
         assertThat(tm.getMessage(), containsString("A password reset was triggered and an email was sent to user."));
+
+        User test = User.getById(targetID);
+        String[] result = test.getAdminLog();
+        assertThat(result, ArrayContains.contains(CoreMatchers.equalTo("SE triggered password reset (a20140808.8)")));
     }
 
     @Test
@@ -72,10 +76,10 @@ public class TestSEAdminNotificationMail extends ClientTest {
         Group.CODESIGNING.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
 
         // mail to support
-        String message = getMailReceiver().receive().getMessage();
+        String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted."));
         // mail to user
-        message = getMailReceiver().receive().getMessage();
+        message = getMailReceiver().receive(targetEmail).getMessage();
         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted to your account."));
     }
 
@@ -88,10 +92,10 @@ public class TestSEAdminNotificationMail extends ClientTest {
         Group.CODESIGNING.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
 
         // mail to support
-        String message = getMailReceiver().receive().getMessage();
+        String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked."));
         // mail to user
-        message = getMailReceiver().receive().getMessage();
+        message = getMailReceiver().receive(targetEmail).getMessage();
         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked from your account."));
     }
 
@@ -105,13 +109,13 @@ public class TestSEAdminNotificationMail extends ClientTest {
         User target = User.getById(targetID);
 
         // mail to support
-        String message = getMailReceiver().receive().getMessage();
+        String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted."));
         // mail to user
-        message = getMailReceiver().receive().getMessage();
+        message = getMailReceiver().receive(targetEmail).getMessage();
         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted to your account."));
         // mail to board
-        message = getMailReceiver().receive().getMessage();
+        message = getMailReceiver().receive(ServerConstants.getBoardMailAddress()).getMessage();
         assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted for '" + target.getPreferredName().toString() + "'."));
     }
 
@@ -125,13 +129,13 @@ public class TestSEAdminNotificationMail extends ClientTest {
         User target = User.getById(targetID);
 
         // mail to support
-        String message = getMailReceiver().receive().getMessage();
+        String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked."));
         // mail to user
-        message = getMailReceiver().receive().getMessage();
+        message = getMailReceiver().receive(targetEmail).getMessage();
         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked from your account."));
         // mail to board
-        message = getMailReceiver().receive().getMessage();
+        message = getMailReceiver().receive(ServerConstants.getBoardMailAddress()).getMessage();
         assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked for '" + target.getPreferredName().toString() + "'."));
     }
 
@@ -141,10 +145,40 @@ public class TestSEAdminNotificationMail extends ClientTest {
         User user = User.getById(targetID);
 
         // mail to support
-        String message = getMailReceiver().receive().getMessage();
+        String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
         assertThat(message, containsString("All certificates in the account " + user.getPreferredName().toString()));
         // mail to user
-        message = getMailReceiver().receive().getMessage();
+        message = getMailReceiver().receive(targetEmail).getMessage();
         assertThat(message, containsString("All certificates in your account have been revoked."));
     }
+
+    @Test
+    public void testSupportSupporterGroup() throws MalformedURLException, IOException {
+        // supporter adds to his own groups
+        String s = IOUtils.readURL(post(SupportUserDetailsPage.PATH + u.getId() + "/", "addGroup&groupToModify=" + URLEncoder.encode(Group.ORG_AGENT.getDBName(), "UTF-8")));
+        assertThat(s, containsString("Supporter may not modify himself."));
+
+        // supporter removes from his own groups
+        s = IOUtils.readURL(post(SupportUserDetailsPage.PATH + u.getId() + "/", "removeGroup&groupToModify=" + URLEncoder.encode(Group.ORG_AGENT.getDBName(), "UTF-8")));
+        assertThat(s, containsString("Supporter may not modify himself."));
+
+        // supporter removes supporter flag
+        URLConnection uc = post(SupportUserDetailsPage.PATH + u.getId() + "/", "removeGroup&groupToModify=" + URLEncoder.encode(Group.SUPPORTER.getDBName(), "UTF-8"));
+        assertEquals("https://" + ServerConstants.getHostNamePortSecure(Host.SECURE) + MyDetails.PATH, uc.getHeaderField("Location"));
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+        Group.SUPPORTER.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
+        // mail to support
+        String message = getMailReceiver().receive(ServerConstants.getSupportMailAddress()).getMessage();
+        assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked."));
+        // mail to user
+        message = getMailReceiver().receive(u.getEmail()).getMessage();
+        assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked from your account."));
+        // mail to board
+        message = getMailReceiver().receive(ServerConstants.getBoardMailAddress()).getMessage();
+        assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked for '" + u.getPreferredName().toString() + "'."));
+        s = IOUtils.readURL(get(cookie, MyDetails.PATH));
+        assertThat(s, not(containsString("supporter")));
+    }
+
 }