Search in sources :

Example 1 with InvitationGuestActionsPage

use of org.xwiki.invitation.test.po.InvitationGuestActionsPage in project xwiki-platform by xwiki.

the class InvitationTest method testAcceptInvitation.

/**
 * This test proves that:
 * 1. The accept invitation link sent in the email will work.
 * 2. A user can accept an invitation and be directed to the registration form and can register and login.
 * 3. An invitation once accepted cannot be accepted again nor declined.
 * 4. An invitation once accepted can still be reported as spam.
 */
@Test
@IgnoreBrowsers({ @IgnoreBrowser(value = "internet.*", version = "8\\.*", reason = "See https://jira.xwiki.org/browse/XE-1146"), @IgnoreBrowser(value = "internet.*", version = "9\\.*", reason = "See https://jira.xwiki.org/browse/XE-1177") })
public void testAcceptInvitation() throws Exception {
    TestUtils.Session admin = getUtil().getSession();
    try {
        startGreenMail();
        getSenderPage().send();
        getGreenMail().waitForIncomingEmail(10000, 1);
        MimeMessage[] messages = getGreenMail().getReceivedMessages();
        String htmlMessage = getMessageContent(messages[0]).get("htmlPart");
        Assert.assertTrue("New invitation is not listed as pending in the footer.", getSenderPage().getFooter().myPendingInvitations() == 1);
        // Now switch to guest.
        getUtil().forceGuestUser();
        InvitationGuestActionsPage guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.ACCEPT);
        Assert.assertTrue("There was an error message when accepting the invitation message:\n" + guestPage.getMessage(), guestPage.getMessage().equals(""));
        // Register a new user.
        RegistrationPage rp = new RegistrationPage();
        rp.fillRegisterForm(null, null, "InvitedMember", "WeakPassword", "WeakPassword", null);
        rp.clickRegister();
        Assert.assertTrue("There were failure messages when registering.", rp.getValidationFailureMessages().isEmpty());
        getDriver().get(getUtil().getURLToLoginAs("InvitedMember", "WeakPassword"));
        Assert.assertTrue("Failed to log user in after registering from invitation.", rp.isAuthenticated());
        // Now switch to guest again and try to accept the invitation again.
        getUtil().forceGuestUser();
        guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.ACCEPT);
        Assert.assertTrue("After the invitation was accepted a user was allowed to accept it again.", guestPage.getMessage().equals("This invitation has already been accepted and the " + "offer is no longer valid."));
        // Try to decline the invitation.
        guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.DECLINE);
        Assert.assertTrue("After the invitation was accepted a user was allowed to decline it.", guestPage.getMessage().equals("This invitation has already been accepted and " + "now cannot be declined."));
        // Prove that the message can still be reported as spam
        guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.REPORT);
        Assert.assertTrue("After the invitation was accepted it now cannot be reported as spam.", guestPage.getMessage().equals(""));
    } finally {
        stopGreenMail();
        getUtil().setSession(admin);
    }
}
Also used : InvitationGuestActionsPage(org.xwiki.invitation.test.po.InvitationGuestActionsPage) RegistrationPage(org.xwiki.test.ui.po.RegistrationPage) TestUtils(org.xwiki.test.ui.TestUtils) MimeMessage(javax.mail.internet.MimeMessage) IgnoreBrowsers(org.xwiki.test.ui.browser.IgnoreBrowsers) AbstractTest(org.xwiki.test.ui.AbstractTest) Test(org.junit.Test)

Example 2 with InvitationGuestActionsPage

use of org.xwiki.invitation.test.po.InvitationGuestActionsPage in project xwiki-platform by xwiki.

the class InvitationTest method testDeclineInvitation.

/**
 * This test proves that:
 * 1. A guest can decline an invitation.
 * 2. The message status changes and the footer reflects this.
 * 3. The sender can see the info box seeing the guest's reason for declining.
 * 4. The message history table shows the decline properly.
 * 5. A guest cannot accept a message which has already been declined.
 */
