//////////////////////////////////////////////////////////////////////// // // Copyright (c) 2009-2013 Denim Group, Ltd. // // The contents of this file are subject to the Mozilla Public 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.mozilla.org/MPL/ // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the // License for the specific language governing rights and limitations // under the License. // // The Original Code is ThreadFix. // // The Initial Developer of the Original Code is Denim Group, Ltd. // Portions created by Denim Group, Ltd. are Copyright (C) // Denim Group, Ltd. All Rights Reserved. // // Contributor(s): Denim Group, Ltd. // //////////////////////////////////////////////////////////////////////// package com.denimgroup.threadfix.selenium.tests; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.remote.RemoteWebDriver; import com.denimgroup.threadfix.data.entities.Organization; import com.denimgroup.threadfix.selenium.pages.LoginPage; import com.denimgroup.threadfix.selenium.pages.TeamDetailPage; import com.denimgroup.threadfix.selenium.pages.TeamIndexPage; public class TeamTests extends BaseTest { public TeamTests(String browser) { super(browser); // TODO Auto-generated constructor stub } private RemoteWebDriver driver; private static LoginPage loginPage; private TeamIndexPage teamIndexPage; private TeamDetailPage teamDetailPage; @Before public void init() { super.init(); driver = (RemoteWebDriver)super.getDriver(); loginPage = LoginPage.open(driver); } @Test public void testCreateTeam(){ String newOrgName = "testCreateOrganization"; teamIndexPage = loginPage.login("user", "password").clickOrganizationHeaderLink(); assertFalse("The organization was already present.", teamIndexPage.isTeamPresent(newOrgName)); teamIndexPage = teamIndexPage.clickAddTeamButton() .setTeamName(newOrgName) .addNewTeam(); assertTrue("The validation is not present",teamIndexPage.isCreateValidtionPresent(newOrgName)); assertTrue("The organization was not present in the table.", teamIndexPage.isTeamPresent(newOrgName)); teamIndexPage = teamIndexPage.clickViewTeamLink(newOrgName) .clickDeleteButton(); assertFalse("The organization was still present after attempted deletion.", teamIndexPage.isTeamPresent(newOrgName)); loginPage = teamIndexPage.logout(); } @Test public void testCreateOrganizationBoundaries(){ String emptyString = ""; String whiteSpaceString = " "; String emptyInputError = "This field cannot be blank"; String longInput = "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; // Test empty input teamIndexPage = loginPage.login("user", "password") .clickOrganizationHeaderLink() .clickAddTeamButton() .setTeamName(emptyString) .addNewTeamInvalid(); assertTrue("The correct error text was not present", emptyInputError.equals(teamIndexPage.getNameErrorMessage())); // Test whitespace input teamIndexPage = teamIndexPage.setTeamName(whiteSpaceString) .addNewTeamInvalid(); assertTrue("The correct error text was not present", emptyInputError.equals(teamIndexPage.getNameErrorMessage())); // Test browser length limit teamIndexPage = teamIndexPage.setTeamName(longInput) .addNewTeam(); String orgName ="eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; assertTrue("The organization name was not cropped correctly.", teamIndexPage.isTeamPresent(orgName)); // Test name duplication checking teamIndexPage = teamIndexPage.clickOrganizationHeaderLink() .clickAddTeamButton() .setTeamName(orgName) .addNewTeamInvalid(); assertTrue(teamIndexPage.getNameErrorMessage().equals("That name is already taken.")); // Delete and logout loginPage = teamIndexPage.clickOrganizationHeaderLink() .clickViewTeamLink(orgName) .clickDeleteButton() .logout(); } @Test public void testEditOrganization(){ String newOrgName = "testEditOrganization"; String editedOrgName = "testEditOrganization - edited"; teamIndexPage = loginPage.login("user", "password").clickOrganizationHeaderLink(); assertFalse("The organization was already present.", teamIndexPage.isTeamPresent(newOrgName)); // Save an organization teamIndexPage = teamIndexPage.clickAddTeamButton() .setTeamName(newOrgName) .addNewTeam(); assertTrue("Organization Page did not save the name correctly.", teamIndexPage.isTeamPresent(newOrgName)); // Edit that organization teamDetailPage = teamIndexPage.clickOrganizationHeaderLink() .clickViewTeamLink(newOrgName) .clickEditOrganizationLink() .setNameInput(editedOrgName) .clickUpdateButtonValid(); assertTrue("Editing did not change the name.", teamDetailPage.getOrgName().contains(editedOrgName)); teamIndexPage = teamDetailPage.clickOrganizationHeaderLink(); assertTrue("Organization Page did not save the name correctly.", teamIndexPage.isTeamPresent(editedOrgName)); teamIndexPage = teamIndexPage.clickViewTeamLink(editedOrgName) .clickDeleteButton(); assertFalse("The organization was still present after attempted deletion.", teamIndexPage.isTeamPresent(editedOrgName)); loginPage = teamIndexPage.logout(); } @Test public void testEditOrganizationBoundaries(){ String orgName = "testEditOrganizationBoundaries"; String orgNameDuplicateTest = "testEditOrganizationBoundaries2"; String emptyString = ""; String whiteSpaceString = " "; String emptyInputError = "This field cannot be blank"; String longInput = "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; teamDetailPage = loginPage.login("user", "password").clickOrganizationHeaderLink() .clickAddTeamButton() .setTeamName(orgName) .addNewTeam() .clickAddTeamButton() .setTeamName(orgNameDuplicateTest) .addNewTeam() .clickViewTeamLink(orgName); // Test edit with no changes teamDetailPage = teamDetailPage.clickEditOrganizationLink().clickUpdateButtonValid(); assertTrue("Organization Page did not save the name correctly.",teamDetailPage.getOrgName().contains(orgName)); // Test empty input teamDetailPage = teamDetailPage.clickEditOrganizationLink() .setNameInput(emptyString) .clickUpdateButtonInvalid(); assertTrue("The correct error text was not present", emptyInputError.equals(teamDetailPage.getErrorText())); // Test whitespace input teamDetailPage = teamDetailPage.setNameInput(whiteSpaceString) .clickUpdateButtonInvalid(); assertTrue("The correct error text was not present", emptyInputError.equals(teamDetailPage.getErrorText())); // Test browser length limit teamDetailPage = teamDetailPage.setNameInput(longInput) .clickUpdateButtonValid(); orgName = longInput.substring(0, Organization.NAME_LENGTH+1); assertFalse("The organization name was not cropped correctly.", teamDetailPage.getOrgName().contains(orgName)); orgName = longInput.substring(0,Organization.NAME_LENGTH); // Test name duplication checking teamDetailPage = teamDetailPage.clickEditOrganizationLink() .setNameInput(orgNameDuplicateTest) .clickUpdateButtonInvalid(); assertTrue(teamDetailPage.getErrorText().equals("That name is already taken.")); // Delete and logout loginPage = teamDetailPage.clickOrganizationHeaderLink() .clickViewTeamLink(orgName) .clickDeleteButton() .clickOrganizationHeaderLink() .clickViewTeamLink(orgNameDuplicateTest) .clickDeleteButton() .logout(); } }