From 2dbf503c356c147963aff22372dbcb1e07c187cd Mon Sep 17 00:00:00 2001 From: lusabo Date: Wed, 25 Sep 2013 18:20:12 -0300 Subject: [PATCH] IN PROGRESS - issue FWK-119: Testes da extensão Servlet --- impl/extension/servlet/src/test/java/security/authentication/form/HelperServlet.java | 1 - impl/extension/servlet/src/test/java/security/unauthentication/form/HelperServletUnauthenticationFail.java | 37 +++++++++++++++++++++++++++++++++++++ impl/extension/servlet/src/test/java/security/unauthentication/form/HelperServletUnauthenticationSuccess.java | 39 +++++++++++++++++++++++++++++++++++++++ impl/extension/servlet/src/test/java/security/unauthentication/form/ServletAuthenticatorTest.java | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ impl/extension/servlet/src/test/resources/security/unauthentication/form/web.xml | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 impl/extension/servlet/src/test/java/security/unauthentication/form/HelperServletUnauthenticationFail.java create mode 100644 impl/extension/servlet/src/test/java/security/unauthentication/form/HelperServletUnauthenticationSuccess.java create mode 100644 impl/extension/servlet/src/test/java/security/unauthentication/form/ServletAuthenticatorTest.java create mode 100644 impl/extension/servlet/src/test/resources/security/unauthentication/form/web.xml diff --git a/impl/extension/servlet/src/test/java/security/authentication/form/HelperServlet.java b/impl/extension/servlet/src/test/java/security/authentication/form/HelperServlet.java index f347f31..6def462 100644 --- a/impl/extension/servlet/src/test/java/security/authentication/form/HelperServlet.java +++ b/impl/extension/servlet/src/test/java/security/authentication/form/HelperServlet.java @@ -16,7 +16,6 @@ import br.gov.frameworkdemoiselle.security.Credentials; import br.gov.frameworkdemoiselle.security.SecurityContext; import br.gov.frameworkdemoiselle.util.Beans; -@WebServlet("/login") public class HelperServlet extends HttpServlet { private static final long serialVersionUID = 1L; diff --git a/impl/extension/servlet/src/test/java/security/unauthentication/form/HelperServletUnauthenticationFail.java b/impl/extension/servlet/src/test/java/security/unauthentication/form/HelperServletUnauthenticationFail.java new file mode 100644 index 0000000..df8ad7d --- /dev/null +++ b/impl/extension/servlet/src/test/java/security/unauthentication/form/HelperServletUnauthenticationFail.java @@ -0,0 +1,37 @@ +package security.unauthentication.form; + +import static org.apache.http.HttpStatus.SC_FORBIDDEN; +import static org.apache.http.HttpStatus.SC_OK; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import br.gov.frameworkdemoiselle.security.AuthenticationException; +import br.gov.frameworkdemoiselle.security.Credentials; +import br.gov.frameworkdemoiselle.security.SecurityContext; +import br.gov.frameworkdemoiselle.util.Beans; + +public class HelperServletUnauthenticationFail extends HttpServlet { + + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String result = request.getHeader("Authorization"); + result = (result == null ? request.getHeader("authorization") : result); + + Credentials credentials = Beans.getReference(Credentials.class); + credentials.setUsername(request.getParameter("username")); + credentials.setPassword(request.getParameter("password")); + try { + Beans.getReference(SecurityContext.class).logout(); + response.setStatus(SC_OK); + } catch (AuthenticationException e) { + response.setStatus(SC_FORBIDDEN); + } + } +} diff --git a/impl/extension/servlet/src/test/java/security/unauthentication/form/HelperServletUnauthenticationSuccess.java b/impl/extension/servlet/src/test/java/security/unauthentication/form/HelperServletUnauthenticationSuccess.java new file mode 100644 index 0000000..14c886f --- /dev/null +++ b/impl/extension/servlet/src/test/java/security/unauthentication/form/HelperServletUnauthenticationSuccess.java @@ -0,0 +1,39 @@ +package security.unauthentication.form; + +import static org.apache.http.HttpStatus.SC_FORBIDDEN; +import static org.apache.http.HttpStatus.SC_OK; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import br.gov.frameworkdemoiselle.security.AuthenticationException; +import br.gov.frameworkdemoiselle.security.Credentials; +import br.gov.frameworkdemoiselle.security.SecurityContext; +import br.gov.frameworkdemoiselle.util.Beans; + +public class HelperServletUnauthenticationSuccess extends HttpServlet { + + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String result = request.getHeader("Authorization"); + result = (result == null ? request.getHeader("authorization") : result); + + Credentials credentials = Beans.getReference(Credentials.class); + credentials.setUsername(request.getParameter("username")); + credentials.setPassword(request.getParameter("password")); + try { + Beans.getReference(SecurityContext.class).login(); + Beans.getReference(SecurityContext.class).logout(); + response.setStatus(SC_OK); + } catch (AuthenticationException e) { + response.setStatus(SC_FORBIDDEN); + } + } +} diff --git a/impl/extension/servlet/src/test/java/security/unauthentication/form/ServletAuthenticatorTest.java b/impl/extension/servlet/src/test/java/security/unauthentication/form/ServletAuthenticatorTest.java new file mode 100644 index 0000000..2867f55 --- /dev/null +++ b/impl/extension/servlet/src/test/java/security/unauthentication/form/ServletAuthenticatorTest.java @@ -0,0 +1,68 @@ +package security.unauthentication.form; + +import static org.apache.http.HttpStatus.SC_FORBIDDEN; +import static org.apache.http.HttpStatus.SC_OK; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.net.URL; + +import org.apache.http.HttpResponse; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.impl.client.HttpClientBuilder; +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 test.Tests; + +import com.sun.enterprise.security.auth.login.FileLoginModule; + +@RunWith(Arquillian.class) +public class ServletAuthenticatorTest { + + private static final String PATH = "src/test/resources/security/unauthentication/form"; + + @ArquillianResource + private URL deploymentUrl; + + @Deployment(testable = false) + public static WebArchive createDeployment() { + return Tests.createDeployment().addClasses(HelperServletUnauthenticationSuccess.class, FileLoginModule.class) + .addAsWebInfResource(Tests.createFileAsset(PATH + "/web.xml"), "web.xml"); + } + + @Test + public void logoutSucessfull() throws ClientProtocolException, IOException, URISyntaxException { + URIBuilder uriBuilder = new URIBuilder(deploymentUrl + "/helperauthsuccess"); + uriBuilder.setParameter("username", "demoiselle"); + uriBuilder.setParameter("password", "changeit"); + + HttpGet httpGet = new HttpGet(uriBuilder.build()); + HttpResponse httpResponse = HttpClientBuilder.create().build().execute(httpGet); + + int status = httpResponse.getStatusLine().getStatusCode(); + assertEquals(SC_OK, status); + } + + @Test + public void logoutFailed() throws ClientProtocolException, IOException, URISyntaxException { + URIBuilder uriBuilder = new URIBuilder(deploymentUrl + "/helperauthfail"); + uriBuilder.setParameter("username", "demoiselle"); + uriBuilder.setParameter("password", "changeit"); + + HttpGet get = new HttpGet(uriBuilder.build()); + HttpResponse response = HttpClientBuilder.create().build().execute(get); + + int status = response.getStatusLine().getStatusCode(); + assertEquals(SC_FORBIDDEN, status); + } + + +} diff --git a/impl/extension/servlet/src/test/resources/security/unauthentication/form/web.xml b/impl/extension/servlet/src/test/resources/security/unauthentication/form/web.xml new file mode 100644 index 0000000..ef96be9 --- /dev/null +++ b/impl/extension/servlet/src/test/resources/security/unauthentication/form/web.xml @@ -0,0 +1,71 @@ + + + + + br.gov.frameworkdemoiselle.util.ServletListener + + + + Demoiselle Servlet Filter + br.gov.frameworkdemoiselle.util.ServletFilter + + + Demoiselle Servlet Filter + /* + + + + Helper Servlet Unauth Success + security.unauthentication.form.HelperServletUnauthenticationSuccess + + + Helper Servlet Unauth Success + /helperauthsuccess + + + + Helper Servlet Unauth Fail + security.unauthentication.form.HelperServletUnauthenticationFail + + + Helper Servlet Unauth Fail + /helperauthfail + + + \ No newline at end of file -- libgit2 0.21.2