@Test
@IgnoreBrowsers({ @IgnoreBrowser(value = "internet.*", version = "8\\.*", reason = "See https://jira.xwiki.org/browse/XE-1146"), @IgnoreBrowser(value = "internet.*", version = "9\\.*", reason = "See https://jira.xwiki.org/browse/XE-1177") })
public void testDeclineInvitation() throws Exception {
    TestUtils.Session admin = getUtil().getSession();
    try {
        startGreenMail();
        getSenderPage().send();
        getGreenMail().waitForIncomingEmail(10000, 1);
        MimeMessage[] messages = getGreenMail().getReceivedMessages();
        String htmlMessage = getMessageContent(messages[0]).get("htmlPart");
        Assert.assertTrue("New invitation is not listed as pending in the footer.", getSenderPage().getFooter().myPendingInvitations() == 1);
        // Now switch to guest.
        getUtil().forceGuestUser();
        InvitationGuestActionsPage guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.DECLINE);
        guestPage.setMemo("I'm not interested thank you.");
        guestPage.confirm();
        Assert.assertTrue("Failed to decline invitation", getDriver().getPageSource().contains("This invitation has successfully been declined."));
        // Switch to admin
        getUtil().setSession(admin);
        // Go to invitation sender.
        setSenderPage(InvitationSenderPage.gotoPage());
        Assert.assertTrue("Declined invitation is still listed as pending in the footer.", getSenderPage().getFooter().spamReports() == 0);
        // View declined invitation.
        InspectInvitationsPage inspectPage = getSenderPage().getFooter().inspectMyInvitations();
        InspectInvitationsPage.OneMessage inspect = inspectPage.getMessageWhere("Status", "Declined");
        Assert.assertTrue("Not showing message box to say the invitation has been declined", inspect.getStatusAndMemo().equals("Declined with message: I'm not interested thank you."));
        // Insure the message history table is correct.
        TableElement messageHistoryTable = inspect.clickMessageHistory();
        List<WebElement> row2 = messageHistoryTable.getRow(2);
        Assert.assertTrue("Message history table not showing correctly.", row2.get(0).getText().equals("Declined"));
        Assert.assertTrue("Message history table not showing correctly.", row2.get(2).getText().equals("I'm not interested thank you."));
        // Make sure a guest can't accept the invitation now.
        getUtil().forceGuestUser();
        guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.ACCEPT);
        Assert.assertTrue("After a message is declined a user can still accept it!", guestPage.getMessage().equals("This invitation has been declined and cannot be accepted now."));
        // Try to decline the invitation.
        guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.DECLINE);
        Assert.assertTrue("User was allowed to decline an invitation twice.", guestPage.getMessage().equals("This invitation has already been declined and " + "cannot be declined again."));
        // Prove that the message can still be reported as spam
        guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.REPORT);
        Assert.assertTrue("After the invitation was declined it now cannot be reported as spam.", guestPage.getMessage().equals(""));
    } finally {
        stopGreenMail();
        getUtil().setSession(admin);
    }
}
Also used : InvitationGuestActionsPage(org.xwiki.invitation.test.po.InvitationGuestActionsPage) TestUtils(org.xwiki.test.ui.TestUtils) InspectInvitationsPage(org.xwiki.invitation.test.po.InspectInvitationsPage) MimeMessage(javax.mail.internet.MimeMessage) WebElement(org.openqa.selenium.WebElement) TableElement(org.xwiki.test.ui.po.TableElement) IgnoreBrowsers(org.xwiki.test.ui.browser.IgnoreBrowsers) AbstractTest(org.xwiki.test.ui.AbstractTest) Test(org.junit.Test)

Example 3 with InvitationGuestActionsPage

use of org.xwiki.invitation.test.po.InvitationGuestActionsPage in project xwiki-platform by xwiki.

the class InvitationTest method testCancelInvitation.

