package springmvc.controller; import com.thoughtworks.selenium.DefaultSelenium; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsEqual.equalTo; import static org.hamcrest.core.StringContains.containsString; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Optional; import org.testng.annotations.Parameters; import org.testng.annotations.Test; /** * * @author Kent Yeh */ @Test(groups = {"integrate"}) public class TestIntegration { private static Logger logger = LogManager.getLogger(TestIntegration.class); protected DefaultSelenium selenium = null; private int httpPort = 80; private String contextPath = ""; @BeforeClass @Parameters({"browser", "http.port","contextPath"}) public void setup(@Optional("iexplore") String browser, @Optional("http.port") int httpPort, @Optional("contextPath") String contextPath) { logger.debug("Selenium client starting with {} ...", browser); this.httpPort = httpPort; logger.debug("http port is {}", httpPort); selenium = new DefaultSelenium("localhost", 4444, "*" + browser, String.format("http://localhost:%d/%s/index", httpPort, contextPath)); this.contextPath = contextPath; selenium.start(); selenium.setTimeout("600000"); } @AfterClass public void tearDown() { if (selenium != null) { selenium.stop(); logger.debug("Selenium client stoped"); } } @Test public void logout() { String url=String.format("http://localhost:%d/%s/j_spring_security_logout", httpPort,contextPath); logger.debug("Integration Test: logout with {}",url); selenium.open(url); selenium.waitForPageToLoad("300000"); logger.debug("logout redirect to {}", selenium.getLocation()); assertThat("logout failed ", selenium.getLocation(), is(containsString("/index"))); } @Test public void test404() { String url = String.format("http://localhost:%d/%s/unknownpath/404.html", httpPort,contextPath); logger.debug("Integration Test: test404 with {}",url); selenium.open(url); selenium.waitForPageToLoad("30000"); assertThat("Failed to show error page", selenium.getTitle(), is(equalTo("Error Prone"))); } @Test public void testMyInfo() { logger.debug("Integration Test: testMyinfo"); selenium.open(String.format("http://localhost:%d/%s/user/myinfo", httpPort,contextPath)); selenium.waitForPageToLoad("60000"); selenium.type("id=userid", "admin"); selenium.type("id=password", "admin"); selenium.click("css=input[type=\"submit\"]"); selenium.waitForPageToLoad("60000"); assertThat("Fail to get My Info", selenium.getText("//h1"), is(containsString("admin"))); } }