package org.javaee7.servlet.security.form.based; import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput; import java.io.File; import java.io.IOException; import java.net.URL; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.Test; import static org.junit.Assert.*; import org.junit.Before; import org.junit.runner.RunWith; /** * @author Arun Gupta */ @RunWith(Arquillian.class) public class FormTest { private static final String WEBAPP_SRC = "src/main/webapp"; @ArquillianResource private URL base; HtmlForm loginForm; @Deployment(testable = false) public static WebArchive createDeployment() { return ShrinkWrap.create(WebArchive.class) .addAsWebResource(new File(WEBAPP_SRC, "index.jsp")) .addAsWebResource(new File(WEBAPP_SRC, "loginerror.jsp")) .addAsWebResource(new File(WEBAPP_SRC, "loginform.jsp")) .addAsWebInfResource(new File(WEBAPP_SRC + "/WEB-INF", "web.xml")) .addAsWebInfResource(new File(WEBAPP_SRC + "/WEB-INF", "glassfish-web.xml")); } @Before public void setup() throws IOException { WebClient webClient = new WebClient(); HtmlPage page = webClient.getPage(base + "/index.jsp"); loginForm = page.getForms().get(0); } @Test public void testGetWithCorrectCredentials() throws Exception { loginForm.getInputByName("j_username").setValueAttribute("u1"); loginForm.getInputByName("j_password").setValueAttribute("p1"); HtmlSubmitInput submitButton = loginForm.getInputByName("submitButton"); HtmlPage page2 = submitButton.click(); assertEquals("Form-based Security - Success", page2.getTitleText()); } @Test public void testGetWithIncorrectCredentials() throws Exception { loginForm.getInputByName("j_username").setValueAttribute("random"); loginForm.getInputByName("j_password").setValueAttribute("random"); HtmlSubmitInput submitButton = loginForm.getInputByName("submitButton"); HtmlPage page2 = submitButton.click(); assertEquals("Form-Based Login Error Page", page2.getTitleText()); } }