/**
 * This test proves that:
 * 1. A user can cancel an invitation after sending it, leaving a message for the recipient should they try to
 *    accept.
 * 2. A canceled invitation cannot be accepted and the guest will see an explaination with the message left when
 *    the sender canceled.
 * 3. A canceled invitation cannot be declined, the guest gets the sender's note.
 * 4. A canceled invitation can still be reported as spam.
 */
@Test
@IgnoreBrowsers({ @IgnoreBrowser(value = "internet.*", version = "8\\.*", reason = "See https://jira.xwiki.org/browse/XE-1146"), @IgnoreBrowser(value = "internet.*", version = "9\\.*", reason = "See https://jira.xwiki.org/browse/XE-1177") })
public void testCancelInvitation() throws Exception {
    TestUtils.Session admin = getUtil().getSession();
    try {
        startGreenMail();
        getSenderPage().send();
        getGreenMail().waitForIncomingEmail(10000, 1);
        MimeMessage[] messages = getGreenMail().getReceivedMessages();
        String htmlMessage = getMessageContent(messages[0]).get("htmlPart");
        Assert.assertTrue("New invitation is not listed as pending in the footer.", getSenderPage().getFooter().myPendingInvitations() == 1);
        InspectInvitationsPage.OneMessage message = getSenderPage().getFooter().inspectMyInvitations().getMessageWhere("Subject", "Admin has invited you to join localhost This is a subject line.");
        InvitationActionConfirmationElement confirm = message.cancel();
        Assert.assertEquals("leave a message in case the invitee(s) try to register.", confirm.getLabel().toLowerCase());
        confirm.setMemo("Sorry, wrong email address.");
        Assert.assertEquals("Invitation successfully rescinded.", confirm.confirm());
        // Now switch to guest.
        getUtil().forceGuestUser();
        String commonPart = "\nAdministrator left you this message when rescinding the invitation.\n" + "Sorry, wrong email address.";
        // Prove that invitation cannot be accepted
        InvitationGuestActionsPage guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.ACCEPT);
        Assert.assertFalse("Guest was able to accept a message which had been canceled.", guestPage.getMessage().equals(""));
        Assert.assertEquals("We're sorry but this invitation has been rescinded." + commonPart, guestPage.getMessage());
        // Prove that invitation cannot be declined
        guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.DECLINE);
        Assert.assertFalse("Guest was able to decline a message which had been canceled.", guestPage.getMessage().equals(""));
        Assert.assertEquals("This invitation has been rescinded and thus cannot be declined." + commonPart, guestPage.getMessage());
        // Prove that the message report spam page still shows up.
        guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.REPORT);
        Assert.assertTrue("Guest was not able to report canceled invitation as spam", guestPage.getMessage().equals(""));
        guestPage.setMemo("Canceled message is spam.");
        Assert.assertEquals("Your report has been logged and the situation will " + "be investigated as soon as possible, we apologize for the inconvenience.", guestPage.confirm());
    } finally {
        stopGreenMail();
        getUtil().setSession(admin);
    }
}
Also used : InvitationGuestActionsPage(org.xwiki.invitation.test.po.InvitationGuestActionsPage) TestUtils(org.xwiki.test.ui.TestUtils) InspectInvitationsPage(org.xwiki.invitation.test.po.InspectInvitationsPage) MimeMessage(javax.mail.internet.MimeMessage) InvitationActionConfirmationElement(org.xwiki.invitation.test.po.InvitationActionConfirmationElement) IgnoreBrowsers(org.xwiki.test.ui.browser.IgnoreBrowsers) AbstractTest(org.xwiki.test.ui.AbstractTest) Test(org.junit.Test)

Example 4 with InvitationGuestActionsPage

use of org.xwiki.invitation.test.po.InvitationGuestActionsPage in project xwiki-platform by xwiki.

the class InvitationTest method testSpamReporting.

/**
 * This test proves that:
 * 1. Guests (mail recipients) can report spam.
 * 2. After a spam report, a user's mail privilege is suspended.
 * 3. An admin will see a message telling him that a spam report was made.
 * 4. After an admin marks the message as not spam, the sender can again send mail.
 */
