package org.appfuse.webapp.pages;
import org.apache.wicket.util.tester.FormTester;
import org.junit.Test;
import static org.appfuse.webapp.StaticAuthenticatedWebSession.*;
/**
* Integrations tests with WicketTester for Login page.
*
* @author Marcin ZajÄ…czkowski, 2011-06-18
*/
public class LoginPageTest extends BasePageTest {
@Test
public void shouldForwardToHomePageOnSuccessfulAuthentication() {
goToPageAndAssertIfRendered(Login.class);
//when
submitLoginFormWithUsernameAndPassword(USERNAME_USER, PASSWORD_USER);
//then
tester.assertRenderedPage(tester.getApplication().getHomePage());
tester.assertNoErrorMessage();
}
@Test
public void shouldStayOnLoginPageAndDisplayErrorMessageOnFailedAuthentication() {
//given
goToPageAndAssertIfRendered(Login.class);
//when
submitLoginFormWithUsernameAndPassword(USERNAME_USER, "invalid");
//then
tester.assertRenderedPage(Login.class);
tester.assertErrorMessages("Invalid username and/or password, please try again.");
}
@Test
public void shouldDisplayCorrectErrorMessageOnMissingUsername() {
//given
goToPageAndAssertIfRendered(Login.class);
//when
submitLoginFormWithUsernameAndPassword(null, "bar");
//then
assertRenderedLoginPageWithErrorMessages(Login.class, getRequiredErrorMessageByField("username"));
}
@Test
public void shouldDisplayCorrectErrorMessageOnMissingPassword() {
//given
goToPageAndAssertIfRendered(Login.class);
//when
submitLoginFormWithUsernameAndPassword("foo", null);
//then
assertRenderedLoginPageWithErrorMessages(Login.class, getRequiredErrorMessageByField("password"));
}
@Test
public void shouldCorrectErrorMessageOnMissingUsernameAndPassword() {
//given
goToPageAndAssertIfRendered(Login.class);
//when
submitLoginFormWithUsernameAndPassword(null, null);
//then
assertRenderedLoginPageWithErrorMessages(Login.class,
getRequiredErrorMessageByField("username"), getRequiredErrorMessageByField("password"));
}
private void submitLoginFormWithUsernameAndPassword(String username, String password) {
FormTester loginForm = tester.newFormTester("loginForm");
//MZA: Strange construction required after upgrade to Wicket 1.5
loginForm.setValue("border:border_body:username", username);
loginForm.setValue("password", password);
loginForm.submit();
}
}