Skip to content
Snippets Groups Projects
ChangePasswordTest.java 6.54 KiB
package edu.ncsu.csc.itrust.selenium;

import java.util.List;

import org.junit.Before;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

import edu.ncsu.csc.itrust.enums.TransactionType;

public class ChangePasswordTest extends iTrustSeleniumTest {
	
    private WebDriver driver = null;
	
	@Before
	public void setUp() throws Exception {
	    // Create a new instance of the driver
	    driver = new HtmlUnitDriver();
		super.setUp();
		gen.clearAllTables();
		gen.standardData();
	}
	
	public void testChangePassword_Invalid_Length() throws Exception {
		//Patient1 logs into iTrust
		driver = (HtmlUnitDriver)login("1", "pw");
		assertTrue(driver.getTitle().contains("iTrust - Patient Home"));  
		
		//User goes to change password
		List<WebElement> links = driver.findElements(By.tagName("a"));

		int count = 0;

		for(int i = 0; i < links.size(); i++) {
			if(links.get(i).getAttribute("href").contains("changePassword"))
			{
				count = i;
				break;
			}
		}
		
		links.get(count).click();
		
		//User types in their current, new, and confirm passwords
        driver.findElement(By.name("oldPass")).sendKeys("pw");
        driver.findElement(By.name("newPass")).sendKeys("pas1");
        driver.findElement(By.name("confirmPass")).sendKeys("pas1");
        driver.findElement(By.name("oldPass")).submit();
		
		//User submits password change. Change logged
        assertTrue(driver.getPageSource().contains("Invalid password"));
		assertLogged(TransactionType.PASSWORD_CHANGE_FAILED, 1L, 0, "");
		
		//User logs out
		links = driver.findElements(By.tagName("a"));
		links.get(count - 1).click();	
		
		//User can log in with old password, but can't with new one
		try {
			driver = (HtmlUnitDriver)login("1", "pas1");
			fail("Should have thrown an exception");
		} catch (IllegalArgumentException d) {
			assertTrue(driver.getTitle().contains("iTrust - Login"));  
			driver = (HtmlUnitDriver)login("1", "pw");
			assertTrue(driver.getTitle().contains("iTrust - Patient Home"));  
		}
	}
	
	public void testChangePassword_Invalid_Characters() throws Exception {
		//Patient1 logs into iTrust
		driver = (HtmlUnitDriver)login("1", "pw");
		assertTrue(driver.getTitle().contains("iTrust - Patient Home"));  
		
		//User goes to change password
		List<WebElement> links = driver.findElements(By.tagName("a"));

		int count = 0;

		for(int i = 0; i < links.size(); i++) {
			if(links.get(i).getAttribute("href").contains("changePassword"))
			{
				count = i;
				break;
			}
		}
		
		links.get(count).click();

		//User types in their current, new, and confirm passwords
        driver.findElement(By.name("oldPass")).sendKeys("pw");
        driver.findElement(By.name("newPass")).sendKeys("password");
        driver.findElement(By.name("confirmPass")).sendKeys("password");
        driver.findElement(By.name("oldPass")).submit();
		
		//User submits password change. Change logged
        assertTrue(driver.getPageSource().contains("Invalid password"));
		assertLogged(TransactionType.PASSWORD_CHANGE_FAILED, 1L, 0, "");
		
		//User logs out
		links = driver.findElements(By.tagName("a"));
		links.get(count - 1).click();	
		
		//User can log in with old password, but can't with new one
		try {
			driver = (HtmlUnitDriver)login("1", "password");
			fail("Should have thrown an exception");
		} catch (IllegalArgumentException d) {
			assertTrue(driver.getTitle().contains("iTrust - Login"));  
			driver = (HtmlUnitDriver)login("1", "pw");
			assertTrue(driver.getTitle().contains("iTrust - Patient Home"));  
		}
	}

	public void testChangePassword_Failed_Confirmation() throws Exception {
		//Patient1 logs into iTrust
		driver = (HtmlUnitDriver)login("1", "pw");
		assertTrue(driver.getTitle().contains("iTrust - Patient Home"));  
		
		//User goes to change password
		List<WebElement> links = driver.findElements(By.tagName("a"));

		int count = 0;

		for(int i = 0; i < links.size(); i++) {
			if(links.get(i).getAttribute("href").contains("changePassword"))
			{
				count = i;
				break;
			}
		}
		
		links.get(count).click();
		
		//User types in their current, new, and confirm passwords
        driver.findElement(By.name("oldPass")).sendKeys("pw");
        driver.findElement(By.name("newPass")).sendKeys("pass1");
        driver.findElement(By.name("confirmPass")).sendKeys("pass2");
        driver.findElement(By.name("oldPass")).submit();
		
		//User submits password change. Change logged
        assertTrue(driver.getPageSource().contains("Invalid password"));
		assertLogged(TransactionType.PASSWORD_CHANGE_FAILED, 1L, 0, "");
		
		//User logs out
		links = driver.findElements(By.tagName("a"));
		links.get(count - 1).click();	
		
		//User can log in with old password, but can't with new one
		try {
			driver = (HtmlUnitDriver)login("1", "pas1");
			fail("Should have thrown an exception");
		} catch (IllegalArgumentException d) {
			assertTrue(driver.getTitle().contains("iTrust - Login"));  
			driver = (HtmlUnitDriver)login("1", "pw");
			assertTrue(driver.getTitle().contains("iTrust - Patient Home")); 
		}
	}

	public void testChangePassword_Invalid_Password() throws Exception {
		//Patient1 logs into iTrust
		driver = (HtmlUnitDriver)login("1", "pw");
		assertTrue(driver.getTitle().contains("iTrust - Patient Home"));  
		
		//User goes to change password
		List<WebElement> links = driver.findElements(By.tagName("a"));

		int count = 0;

		for(int i = 0; i < links.size(); i++) {
			if(links.get(i).getAttribute("href").contains("changePassword"))
			{
				count = i;
				break;
			}
		}
		
		links.get(count).click();

		//User types in their current, new, and confirm passwords
        driver.findElement(By.name("oldPass")).sendKeys("password");
        driver.findElement(By.name("newPass")).sendKeys("pass1");
        driver.findElement(By.name("confirmPass")).sendKeys("pass1");
        driver.findElement(By.name("oldPass")).submit();
		
		//User submits password change. Change logged
        assertTrue(driver.getPageSource().contains("Invalid password"));
		assertLogged(TransactionType.PASSWORD_CHANGE_FAILED, 1L, 0, "");
		
		//User logs out
		links = driver.findElements(By.tagName("a"));
		links.get(count - 1).click();	
		
		//User can log in with old password, but can't with new one
		try {
			driver = (HtmlUnitDriver)login("1", "pass1");
			fail("Should have thrown an exception");
		} catch (IllegalArgumentException d) {
			assertTrue(driver.getTitle().contains("iTrust - Login"));  
			driver = (HtmlUnitDriver)login("1", "pw");
			assertTrue(driver.getTitle().contains("iTrust - Patient Home"));
		}
	}

}