/** * */ package org.jboss.test.faces.htmlunit; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.Arrays; import java.util.Collection; import javax.servlet.http.HttpSession; import org.jboss.test.faces.ApplicationServer; import org.jboss.test.faces.jetty.JettyServer; import org.jboss.test.faces.staging.StagingServer; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import org.w3c.dom.Element; import com.gargoylesoftware.htmlunit.html.HtmlElement; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlInput; import com.gargoylesoftware.htmlunit.html.HtmlPage; /** * @author asmirnov * */ @RunWith(Parameterized.class) public class FacesServerTest { private final Class<? extends ApplicationServer> applicationServerClass; private HtmlUnitEnvironment environment; public FacesServerTest(Class<? extends ApplicationServer> applicationServerClass) { super(); this.applicationServerClass = applicationServerClass; } @Parameters public static Collection<Class<?>[]> serverClasses() { return Arrays.asList(new Class<?>[][] {{ JettyServer.class }, { StagingServer.class }}); } /** * @throws java.lang.Exception */ @Before public void setUp() throws Exception { System.setProperty(ApplicationServer.APPLICATION_SERVER_PROPERTY, applicationServerClass.getName()); this.environment = new HtmlUnitEnvironment(applicationServerClass.newInstance()); this.environment.withWebRoot("org/jboss/test/hello.xhtml").start(); } /** * @throws java.lang.Exception */ @After public void tearDown() throws Exception { this.environment.release(); this.environment = null; System.clearProperty(ApplicationServer.APPLICATION_SERVER_PROPERTY); } /** * Test method for * {@link org.jboss.test.faces.staging.StagingServer#getConnection(java.net.URL)}. * * @throws Exception */ @Test public void testHelloFacelets() throws Exception { HtmlPage page = environment.getPage("/hello.jsf"); System.out.println(page.asXml()); HtmlElement submitElement = page.getElementById("helloForm:submit"); HtmlForm htmlForm = page.getFormByName("helloForm"); htmlForm.getInputByName("helloForm:username"); assertNotNull(htmlForm); HtmlInput input = htmlForm.getInputByName("helloForm:username"); assertNotNull(input); input.setValueAttribute("foo"); HtmlPage responsePage = submitElement.click(); assertNotNull(responsePage); System.out.println(responsePage.asXml()); HttpSession session = environment.getServer().getSession(false); assertNotNull(session); HelloBean bean = (HelloBean) session.getAttribute("HelloBean"); assertNotNull(bean); assertEquals("foo", bean.getName()); Element span = responsePage.getElementById("responseform:userLabel"); assertNotNull(span); assertEquals("foo", span.getTextContent().trim()); } }