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