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);
}
}
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");
}
}
Aggregations