com.sios.stc.coseng.test.User.java Source code

Java tutorial

Introduction

Here is the source code for com.sios.stc.coseng.test.User.java

Source

/*
 * This file is part of COSENG (Concurrent Selenium TestNG Runner).
 * 
 * Copyright (c) 2015 SIOS Technology Corp. All rights reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.sios.stc.coseng.test;

import java.lang.reflect.Method;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

//import org.openqa.selenium.support.ui.Select;

public class User extends Base {

    private static final Logger log = Logger.getLogger(User.class.getName());

    @DataProvider(name = "credentials")
    public Object[][] credentials(final Method m) {
        final String newPassword = "abc123";
        // System.out.println("Method " + m.getName());
        if (m.getName().equals("invalidLogin")) {
            // Username, Password
            return new Object[][] { { "x", "x" }, { "y", "y" } };
        }
        if (m.getName().equals("firstLogin")) {
            // Username, CurrentPassword, NewPassword
            return new Object[][] { { "admin", "admin", newPassword } };
        }
        if (m.getName().equals("login")) {
            // Username, NewPassword
            return new Object[][] { { "admin", newPassword } };
        }
        // Return some default if can't match method
        return new Object[][] { { "admin", newPassword } };
    }

    @Test(description = "Verify bad credentials deny access past the login page", dataProvider = "credentials")
    // @Parameters({ "x,x", "y,y" })
    // public void aInvalidLogin(final String username, final String password)
    public void invalidLogin(final String username, final String password) throws Exception {

        User.log.log(Level.INFO, logTestName() + " Username: " + username + " Password: " + password);

        driver.get(baseUrl + "/ui/#/login");
        acceptSslCertificate(driver);

        final WebDriverWait wait = new WebDriverWait(driver, 10);
        final Actions actions = new Actions(driver);

        final WebElement weUsername = driver.findElement(By.name("userName"));
        final WebElement wePassword = driver.findElement(By.name("password"));
        final WebElement weSubmit = driver.findElement(By.className("login_submit_button"));

        wait.until(ExpectedConditions.visibilityOf(weUsername));
        wait.until(ExpectedConditions.visibilityOf(wePassword));
        wait.until(ExpectedConditions.visibilityOf(weSubmit));

        saveScreenshot(driver, "aftervisible-" + username);

        actions.moveToElement(wePassword).click().sendKeys(wePassword, password).build().perform();
        actions.moveToElement(weUsername).click().sendKeys(weUsername, username).build().perform();
        actions.click(weSubmit).build().perform();

        final WebElement weDialogBox = driver.findElement(By.className("dialog_box"));
        final WebElement weDialogBtnOk = driver.findElement(By.className("dialog_button"));

        wait.until(ExpectedConditions.visibilityOf(weDialogBox));

        actions.click(weDialogBtnOk).build().perform();
    }

    @Test(description = "Verity initial login, change password.", dataProvider = "credentials")
    public void firstLogin(final String username, final String password, final String newPassword)
            throws Exception {

        User.log.log(Level.INFO,
                "Username: " + username + " Password: " + password + " NewPassword: " + newPassword);

        driver.get(baseUrl + "/ui/#/login");

        final WebDriverWait wait = new WebDriverWait(driver, 10);
        final Actions actions = new Actions(driver);

        WebElement weUsername = driver.findElement(By.name("userName"));
        WebElement wePassword = driver.findElement(By.name("password"));
        WebElement weSubmit = driver.findElement(By.className("login_submit_button"));

        actions.moveToElement(weUsername).sendKeys(weUsername, username).moveToElement(wePassword)
                .sendKeys(wePassword, password).click(weSubmit).build().perform();

        WebElement weNewPassword = driver.findElement(By.name("newpassword"));
        WebElement weRePassword = driver.findElement(By.name("repassword"));
        final WebElement weCancel = driver.findElement(By.linkText("Cancel"));

        wait.until(ExpectedConditions.visibilityOf(weNewPassword));

        actions.moveToElement(weNewPassword).sendKeys(weNewPassword, newPassword).build().perform();

        actions.moveToElement(weRePassword).sendKeys(weRePassword, newPassword).build().perform();

        actions.click(weCancel).build().perform();

        weUsername = driver.findElement(By.name("userName"));
        wePassword = driver.findElement(By.name("password"));
        weSubmit = driver.findElement(By.className("login_submit_button"));

        wait.until(ExpectedConditions.visibilityOf(weUsername));

        actions.moveToElement(weUsername).sendKeys(weUsername, username).moveToElement(wePassword)
                .sendKeys(wePassword, password).click(weSubmit).build().perform();

        weNewPassword = driver.findElement(By.name("newpassword"));
        weRePassword = driver.findElement(By.name("repassword"));
        final WebElement weOk = driver.findElement(By.linkText("OK"));

        wait.until(ExpectedConditions.visibilityOf(weNewPassword));

        actions.moveToElement(weNewPassword).sendKeys(weNewPassword, newPassword).moveToElement(weRePassword)
                .sendKeys(weRePassword, newPassword).click(weOk).build().perform();

        final WebElement weManageArea = driver.findElement(By.className("manage_area_2"));

        wait.until(ExpectedConditions.visibilityOf(weManageArea));

        Assert.assertTrue(weManageArea.isDisplayed());
    }

    @Test(description = "Verify login with newly changed password.", dataProvider = "credentials")
    public void login(final String username, final String password) throws Exception {

        User.log.log(Level.INFO, "Username: " + username + " Password: " + password);

        driver.get(baseUrl + "/ui/#/login");
        new WebDriverWait(driver, 10);

        final WebElement weUsername = driver.findElement(By.name("userName"));
        final WebElement wePassword = driver.findElement(By.name("password"));
        final WebElement weSubmit = driver.findElement(By.className("login_submit_button"));

        final Actions action = new Actions(driver);

        action.moveToElement(weUsername).sendKeys(weUsername, username).moveToElement(wePassword)
                .sendKeys(wePassword, password).click(weSubmit).build().perform();

        final WebElement weManageArea = driver.findElement(By.className("manage_area_2"));

        Assert.assertTrue(weManageArea.isDisplayed());
    }

}