package org.javaee7.servlet.programmatic.login;
import static org.javaee7.ServerOperations.addUsersToContainerIdentityStore;
import static org.jboss.shrinkwrap.api.ShrinkWrap.create;
import static org.junit.Assert.assertTrue;
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.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.xml.sax.SAXException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
/**
* @author Arun Gupta
*/
@RunWith(Arquillian.class)
public class LoginServletTest {
private static final String WEBAPP_SRC = "src/main/webapp";
@ArquillianResource
private URL base;
@Deployment(testable = false)
public static WebArchive createDeployment() {
addUsersToContainerIdentityStore();
return create(WebArchive.class).
addClass(LoginServlet.class).
addAsWebInfResource((new File(WEBAPP_SRC + "/WEB-INF", "web.xml")));
}
@Test
public void testUnauthenticatedRequest() throws IOException, SAXException {
WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage(base + "/LoginServlet");
String responseText = page.asText();
System.out.println("testUnauthenticatedRequest:\n" + responseText + "\n");
assertTrue(responseText.contains("isUserInRole?false"));
assertTrue(responseText.contains("getRemoteUser?null"));
assertTrue(responseText.contains("getUserPrincipal?null"));
assertTrue(responseText.contains("getAuthType?null"));
}
@Test
public void testAuthenticatedRequest() throws IOException, SAXException {
WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage(base + "/LoginServlet?user=u1&password=p1");
String responseText = page.asText();
System.out.println("testAuthenticatedRequest:\n" + responseText + "\n");
assertTrue(responseText.contains("isUserInRole?true"));
assertTrue(responseText.contains("getRemoteUser?u1"));
assertTrue(responseText.contains("getUserPrincipal?u1"));
assertTrue(responseText.contains("getAuthType?BASIC"));
}
}