@Test
@IgnoreBrowsers({ @IgnoreBrowser(value = "internet.*", version = "8\\.*", reason = "See https://jira.xwiki.org/browse/XE-1146"), @IgnoreBrowser(value = "internet.*", version = "9\\.*", reason = "See https://jira.xwiki.org/browse/XE-1177") })
public void testSpamReporting() throws Exception {
    TestUtils.Session admin = getUtil().getSession();
    try {
        getUtil().forceGuestUser();
        getUtil().createUserAndLogin("spam", "andEggs");
        setSenderPage(InvitationSenderPage.gotoPage());
        startGreenMail();
        getSenderPage().fillForm("undisclosed-recipients@localhost.localdomain", null, "You have won the email lottery!");
        getSenderPage().send();
        getGreenMail().waitForIncomingEmail(10000, 1);
        MimeMessage[] messages = getGreenMail().getReceivedMessages();
        String htmlMessage = getMessageContent(messages[0]).get("htmlPart");
        // Restare greenmail to clear message
        stopGreenMail();
        startGreenMail();
        // Now switch to guest.
        TestUtils.Session spammer = getUtil().getSession();
        getUtil().forceGuestUser();
        InvitationGuestActionsPage guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.REPORT);
        guestPage.setMemo("It's the email lottery, they have taken over your server!");
        guestPage.confirm();
        Assert.assertTrue("Failed to report spam", guestPage.getMessage().contains("Your report has been logged and the situation"));
        // Prove that a reported message cannot be accepted (which would clear the "reported" status)
        guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.ACCEPT);
        Assert.assertTrue("After a message is reported a user can accept it, clearing the spam report", guestPage.getMessage().equals("This invitation has been reported as spam and is no longer valid."));
        // Prove that a reported message cannot be declined
        guestPage = InvitationGuestActionsPage.gotoPage(htmlMessage, InvitationGuestActionsPage.Action.DECLINE);
        Assert.assertTrue("After a message is reported a user can decline it, clearing the spam report", guestPage.getMessage().equals("This invitation has already been reported as " + "spam and thus cannot be declined."));
        // Switch to admin
        getUtil().setSession(admin);
        // Go to invitation sender.
        setSenderPage(InvitationSenderPage.gotoPage());
        // Switch back to spammer.
        getUtil().setSession(spammer);
        getSenderPage().send();
        getGreenMail().waitForIncomingEmail(2000, 1);
        Assert.assertTrue("Reported spammers can send mail!", getGreenMail().getReceivedMessages().length == 0);
        Assert.assertTrue("No message telling user he's reported spammer.", getSenderPage().userIsSpammer());
        // Switch to admin.
        getUtil().setSession(admin);
        setSenderPage(InvitationSenderPage.gotoPage());
        Assert.assertTrue("No warning in footer that a message is reported as spam", getSenderPage().getFooter().spamReports() == 1);
        // View spam message.
        InspectInvitationsPage inspectPage = getSenderPage().getFooter().inspectAllInvitations();
        InspectInvitationsPage.OneMessage inspect = inspectPage.getMessageWhere("Subject", "spam has invited you to join localhost");
        // Prove that the memo left by spam reported is shown.
        String expectedMessage = "Reported as spam with message: It's the email lottery, they have taken over " + "your server!";
        Assert.assertTrue("The message by the spam reporter is not shown to the admin.\nExpecting:" + expectedMessage + "\n      Got:" + inspect.getStatusAndMemo(), inspect.getStatusAndMemo().equals(expectedMessage));
        String memo = "Actually the email lottery is quite legitimate.";
        String expectedSuccessMessage = "Invitation successfully marked as not spam. Log entry: " + memo;
        // Return their sending privilege.
        String successMessage = inspect.notSpam("Actually the email lottery is quite legitimate.");
        // Make sure the output is correct.
        Assert.assertTrue("Admin got incorrect message after marking invitation as not spam\nExpecting:" + expectedSuccessMessage + "\n      Got:" + successMessage, expectedSuccessMessage.equals(successMessage));
        // Switch back to spammer
        getUtil().setSession(spammer);
        setSenderPage(InvitationSenderPage.gotoPage());
        Assert.assertFalse("User permission to send not returned by admin action.", getSenderPage().userIsSpammer());
    } finally {
        stopGreenMail();
        getUtil().setSession(admin);
        getUtil().rest().deletePage("XWiki", "spam");
    }
}
Also used : InvitationGuestActionsPage(org.xwiki.invitation.test.po.InvitationGuestActionsPage) TestUtils(org.xwiki.test.ui.TestUtils) InspectInvitationsPage(org.xwiki.invitation.test.po.InspectInvitationsPage) MimeMessage(javax.mail.internet.MimeMessage) IgnoreBrowsers(org.xwiki.test.ui.browser.IgnoreBrowsers) AbstractTest(org.xwiki.test.ui.AbstractTest) Test(org.junit.Test)

