package de.ppi.samples.fuwesta.selophane.module; import java.util.HashSet; import java.util.Set; import de.ppi.samples.fuwesta.frontend.URL; import de.ppi.samples.fuwesta.selophane.page.LoginPage; import de.ppi.selenium.browser.SessionManager; import de.ppi.selenium.browser.WebBrowser; /** * Helper-Methods for Login. * */ public class AuthModule { /** * Testpage. */ private final LoginPage loginPage; /** * Instance of the webbrowser. */ private final WebBrowser webBrowser; /** * Set of public urls. */ private static final Set<String> PUBLIC_URLS = new HashSet<String>() { { this.add("/logout"); this.add(URL.Auth.LOGIN); } }; /** * * Initiates an object of type {@link AuthModule}. * * @param webBrowser the {@link WebBrowser}. */ public AuthModule(WebBrowser webBrowser) { this.loginPage = new LoginPage(webBrowser); this.webBrowser = webBrowser; } /** * Initiates an object of type LoginModule. */ public AuthModule() { this(SessionManager.getSession()); } /** * Logout. */ public void logout() { webBrowser.getRelativeUrl("/logout"); } /** * Logout if the user is loggedin. * * @return true if a logout was necessary. */ public boolean logoutIfNecessary() { if (isLogedIn()) { logout(); return true; } else { return false; } } /** * Looks if a user is logged in. * * @return true if authentication information exists. */ public boolean isLogedIn() { if (webBrowser.manage().getCookieNamed("JSESSIONID") == null) { return false; } final String currentUrl = webBrowser.getCurrentRelativeUrl(); return !PUBLIC_URLS.contains(currentUrl); } /** * Login as admin. */ public void loginAsAdmin() { login("admin"); } /** * Login as given user. * * @param username name of the user. */ public void login(String username) { login(username, "123", false); } /** * Login with username and password. * * @param username the name of the user. * @param password the password. * @param rememberMe if the rememberMe-Checkbox is selected. */ public void login(String username, String password, boolean rememberMe) { loginPage.getUsername().set(username); loginPage.getPassword().set(password); if (rememberMe) { loginPage.getRememberMeCB().check(); } loginPage.getLoginBtn().click(); } /** * Open the login mask. */ public void openLoginMask() { webBrowser.getRelativeUrl(URL.Auth.LOGIN); } }