package edu.ncsu.csc.itrust.selenium; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Test; 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; import edu.ncsu.csc.itrust.selenium.iTrustSeleniumTest; public class ViewAccessLogTest extends iTrustSeleniumTest { private WebDriver driver; private StringBuffer verificationErrors = new StringBuffer(); @Override protected void setUp() throws Exception { driver = new HtmlUnitDriver(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); super.setUp(); gen.clearAllTables(); gen.uap1(); gen.patient2(); gen.patient1(); gen.patient4(); gen.hcp0(); gen.hcp3(); gen.er4(); } @Test public void testViewaccesslog1() throws Exception { //This logs us into iTrust and returns the HtmlUnitDriver for use in this case HtmlUnitDriver driver = (HtmlUnitDriver)login("9000000000", "pw"); assertEquals("iTrust - HCP Home", driver.getTitle()); assertLogged(TransactionType.HOME_VIEW, 9000000000L, 0L, ""); driver.findElement(By.xpath("(//button[@type='button'])[2]")).click(); driver.findElement(By.xpath("(//button[@type='button'])[2]")).click(); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.cssSelector("h2.panel-title")).click(); driver.findElement(By.linkText("PHR Information")).click(); assertEquals("iTrust - Please Select a Patient", driver.getTitle()); driver.findElement(By.id("searchBox")).clear(); driver.findElement(By.name("UID_PATIENTID")).sendKeys("2"); driver.findElement(By.xpath("//input[@value='2']")).submit(); assertEquals("iTrust - Edit Personal Health Record", driver.getTitle()); assertLogged(TransactionType.PATIENT_HEALTH_INFORMATION_VIEW, 9000000000L, 2L, ""); //This logs us into iTrust and returns the HtmlUnitDriver for use in this case driver = (HtmlUnitDriver)login("2", "pw"); assertEquals("iTrust - Patient Home", driver.getTitle()); assertLogged(TransactionType.HOME_VIEW, 2L, 0L, ""); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.xpath("//div[@id='iTrustMenu']/div/div[2]/div/h2")).click(); driver.findElement(By.linkText("Access Log")).click(); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = new java.util.Date(); assertTrue(driver.findElement(By.cssSelector("td")).getText().contains(dateFormat.format(date))); assertEquals("Kelly Doctor", driver.findElement(By.linkText("Kelly Doctor")).getText()); assertEquals("View personal health information", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[2]/td[4]")).getText()); assertLogged(TransactionType.ACCESS_LOG_VIEW, 2L, 0L, ""); } @Test public void testViewaccesslog2() throws Exception { // clear operational profile gen.transactionLog(); //This logs us into iTrust and returns the HtmlUnitDriver for use in this case HtmlUnitDriver driver = (HtmlUnitDriver)login("2", "pw"); assertEquals("iTrust - Patient Home", driver.getTitle()); assertLogged(TransactionType.HOME_VIEW, 2L, 0L, ""); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.xpath("//div[@id='iTrustMenu']/div/div[2]/div/h2")).click(); driver.findElement(By.linkText("Access Log")).click(); assertEquals("iTrust - View My Access Log", driver.getTitle()); driver.findElement(By.name("startDate")).clear(); driver.findElement(By.name("startDate")).sendKeys("06/22/2000"); driver.findElement(By.name("endDate")).clear(); driver.findElement(By.name("endDate")).sendKeys("06/23/2000"); driver.findElement(By.name("submit")).click(); assertEquals("iTrust - View My Access Log", driver.getTitle()); assertLogged(TransactionType.ACCESS_LOG_VIEW, 2L, 0L, ""); } @Test public void testViewAccessLog3() throws Exception { // clear operational profile gen.transactionLog(); //This logs us into iTrust and returns the HtmlUnitDriver for use in this case HtmlUnitDriver driver = (HtmlUnitDriver)login("1", "pw"); assertEquals("iTrust - Patient Home", driver.getTitle()); assertLogged(TransactionType.HOME_VIEW, 1L, 0L, ""); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.xpath("//div[@id='iTrustMenu']/div/div[2]/div/h2")).click(); driver.findElement(By.linkText("Access Log")).click(); assertEquals("iTrust - View My Access Log", driver.getTitle()); assertLogged(TransactionType.ACCESS_LOG_VIEW, 1L, 0L, ""); } @Test public void testViewAccessLogByDate() throws Exception { gen.transactionLog2(); //This logs us into iTrust and returns the HtmlUnitDriver for use in this case HtmlUnitDriver driver = (HtmlUnitDriver)login("2", "pw"); assertEquals("iTrust - Patient Home", driver.getTitle()); assertLogged(TransactionType.HOME_VIEW, 2L, 0L, ""); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.xpath("//div[@id='iTrustMenu']/div/div[2]/div/h2")).click(); driver.findElement(By.linkText("Access Log")).click(); assertEquals("iTrust - View My Access Log", driver.getTitle()); driver.findElement(By.name("startDate")).clear(); driver.findElement(By.name("startDate")).sendKeys("03/01/2008"); driver.findElement(By.name("endDate")).clear(); driver.findElement(By.name("endDate")).sendKeys("12/01/2008"); driver.findElement(By.name("submit")).click(); //The rest of the original test was commented out } @Test public void testViewAccessLogByRole() throws Exception { gen.transactionLog3(); //This logs us into iTrust and returns the HtmlUnitDriver for use in this case HtmlUnitDriver driver = (HtmlUnitDriver)login("1", "pw"); driver.setJavascriptEnabled(true); assertEquals("iTrust - Patient Home", driver.getTitle()); assertLogged(TransactionType.HOME_VIEW, 1L, 0L, ""); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.xpath("//div[@id='iTrustMenu']/div/div[2]/div/h2")).click(); driver.findElement(By.linkText("Access Log")).click(); assertEquals("iTrust - View My Access Log", driver.getTitle()); driver.findElement(By.name("startDate")).clear(); driver.findElement(By.name("startDate")).sendKeys("02/01/2008"); driver.findElement(By.name("endDate")).clear(); driver.findElement(By.name("endDate")).sendKeys("09/22/2009"); driver.findElement(By.name("submit")).click(); driver.findElement(By.linkText("Role")).click(); driver.findElement(By.name("submit")).click(); assertEquals("LHCP", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[2]/td[3]")).getText()); assertEquals("Emergency Responder", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[3]/td[3]")).getText()); assertEquals("Personal Health Representative", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[4]/td[3]")).getText()); assertEquals("UAP", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[5]/td[3]")).getText()); assertEquals("LHCP", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[6]/td[3]")).getText()); assertEquals("LHCP", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[7]/td[3]")).getText()); assertLogged(TransactionType.ACCESS_LOG_VIEW, 1L, 0L, ""); } @Test public void testViewAccessLogRepresentativeView() throws Exception { gen.clearAllTables(); gen.standardData(); //This logs us into iTrust and returns the HtmlUnitDriver for use in this case HtmlUnitDriver driver = (HtmlUnitDriver)login("1", "pw"); assertEquals("iTrust - Patient Home", driver.getTitle()); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.xpath("//div[@id='iTrustMenu']/div/div[2]/div/h2")).click(); driver.findElement(By.linkText("Access Log")).click(); //new Select(driver.findElement(By.id("logMIDSelectMenu"))).selectByVisibleText("Dare Devil"); driver.findElement(By.name("submit")).click(); //There is no way to read all text on the page through Selenium assertEquals("iTrust - View My Access Log", driver.getTitle()); assertEquals("Kelly Doctor", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[2]/td[2]")).getText()); assertEquals("Justin Time", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[3]/td[2]")).getText()); assertEquals("Andy Programmer", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[4]/td[2]")).getText()); driver.findElement(By.linkText("Role")).click(); driver.findElement(By.name("submit")).click(); assertEquals("iTrust - View My Access Log", driver.getTitle()); assertEquals("Kelly Doctor", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[2]/td[2]")).getText()); assertEquals("Justin Time", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[3]/td[2]")).getText()); assertEquals("Andy Programmer", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[4]/td[2]")).getText()); } @Test public void testViewAccessLogNonRepresentativeView1() throws Exception { gen.clearAllTables(); gen.standardData(); //This logs us into iTrust and returns the HtmlUnitDriver for use in this case HtmlUnitDriver driver = (HtmlUnitDriver)login("1", "pw"); assertEquals("iTrust - Patient Home", driver.getTitle()); //Check the text currently in the drop down box to ensure it is not "Devil's Advocate" driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.xpath("//div[@id='iTrustMenu']/div/div[2]/div/h2")).click(); driver.findElement(By.linkText("Access Log")).click(); assertEquals("iTrust - View My Access Log", driver.getTitle()); assertEquals("Random Person", driver.findElement(By.id("logMIDSelectMenu")).getText()); } @Test public void testViewAccessLogNonRepresentativeView2() throws Exception { gen.clearAllTables(); gen.standardData(); //This logs us into iTrust and returns the HtmlUnitDriver for use in this case HtmlUnitDriver driver = (HtmlUnitDriver)login("9000000007", "pw"); assertEquals("iTrust - HCP Home", driver.getTitle()); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.cssSelector("h2.panel-title")).click(); driver.findElement(By.linkText("Patient Information")).click(); assertEquals("iTrust - Please Select a Patient", driver.getTitle()); driver.findElement(By.id("searchBox")).clear(); driver.findElement(By.name("UID_PATIENTID")).sendKeys("5"); driver.findElement(By.xpath("//input[@value='5']")).submit(); assertEquals("iTrust - Edit Patient", driver.getTitle()); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.cssSelector("h2.panel-title")).click(); driver.findElement(By.linkText("Basic Health Information")).click(); assertEquals("iTrust - Edit Basic Health Record", driver.getTitle()); driver.findElement(By.xpath("(//button[@type='button'])[2]")).click(); //now logout WebElement logout = driver.findElements(By.tagName("li")).get(1); logout.findElement(By.tagName("a")).click(); assertEquals("iTrust - Login", driver.getTitle()); //This logs us into iTrust and returns the HtmlUnitDriver for use in this case driver = (HtmlUnitDriver)login("9000000000", "pw"); assertEquals("iTrust - HCP Home", driver.getTitle()); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.cssSelector("div.panel-heading")).click(); driver.findElement(By.linkText("Patient Information")).click(); assertEquals("iTrust - Please Select a Patient", driver.getTitle()); driver.findElement(By.id("searchBox")).clear(); driver.findElement(By.name("UID_PATIENTID")).sendKeys("5"); driver.findElement(By.xpath("//input[@value='5']")).submit(); assertEquals("iTrust - Edit Patient", driver.getTitle()); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.cssSelector("h2.panel-title")).click(); driver.findElement(By.linkText("PHR Information")).click(); assertEquals("iTrust - Edit Personal Health Record", driver.getTitle()); driver.findElement(By.xpath("(//button[@type='button'])[2]")).click(); //logout logout = driver.findElements(By.tagName("li")).get(1); logout.findElement(By.tagName("a")).click(); assertEquals("iTrust - Login", driver.getTitle()); //This logs us into iTrust and returns the HtmlUnitDriver for use in this case driver = (HtmlUnitDriver)login("9000000000", "pw"); assertEquals("iTrust - HCP Home", driver.getTitle()); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.cssSelector("h2.panel-title")).click(); driver.findElement(By.linkText("Patient Information")).click(); driver.findElement(By.id("searchBox")).clear(); driver.findElement(By.name("UID_PATIENTID")).sendKeys("5"); driver.findElement(By.xpath("//input[@value='5']")).submit(); assertEquals("iTrust - Edit Patient", driver.getTitle()); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.cssSelector("h2.panel-title")).click(); driver.findElement(By.linkText("Basic Health Information")).click(); assertEquals("iTrust - Edit Basic Health Record", driver.getTitle()); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.cssSelector("h2.panel-title")).click(); driver.findElement(By.linkText("Patient Information")).click(); assertEquals("iTrust - Edit Patient", driver.getTitle()); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.cssSelector("h2.panel-title")).click(); driver.findElement(By.linkText("PHR Information")).click(); assertEquals("iTrust - Edit Personal Health Record", driver.getTitle()); driver.findElement(By.xpath("(//button[@type='button'])[2]")).click(); logout = driver.findElements(By.tagName("li")).get(1); logout.findElement(By.tagName("a")).click(); assertEquals("iTrust - Login", driver.getTitle()); //This logs us into iTrust and returns the HtmlUnitDriver for use in this case driver = (HtmlUnitDriver)login("5", "pw"); assertEquals("iTrust - Patient Home", driver.getTitle()); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.xpath("//div[@id='iTrustMenu']/div/div[2]/div/h2")).click(); driver.findElement(By.linkText("Access Log")).click(); assertEquals("iTrust - View My Access Log", driver.getTitle()); assertEquals("Beaker Beaker", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[2]/td[2]")).getText()); assertEquals("Beaker Beaker", driver.findElement(By.xpath("//div[@id='iTrustContent']/table/tbody/tr[3]/td[2]")).getText()); } public void testViewAccessLogBadDateHandling() throws Exception { gen.clearAllTables(); gen.standardData(); //This logs us into iTrust and returns the HtmlUnitDriver for use in this case HtmlUnitDriver driver = (HtmlUnitDriver)login("23", "pw"); assertEquals("iTrust - Patient Home", driver.getTitle()); driver.findElement(By.id("toggleMenu")).click(); driver.findElement(By.xpath("//div[@id='iTrustMenu']/div/div[2]/div/h2")).click(); driver.findElement(By.linkText("Access Log")).click(); assertEquals("iTrust - View My Access Log", driver.getTitle()); driver.findElement(By.name("startDate")).clear(); driver.findElement(By.name("startDate")).sendKeys("06/22/2007"); driver.findElement(By.name("endDate")).clear(); driver.findElement(By.name("endDate")).sendKeys("06/21/2007"); driver.findElement(By.name("submit")).click(); assertEquals("iTrust - View My Access Log", driver.getTitle()); assertEquals("Information not valid", driver.findElement(By.cssSelector("#iTrustContent > h2")).getText()); assertEquals("Start date must be before end date!", driver.findElement(By.cssSelector("div.errorList")).getText()); driver.findElement(By.name("startDate")).clear(); driver.findElement(By.name("startDate")).sendKeys("June 22nd, 2007"); driver.findElement(By.name("endDate")).clear(); driver.findElement(By.name("endDate")).sendKeys("6/23/2007"); driver.findElement(By.name("submit")).click(); assertEquals("iTrust - View My Access Log", driver.getTitle()); assertEquals("Information not valid", driver.findElement(By.cssSelector("#iTrustContent > h2")).getText()); assertEquals("Enter dates in MM/dd/yyyy", driver.findElement(By.cssSelector("div.errorList")).getText()); } @After public void tearDown() throws Exception { driver.quit(); String verificationErrorString = verificationErrors.toString(); if (!"".equals(verificationErrorString)) { fail(verificationErrorString); } } }