package bo.gotthardt.ui;
import bo.gotthardt.model.User;
import bo.gotthardt.test.UiIntegrationTest;
import bo.gotthardt.page.DashboardPage;
import bo.gotthardt.page.LoginPage;
import org.junit.Test;
import static bo.gotthardt.test.assertj.DropwizardAssertions.assertThat;
/**
* @author Bo Gotthardt
*/
public class LoginUiTest extends UiIntegrationTest {
public static final String USERNAME = "testuser";
public static final String PASSWORD = "testpassword";
public static final String NAME = "Test Testsen";
@Test
public void shouldLogInWithCorrectCredentials() {
createUser();
LoginPage page = frontPage();
page.loginSuccess(USERNAME, PASSWORD);
}
@Test
public void shouldGoBackToLoginFormAfterLoggingOut() {
createUser();
LoginPage page = frontPage();
page.loginSuccess(USERNAME, PASSWORD)
.logout();
}
@Test
public void shouldStayLoggedOutWithNonexistentCredentials() {
LoginPage page = frontPage();
page.loginFail(USERNAME, PASSWORD);
}
@Test
public void shouldStayLoggedOutWithWrongPassword() {
createUser();
LoginPage page = frontPage();
page.loginFail(USERNAME, "WRONGpassword");
}
@Test
public void shouldLogInWithSecondUserAfterLoggingOut() {
createUser();
User user2 = new User("testuser2", "testpassword2", "Test2 Testsen2");
user2.setEmail("example2@example.com");
db.save(user2);
LoginPage page = frontPage();
DashboardPage dash = page.loginSuccess(USERNAME, PASSWORD)
.logout()
.loginSuccess("testuser2", "testpassword2");
assertThat(dash.getUserFullName()).isEqualTo("Test2 Testsen2");
}
@Test
public void shouldStayLoggedInAfterReloadingPage() {
createUser();
LoginPage page = frontPage();
page.loginSuccess(USERNAME, PASSWORD);
driver.get(driver.getCurrentUrl());
DashboardPage.go(driver);
}
private User createUser() {
User user = new User(USERNAME, PASSWORD, NAME);
user.setEmail("example@example.com");
db.save(user);
return user;
}
}