Search in sources :

Example 1 with InspectInvitationsPage

use of org.xwiki.invitation.test.po.InspectInvitationsPage 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 2 with InspectInvitationsPage

use of org.xwiki.invitation.test.po.InspectInvitationsPage 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)

Aggregations

MimeMessage (javax.mail.internet.MimeMessage)2 Test (org.junit.Test)2 InspectInvitationsPage (org.xwiki.invitation.test.po.InspectInvitationsPage)2 InvitationGuestActionsPage (org.xwiki.invitation.test.po.InvitationGuestActionsPage)2 AbstractTest (org.xwiki.test.ui.AbstractTest)2 TestUtils (org.xwiki.test.ui.TestUtils)2 IgnoreBrowsers (org.xwiki.test.ui.browser.IgnoreBrowsers)2 WebElement (org.openqa.selenium.WebElement)1 TableElement (org.xwiki.test.ui.po.TableElement)1