Example 5 with InvitationGuestActionsPage

use of org.xwiki.invitation.test.po.InvitationGuestActionsPage in project xwiki-platform by xwiki.

the class InvitationTest method testGuestActionsOnNonexistantMessage.

@Test
public void testGuestActionsOnNonexistantMessage() throws Exception {
    TestUtils.Session s = getUtil().getSession();
    try {
        getUtil().forceGuestUser();
        // Try to accept nonexistent message.
        getUtil().gotoPage("Invitation", "InvitationGuestActions", "view", "doAction_accept&messageID=12345");
        InvitationGuestActionsPage guestPage = new InvitationGuestActionsPage();
        Assert.assertNotNull("Guests able to accept nonexistent invitation", guestPage.getMessage());
        Assert.assertEquals("No message was found by the given ID. It might have been deleted " + "or maybe the system is experiencing difficulties.", guestPage.getMessage());
        // Try to decline nonexistent message.
        getUtil().gotoPage("Invitation", "InvitationGuestActions", "view", "doAction_decline&messageID=12345");
        Assert.assertNotNull("Guests able to decline nonexistent invitation", guestPage.getMessage());
        Assert.assertEquals("No invitation was found by the given ID. It might have been deleted or " + "maybe the system is experiencing difficulties.", guestPage.getMessage());
        // Try to report nonexistent message.
        getUtil().gotoPage("Invitation", "InvitationGuestActions", "view", "doAction_report&messageID=12345");
        Assert.assertNotNull("Guests able to report nonexistent invitation as spam", guestPage.getMessage());
        Assert.assertEquals("There was no message found by the given ID. Maybe an administrator " + "deleted the message from our system.", guestPage.getMessage());
    } finally {
        getUtil().setSession(s);
    }
}
Also used : InvitationGuestActionsPage(org.xwiki.invitation.test.po.InvitationGuestActionsPage) TestUtils(org.xwiki.test.ui.TestUtils) AbstractTest(org.xwiki.test.ui.AbstractTest) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)6 InvitationGuestActionsPage (org.xwiki.invitation.test.po.InvitationGuestActionsPage)6 AbstractTest (org.xwiki.test.ui.AbstractTest)6 TestUtils (org.xwiki.test.ui.TestUtils)6 MimeMessage (javax.mail.internet.MimeMessage)5 IgnoreBrowsers (org.xwiki.test.ui.browser.IgnoreBrowsers)5 InspectInvitationsPage (org.xwiki.invitation.test.po.InspectInvitationsPage)3 RegistrationPage (org.xwiki.test.ui.po.RegistrationPage)2 WebElement (org.openqa.selenium.WebElement)1 InvitationActionConfirmationElement (org.xwiki.invitation.test.po.InvitationActionConfirmationElement)1 TableElement (org.xwiki.test.ui.po.TableElement)1 ObjectEditPage (org.xwiki.test.ui.po.editor.ObjectEditPage)1