From 522e424b1a2bfab831e6727b02d8facda84212db Mon Sep 17 00:00:00 2001 From: Cleverson Sacramento Date: Wed, 25 Sep 2013 15:32:09 -0300 Subject: [PATCH] IN PROGRESS - issue FWK-119: Testes da extensão Servlet --- impl/extension/servlet/pom.xml | 2 +- impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/InternalProcessorFilterImpl.java | 4 ++-- impl/extension/servlet/src/test/java/producer/request/HelperServlet.java | 30 ++++++++++++++++++++++++++++++ impl/extension/servlet/src/test/java/producer/request/HttpServletRequestProducerTest.java | 14 +++++++------- impl/extension/servlet/src/test/java/producer/request/RequestServlet.java | 30 ------------------------------ impl/extension/servlet/src/test/java/producer/response/HelperServlet.java | 30 ++++++++++++++++++++++++++++++ impl/extension/servlet/src/test/java/producer/response/HttpServletResponseProducerTest.java | 17 ++++++++--------- impl/extension/servlet/src/test/java/producer/response/ResponseServlet.java | 30 ------------------------------ impl/extension/servlet/src/test/java/security/SecurityServlet.java | 13 ++++++------- impl/extension/servlet/src/test/java/security/SecurityTest.java | 2 +- impl/extension/servlet/src/test/java/security/authentication/basic/BasicAuthenticationFilterTest.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- impl/extension/servlet/src/test/java/security/authentication/basic/HelperServlet.java | 30 ++++++++++++++++++++++++++++++ impl/extension/servlet/src/test/resources/producer/request/web.xml | 8 ++++---- impl/extension/servlet/src/test/resources/producer/response/web.xml | 8 ++++---- impl/extension/servlet/src/test/resources/security/authentication/basic/web.xml | 15 +++++++-------- 15 files changed, 177 insertions(+), 105 deletions(-) create mode 100644 impl/extension/servlet/src/test/java/producer/request/HelperServlet.java delete mode 100644 impl/extension/servlet/src/test/java/producer/request/RequestServlet.java create mode 100644 impl/extension/servlet/src/test/java/producer/response/HelperServlet.java delete mode 100644 impl/extension/servlet/src/test/java/producer/response/ResponseServlet.java create mode 100644 impl/extension/servlet/src/test/java/security/authentication/basic/HelperServlet.java diff --git a/impl/extension/servlet/pom.xml b/impl/extension/servlet/pom.xml index 346b0b1..1d459c6 100755 --- a/impl/extension/servlet/pom.xml +++ b/impl/extension/servlet/pom.xml @@ -88,7 +88,7 @@ org.apache.httpcomponents httpclient - 4.2.6 + 4.3 test diff --git a/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/InternalProcessorFilterImpl.java b/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/InternalProcessorFilterImpl.java index fc4b77f..5d4426c 100644 --- a/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/InternalProcessorFilterImpl.java +++ b/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/InternalProcessorFilterImpl.java @@ -24,9 +24,9 @@ public class InternalProcessorFilterImpl implements InternalProcessorFilter { filters.add(new HttpServletRequestProducerFilter()); filters.add(new HttpServletResponseProducerFilter()); - + // TODO Analizar o uso do BasicAuthenticationFilter - // filters.add(new BasicAuthenticationFilter()); + filters.add(new BasicAuthenticationFilter()); } @Override diff --git a/impl/extension/servlet/src/test/java/producer/request/HelperServlet.java b/impl/extension/servlet/src/test/java/producer/request/HelperServlet.java new file mode 100644 index 0000000..a54672d --- /dev/null +++ b/impl/extension/servlet/src/test/java/producer/request/HelperServlet.java @@ -0,0 +1,30 @@ +package producer.request; + +import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; +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.util.Beans; + +public class HelperServlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + HttpServletRequest httpRequest = Beans.getReference(HttpServletRequest.class); + + if (httpRequest != null) { + response.setStatus(SC_OK); + } else { + response.setStatus(SC_INTERNAL_SERVER_ERROR); + } + } +} diff --git a/impl/extension/servlet/src/test/java/producer/request/HttpServletRequestProducerTest.java b/impl/extension/servlet/src/test/java/producer/request/HttpServletRequestProducerTest.java index 54e9f35..d7a7195 100644 --- a/impl/extension/servlet/src/test/java/producer/request/HttpServletRequestProducerTest.java +++ b/impl/extension/servlet/src/test/java/producer/request/HttpServletRequestProducerTest.java @@ -1,15 +1,15 @@ package producer.request; import static junit.framework.Assert.assertEquals; +import static org.apache.http.HttpStatus.SC_OK; import java.io.IOException; import java.net.URL; import org.apache.http.HttpResponse; -import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.DefaultHttpClient; +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; @@ -29,16 +29,16 @@ public class HttpServletRequestProducerTest { @Deployment(testable = false) public static WebArchive createDeployment() { - return Tests.createDeployment().addClass(RequestServlet.class) + return Tests.createDeployment().addClass(HelperServlet.class) .addAsWebInfResource(Tests.createFileAsset(PATH + "/web.xml"), "web.xml"); } @Test - public void createR() throws ClientProtocolException, IOException { - HttpGet httpGet = new HttpGet(deploymentUrl + "/servlet"); - HttpResponse httpResponse = new DefaultHttpClient().execute(httpGet); + public void producedSuccessfully() throws ClientProtocolException, IOException { + HttpGet httpGet = new HttpGet(deploymentUrl + "/helper"); + HttpResponse httpResponse = HttpClientBuilder.create().build().execute(httpGet); int status = httpResponse.getStatusLine().getStatusCode(); - assertEquals(HttpStatus.SC_OK, status); + assertEquals(SC_OK, status); } } diff --git a/impl/extension/servlet/src/test/java/producer/request/RequestServlet.java b/impl/extension/servlet/src/test/java/producer/request/RequestServlet.java deleted file mode 100644 index 1a27258..0000000 --- a/impl/extension/servlet/src/test/java/producer/request/RequestServlet.java +++ /dev/null @@ -1,30 +0,0 @@ -package producer.request; - -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.http.HttpStatus; - -import br.gov.frameworkdemoiselle.util.Beans; - -public class RequestServlet extends HttpServlet { - - private static final long serialVersionUID = 1L; - - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - - HttpServletRequest httpRequest = Beans.getReference(HttpServletRequest.class); - - if (httpRequest != null) { - response.setStatus(HttpStatus.SC_OK); - } else { - response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR); - } - } - -} diff --git a/impl/extension/servlet/src/test/java/producer/response/HelperServlet.java b/impl/extension/servlet/src/test/java/producer/response/HelperServlet.java new file mode 100644 index 0000000..8bf03e6 --- /dev/null +++ b/impl/extension/servlet/src/test/java/producer/response/HelperServlet.java @@ -0,0 +1,30 @@ +package producer.response; + +import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR; +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.util.Beans; + +public class HelperServlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + HttpServletResponse httpResponse = Beans.getReference(HttpServletResponse.class); + + if (httpResponse != null) { + response.setStatus(SC_OK); + } else { + response.setStatus(SC_INTERNAL_SERVER_ERROR); + } + } +} diff --git a/impl/extension/servlet/src/test/java/producer/response/HttpServletResponseProducerTest.java b/impl/extension/servlet/src/test/java/producer/response/HttpServletResponseProducerTest.java index 90f7037..37f4049 100644 --- a/impl/extension/servlet/src/test/java/producer/response/HttpServletResponseProducerTest.java +++ b/impl/extension/servlet/src/test/java/producer/response/HttpServletResponseProducerTest.java @@ -1,15 +1,15 @@ package producer.response; import static junit.framework.Assert.assertEquals; +import static org.apache.http.HttpStatus.SC_OK; import java.io.IOException; import java.net.URL; import org.apache.http.HttpResponse; -import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.DefaultHttpClient; +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; @@ -17,7 +17,7 @@ import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.Test; import org.junit.runner.RunWith; -import producer.request.RequestServlet; +import producer.request.HelperServlet; import test.Tests; @RunWith(Arquillian.class) @@ -30,17 +30,16 @@ public class HttpServletResponseProducerTest { @Deployment(testable = false) public static WebArchive createDeployment() { - return Tests.createDeployment().addClass(RequestServlet.class) + return Tests.createDeployment().addClass(HelperServlet.class) .addAsWebInfResource(Tests.createFileAsset(PATH + "/web.xml"), "web.xml"); } @Test - public void createResponse() throws ClientProtocolException, IOException { - HttpGet httpGet = new HttpGet(deploymentUrl + "/servlet"); - HttpResponse httpResponse = new DefaultHttpClient().execute(httpGet); + public void producedSuccessfully() throws ClientProtocolException, IOException { + HttpGet httpGet = new HttpGet(deploymentUrl + "/helper"); + HttpResponse httpResponse = HttpClientBuilder.create().build().execute(httpGet); int status = httpResponse.getStatusLine().getStatusCode(); - assertEquals(HttpStatus.SC_OK, status); + assertEquals(SC_OK, status); } - } diff --git a/impl/extension/servlet/src/test/java/producer/response/ResponseServlet.java b/impl/extension/servlet/src/test/java/producer/response/ResponseServlet.java deleted file mode 100644 index 144cf02..0000000 --- a/impl/extension/servlet/src/test/java/producer/response/ResponseServlet.java +++ /dev/null @@ -1,30 +0,0 @@ -package producer.response; - -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.http.HttpStatus; - -import br.gov.frameworkdemoiselle.util.Beans; - -public class ResponseServlet extends HttpServlet { - - private static final long serialVersionUID = 1L; - - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - - HttpServletResponse httpResponse = Beans.getReference(HttpServletResponse.class); - - if (httpResponse != null) { - response.setStatus(HttpStatus.SC_OK); - } else { - response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR); - } - } - -} diff --git a/impl/extension/servlet/src/test/java/security/SecurityServlet.java b/impl/extension/servlet/src/test/java/security/SecurityServlet.java index 38381aa..f2b7a66 100644 --- a/impl/extension/servlet/src/test/java/security/SecurityServlet.java +++ b/impl/extension/servlet/src/test/java/security/SecurityServlet.java @@ -1,5 +1,8 @@ package security; +import static org.apache.http.HttpStatus.SC_FORBIDDEN; +import static org.apache.http.HttpStatus.SC_OK; + import java.io.IOException; import javax.servlet.ServletException; @@ -8,8 +11,6 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.http.HttpStatus; - import br.gov.frameworkdemoiselle.security.AuthenticationException; import br.gov.frameworkdemoiselle.security.Credentials; import br.gov.frameworkdemoiselle.security.SecurityContext; @@ -31,12 +32,10 @@ public class SecurityServlet extends HttpServlet { try { Beans.getReference(SecurityContext.class).login(); - response.setStatus(HttpStatus.SC_OK); + response.setStatus(SC_OK); + } catch (AuthenticationException e) { - response.setStatus(HttpStatus.SC_UNAUTHORIZED); + response.setStatus(SC_FORBIDDEN); } - - - } } diff --git a/impl/extension/servlet/src/test/java/security/SecurityTest.java b/impl/extension/servlet/src/test/java/security/SecurityTest.java index 3bdbd81..4b71ed2 100644 --- a/impl/extension/servlet/src/test/java/security/SecurityTest.java +++ b/impl/extension/servlet/src/test/java/security/SecurityTest.java @@ -57,6 +57,6 @@ public class SecurityTest { HttpResponse response = client.execute(get); int status = response.getStatusLine().getStatusCode(); - assertEquals(HttpStatus.SC_UNAUTHORIZED, status); + assertEquals(HttpStatus.SC_FORBIDDEN, status); } } diff --git a/impl/extension/servlet/src/test/java/security/authentication/basic/BasicAuthenticationFilterTest.java b/impl/extension/servlet/src/test/java/security/authentication/basic/BasicAuthenticationFilterTest.java index 455b009..e7cec30 100644 --- a/impl/extension/servlet/src/test/java/security/authentication/basic/BasicAuthenticationFilterTest.java +++ b/impl/extension/servlet/src/test/java/security/authentication/basic/BasicAuthenticationFilterTest.java @@ -1,7 +1,22 @@ package security.authentication.basic; +import static org.apache.http.HttpStatus.SC_OK; +import static org.apache.http.HttpStatus.SC_FORBIDDEN; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; import java.net.URL; +import org.apache.commons.codec.binary.Base64; +import org.apache.http.HttpResponse; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.CredentialsProvider; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.BasicCredentialsProvider; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; @@ -26,10 +41,40 @@ public class BasicAuthenticationFilterTest { } @Test - public void loginSucessfull() { + public void loginSucessfull() throws ClientProtocolException, IOException { + CredentialsProvider credsProvider = new BasicCredentialsProvider(); + credsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("demoiselle", "changeit")); + CloseableHttpClient httpClient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build(); + + String username = "demoiselle"; + String password = "changeit"; + + HttpGet httpGet = new HttpGet(deploymentUrl + "/helper"); + byte[] encoded = Base64.encodeBase64((username + ":" + password).getBytes()); + httpGet.setHeader("Authorization", "Basic " + new String(encoded)); + + HttpResponse httpResponse = httpClient.execute(httpGet); + + int status = httpResponse.getStatusLine().getStatusCode(); + assertEquals(SC_OK, status); } @Test - public void loginfailed() { + public void loginFailed() throws ClientProtocolException, IOException { + CredentialsProvider credsProvider = new BasicCredentialsProvider(); + credsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("demoiselle", "changeit")); + CloseableHttpClient httpClient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build(); + + String username = "invalid"; + String password = "changeit"; + + HttpGet httpGet = new HttpGet(deploymentUrl + "/helper"); + byte[] encoded = Base64.encodeBase64((username + ":" + password).getBytes()); + httpGet.setHeader("Authorization", "Basic " + new String(encoded)); + + HttpResponse httpResponse = httpClient.execute(httpGet); + + int status = httpResponse.getStatusLine().getStatusCode(); + assertEquals(SC_FORBIDDEN, status); } } diff --git a/impl/extension/servlet/src/test/java/security/authentication/basic/HelperServlet.java b/impl/extension/servlet/src/test/java/security/authentication/basic/HelperServlet.java new file mode 100644 index 0000000..8e1456e --- /dev/null +++ b/impl/extension/servlet/src/test/java/security/authentication/basic/HelperServlet.java @@ -0,0 +1,30 @@ +package security.authentication.basic; + +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.SecurityContext; +import br.gov.frameworkdemoiselle.util.Beans; + +public class HelperServlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + boolean loggedIn = Beans.getReference(SecurityContext.class).isLoggedIn(); + + if (loggedIn) { + response.setStatus(SC_OK); + } else { + response.setStatus(SC_FORBIDDEN); + } + } +} diff --git a/impl/extension/servlet/src/test/resources/producer/request/web.xml b/impl/extension/servlet/src/test/resources/producer/request/web.xml index 6fc9357..a2e035c 100644 --- a/impl/extension/servlet/src/test/resources/producer/request/web.xml +++ b/impl/extension/servlet/src/test/resources/producer/request/web.xml @@ -51,12 +51,12 @@ - Request Class - producer.request.RequestServlet + Helper Servlet + producer.request.HelperServlet - Request Class - /servlet + Helper Servlet + /helper \ No newline at end of file diff --git a/impl/extension/servlet/src/test/resources/producer/response/web.xml b/impl/extension/servlet/src/test/resources/producer/response/web.xml index 9aa4e47..ab17f6b 100644 --- a/impl/extension/servlet/src/test/resources/producer/response/web.xml +++ b/impl/extension/servlet/src/test/resources/producer/response/web.xml @@ -51,12 +51,12 @@ - Response Servlet - producer.response.ResponseServlet + Helper Servlet + producer.response.HelperServlet - Response Servlet - /servlet + Helper Servlet + /helper \ No newline at end of file diff --git a/impl/extension/servlet/src/test/resources/security/authentication/basic/web.xml b/impl/extension/servlet/src/test/resources/security/authentication/basic/web.xml index 947e223..1abea33 100644 --- a/impl/extension/servlet/src/test/resources/security/authentication/basic/web.xml +++ b/impl/extension/servlet/src/test/resources/security/authentication/basic/web.xml @@ -51,19 +51,19 @@ - Security Class - security.SecurityServlet + Helper Servlet + security.authentication.basic.HelperServlet - Security Class - /login - - + Helper Servlet + /helper + +