Commit 522e424b1a2bfab831e6727b02d8facda84212db

Authored by Cleverson Sacramento
1 parent 181e85cd
Exists in master

IN PROGRESS - issue FWK-119: Testes da extensão Servlet

https://demoiselle.atlassian.net/browse/FWK-119
impl/extension/servlet/pom.xml
@@ -88,7 +88,7 @@ @@ -88,7 +88,7 @@
88 <dependency> 88 <dependency>
89 <groupId>org.apache.httpcomponents</groupId> 89 <groupId>org.apache.httpcomponents</groupId>
90 <artifactId>httpclient</artifactId> 90 <artifactId>httpclient</artifactId>
91 - <version>4.2.6</version> 91 + <version>4.3</version>
92 <scope>test</scope> 92 <scope>test</scope>
93 </dependency> 93 </dependency>
94 94
impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/InternalProcessorFilterImpl.java
@@ -24,9 +24,9 @@ public class InternalProcessorFilterImpl implements InternalProcessorFilter { @@ -24,9 +24,9 @@ public class InternalProcessorFilterImpl implements InternalProcessorFilter {
24 24
25 filters.add(new HttpServletRequestProducerFilter()); 25 filters.add(new HttpServletRequestProducerFilter());
26 filters.add(new HttpServletResponseProducerFilter()); 26 filters.add(new HttpServletResponseProducerFilter());
27 - 27 +
28 // TODO Analizar o uso do BasicAuthenticationFilter 28 // TODO Analizar o uso do BasicAuthenticationFilter
29 - // filters.add(new BasicAuthenticationFilter()); 29 + filters.add(new BasicAuthenticationFilter());
30 } 30 }
31 31
32 @Override 32 @Override
impl/extension/servlet/src/test/java/producer/request/HelperServlet.java 0 → 100644
@@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
  1 +package producer.request;
  2 +
  3 +import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR;
  4 +import static org.apache.http.HttpStatus.SC_OK;
  5 +
  6 +import java.io.IOException;
  7 +
  8 +import javax.servlet.ServletException;
  9 +import javax.servlet.http.HttpServlet;
  10 +import javax.servlet.http.HttpServletRequest;
  11 +import javax.servlet.http.HttpServletResponse;
  12 +
  13 +import br.gov.frameworkdemoiselle.util.Beans;
  14 +
  15 +public class HelperServlet extends HttpServlet {
  16 +
  17 + private static final long serialVersionUID = 1L;
  18 +
  19 + @Override
  20 + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  21 +
  22 + HttpServletRequest httpRequest = Beans.getReference(HttpServletRequest.class);
  23 +
  24 + if (httpRequest != null) {
  25 + response.setStatus(SC_OK);
  26 + } else {
  27 + response.setStatus(SC_INTERNAL_SERVER_ERROR);
  28 + }
  29 + }
  30 +}
impl/extension/servlet/src/test/java/producer/request/HttpServletRequestProducerTest.java
1 package producer.request; 1 package producer.request;
2 2
3 import static junit.framework.Assert.assertEquals; 3 import static junit.framework.Assert.assertEquals;
  4 +import static org.apache.http.HttpStatus.SC_OK;
4 5
5 import java.io.IOException; 6 import java.io.IOException;
6 import java.net.URL; 7 import java.net.URL;
7 8
8 import org.apache.http.HttpResponse; 9 import org.apache.http.HttpResponse;
9 -import org.apache.http.HttpStatus;  
10 import org.apache.http.client.ClientProtocolException; 10 import org.apache.http.client.ClientProtocolException;
11 import org.apache.http.client.methods.HttpGet; 11 import org.apache.http.client.methods.HttpGet;
12 -import org.apache.http.impl.client.DefaultHttpClient; 12 +import org.apache.http.impl.client.HttpClientBuilder;
13 import org.jboss.arquillian.container.test.api.Deployment; 13 import org.jboss.arquillian.container.test.api.Deployment;
14 import org.jboss.arquillian.junit.Arquillian; 14 import org.jboss.arquillian.junit.Arquillian;
15 import org.jboss.arquillian.test.api.ArquillianResource; 15 import org.jboss.arquillian.test.api.ArquillianResource;
@@ -29,16 +29,16 @@ public class HttpServletRequestProducerTest { @@ -29,16 +29,16 @@ public class HttpServletRequestProducerTest {
29 29
30 @Deployment(testable = false) 30 @Deployment(testable = false)
31 public static WebArchive createDeployment() { 31 public static WebArchive createDeployment() {
32 - return Tests.createDeployment().addClass(RequestServlet.class) 32 + return Tests.createDeployment().addClass(HelperServlet.class)
33 .addAsWebInfResource(Tests.createFileAsset(PATH + "/web.xml"), "web.xml"); 33 .addAsWebInfResource(Tests.createFileAsset(PATH + "/web.xml"), "web.xml");
34 } 34 }
35 35
36 @Test 36 @Test
37 - public void createR() throws ClientProtocolException, IOException {  
38 - HttpGet httpGet = new HttpGet(deploymentUrl + "/servlet");  
39 - HttpResponse httpResponse = new DefaultHttpClient().execute(httpGet); 37 + public void producedSuccessfully() throws ClientProtocolException, IOException {
  38 + HttpGet httpGet = new HttpGet(deploymentUrl + "/helper");
  39 + HttpResponse httpResponse = HttpClientBuilder.create().build().execute(httpGet);
40 40
41 int status = httpResponse.getStatusLine().getStatusCode(); 41 int status = httpResponse.getStatusLine().getStatusCode();
42 - assertEquals(HttpStatus.SC_OK, status); 42 + assertEquals(SC_OK, status);
43 } 43 }
44 } 44 }
impl/extension/servlet/src/test/java/producer/request/RequestServlet.java
@@ -1,30 +0,0 @@ @@ -1,30 +0,0 @@
1 -package producer.request;  
2 -  
3 -import java.io.IOException;  
4 -  
5 -import javax.servlet.ServletException;  
6 -import javax.servlet.http.HttpServlet;  
7 -import javax.servlet.http.HttpServletRequest;  
8 -import javax.servlet.http.HttpServletResponse;  
9 -  
10 -import org.apache.http.HttpStatus;  
11 -  
12 -import br.gov.frameworkdemoiselle.util.Beans;  
13 -  
14 -public class RequestServlet extends HttpServlet {  
15 -  
16 - private static final long serialVersionUID = 1L;  
17 -  
18 - @Override  
19 - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
20 -  
21 - HttpServletRequest httpRequest = Beans.getReference(HttpServletRequest.class);  
22 -  
23 - if (httpRequest != null) {  
24 - response.setStatus(HttpStatus.SC_OK);  
25 - } else {  
26 - response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR);  
27 - }  
28 - }  
29 -  
30 -}  
impl/extension/servlet/src/test/java/producer/response/HelperServlet.java 0 → 100644
@@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
  1 +package producer.response;
  2 +
  3 +import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR;
  4 +import static org.apache.http.HttpStatus.SC_OK;
  5 +
  6 +import java.io.IOException;
  7 +
  8 +import javax.servlet.ServletException;
  9 +import javax.servlet.http.HttpServlet;
  10 +import javax.servlet.http.HttpServletRequest;
  11 +import javax.servlet.http.HttpServletResponse;
  12 +
  13 +import br.gov.frameworkdemoiselle.util.Beans;
  14 +
  15 +public class HelperServlet extends HttpServlet {
  16 +
  17 + private static final long serialVersionUID = 1L;
  18 +
  19 + @Override
  20 + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  21 +
  22 + HttpServletResponse httpResponse = Beans.getReference(HttpServletResponse.class);
  23 +
  24 + if (httpResponse != null) {
  25 + response.setStatus(SC_OK);
  26 + } else {
  27 + response.setStatus(SC_INTERNAL_SERVER_ERROR);
  28 + }
  29 + }
  30 +}
impl/extension/servlet/src/test/java/producer/response/HttpServletResponseProducerTest.java
1 package producer.response; 1 package producer.response;
2 2
3 import static junit.framework.Assert.assertEquals; 3 import static junit.framework.Assert.assertEquals;
  4 +import static org.apache.http.HttpStatus.SC_OK;
4 5
5 import java.io.IOException; 6 import java.io.IOException;
6 import java.net.URL; 7 import java.net.URL;
7 8
8 import org.apache.http.HttpResponse; 9 import org.apache.http.HttpResponse;
9 -import org.apache.http.HttpStatus;  
10 import org.apache.http.client.ClientProtocolException; 10 import org.apache.http.client.ClientProtocolException;
11 import org.apache.http.client.methods.HttpGet; 11 import org.apache.http.client.methods.HttpGet;
12 -import org.apache.http.impl.client.DefaultHttpClient; 12 +import org.apache.http.impl.client.HttpClientBuilder;
13 import org.jboss.arquillian.container.test.api.Deployment; 13 import org.jboss.arquillian.container.test.api.Deployment;
14 import org.jboss.arquillian.junit.Arquillian; 14 import org.jboss.arquillian.junit.Arquillian;
15 import org.jboss.arquillian.test.api.ArquillianResource; 15 import org.jboss.arquillian.test.api.ArquillianResource;
@@ -17,7 +17,7 @@ import org.jboss.shrinkwrap.api.spec.WebArchive; @@ -17,7 +17,7 @@ import org.jboss.shrinkwrap.api.spec.WebArchive;
17 import org.junit.Test; 17 import org.junit.Test;
18 import org.junit.runner.RunWith; 18 import org.junit.runner.RunWith;
19 19
20 -import producer.request.RequestServlet; 20 +import producer.request.HelperServlet;
21 import test.Tests; 21 import test.Tests;
22 22
23 @RunWith(Arquillian.class) 23 @RunWith(Arquillian.class)
@@ -30,17 +30,16 @@ public class HttpServletResponseProducerTest { @@ -30,17 +30,16 @@ public class HttpServletResponseProducerTest {
30 30
31 @Deployment(testable = false) 31 @Deployment(testable = false)
32 public static WebArchive createDeployment() { 32 public static WebArchive createDeployment() {
33 - return Tests.createDeployment().addClass(RequestServlet.class) 33 + return Tests.createDeployment().addClass(HelperServlet.class)
34 .addAsWebInfResource(Tests.createFileAsset(PATH + "/web.xml"), "web.xml"); 34 .addAsWebInfResource(Tests.createFileAsset(PATH + "/web.xml"), "web.xml");
35 } 35 }
36 36
37 @Test 37 @Test
38 - public void createResponse() throws ClientProtocolException, IOException {  
39 - HttpGet httpGet = new HttpGet(deploymentUrl + "/servlet");  
40 - HttpResponse httpResponse = new DefaultHttpClient().execute(httpGet); 38 + public void producedSuccessfully() throws ClientProtocolException, IOException {
  39 + HttpGet httpGet = new HttpGet(deploymentUrl + "/helper");
  40 + HttpResponse httpResponse = HttpClientBuilder.create().build().execute(httpGet);
41 41
42 int status = httpResponse.getStatusLine().getStatusCode(); 42 int status = httpResponse.getStatusLine().getStatusCode();
43 - assertEquals(HttpStatus.SC_OK, status); 43 + assertEquals(SC_OK, status);
44 } 44 }
45 -  
46 } 45 }
impl/extension/servlet/src/test/java/producer/response/ResponseServlet.java
@@ -1,30 +0,0 @@ @@ -1,30 +0,0 @@
1 -package producer.response;  
2 -  
3 -import java.io.IOException;  
4 -  
5 -import javax.servlet.ServletException;  
6 -import javax.servlet.http.HttpServlet;  
7 -import javax.servlet.http.HttpServletRequest;  
8 -import javax.servlet.http.HttpServletResponse;  
9 -  
10 -import org.apache.http.HttpStatus;  
11 -  
12 -import br.gov.frameworkdemoiselle.util.Beans;  
13 -  
14 -public class ResponseServlet extends HttpServlet {  
15 -  
16 - private static final long serialVersionUID = 1L;  
17 -  
18 - @Override  
19 - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
20 -  
21 - HttpServletResponse httpResponse = Beans.getReference(HttpServletResponse.class);  
22 -  
23 - if (httpResponse != null) {  
24 - response.setStatus(HttpStatus.SC_OK);  
25 - } else {  
26 - response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR);  
27 - }  
28 - }  
29 -  
30 -}  
impl/extension/servlet/src/test/java/security/SecurityServlet.java
1 package security; 1 package security;
2 2
  3 +import static org.apache.http.HttpStatus.SC_FORBIDDEN;
  4 +import static org.apache.http.HttpStatus.SC_OK;
  5 +
3 import java.io.IOException; 6 import java.io.IOException;
4 7
5 import javax.servlet.ServletException; 8 import javax.servlet.ServletException;
@@ -8,8 +11,6 @@ import javax.servlet.http.HttpServlet; @@ -8,8 +11,6 @@ import javax.servlet.http.HttpServlet;
8 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletRequest;
9 import javax.servlet.http.HttpServletResponse; 12 import javax.servlet.http.HttpServletResponse;
10 13
11 -import org.apache.http.HttpStatus;  
12 -  
13 import br.gov.frameworkdemoiselle.security.AuthenticationException; 14 import br.gov.frameworkdemoiselle.security.AuthenticationException;
14 import br.gov.frameworkdemoiselle.security.Credentials; 15 import br.gov.frameworkdemoiselle.security.Credentials;
15 import br.gov.frameworkdemoiselle.security.SecurityContext; 16 import br.gov.frameworkdemoiselle.security.SecurityContext;
@@ -31,12 +32,10 @@ public class SecurityServlet extends HttpServlet { @@ -31,12 +32,10 @@ public class SecurityServlet extends HttpServlet {
31 32
32 try { 33 try {
33 Beans.getReference(SecurityContext.class).login(); 34 Beans.getReference(SecurityContext.class).login();
34 - response.setStatus(HttpStatus.SC_OK); 35 + response.setStatus(SC_OK);
  36 +
35 } catch (AuthenticationException e) { 37 } catch (AuthenticationException e) {
36 - response.setStatus(HttpStatus.SC_UNAUTHORIZED); 38 + response.setStatus(SC_FORBIDDEN);
37 } 39 }
38 -  
39 -  
40 -  
41 } 40 }
42 } 41 }
impl/extension/servlet/src/test/java/security/SecurityTest.java
@@ -57,6 +57,6 @@ public class SecurityTest { @@ -57,6 +57,6 @@ public class SecurityTest {
57 HttpResponse response = client.execute(get); 57 HttpResponse response = client.execute(get);
58 58
59 int status = response.getStatusLine().getStatusCode(); 59 int status = response.getStatusLine().getStatusCode();
60 - assertEquals(HttpStatus.SC_UNAUTHORIZED, status); 60 + assertEquals(HttpStatus.SC_FORBIDDEN, status);
61 } 61 }
62 } 62 }
impl/extension/servlet/src/test/java/security/authentication/basic/BasicAuthenticationFilterTest.java
1 package security.authentication.basic; 1 package security.authentication.basic;
2 2
  3 +import static org.apache.http.HttpStatus.SC_OK;
  4 +import static org.apache.http.HttpStatus.SC_FORBIDDEN;
  5 +import static org.junit.Assert.assertEquals;
  6 +
  7 +import java.io.IOException;
3 import java.net.URL; 8 import java.net.URL;
4 9
  10 +import org.apache.commons.codec.binary.Base64;
  11 +import org.apache.http.HttpResponse;
  12 +import org.apache.http.auth.AuthScope;
  13 +import org.apache.http.auth.UsernamePasswordCredentials;
  14 +import org.apache.http.client.ClientProtocolException;
  15 +import org.apache.http.client.CredentialsProvider;
  16 +import org.apache.http.client.methods.HttpGet;
  17 +import org.apache.http.impl.client.BasicCredentialsProvider;
  18 +import org.apache.http.impl.client.CloseableHttpClient;
  19 +import org.apache.http.impl.client.HttpClients;
5 import org.jboss.arquillian.container.test.api.Deployment; 20 import org.jboss.arquillian.container.test.api.Deployment;
6 import org.jboss.arquillian.junit.Arquillian; 21 import org.jboss.arquillian.junit.Arquillian;
7 import org.jboss.arquillian.test.api.ArquillianResource; 22 import org.jboss.arquillian.test.api.ArquillianResource;
@@ -26,10 +41,40 @@ public class BasicAuthenticationFilterTest { @@ -26,10 +41,40 @@ public class BasicAuthenticationFilterTest {
26 } 41 }
27 42
28 @Test 43 @Test
29 - public void loginSucessfull() { 44 + public void loginSucessfull() throws ClientProtocolException, IOException {
  45 + CredentialsProvider credsProvider = new BasicCredentialsProvider();
  46 + credsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("demoiselle", "changeit"));
  47 + CloseableHttpClient httpClient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build();
  48 +
  49 + String username = "demoiselle";
  50 + String password = "changeit";
  51 +
  52 + HttpGet httpGet = new HttpGet(deploymentUrl + "/helper");
  53 + byte[] encoded = Base64.encodeBase64((username + ":" + password).getBytes());
  54 + httpGet.setHeader("Authorization", "Basic " + new String(encoded));
  55 +
  56 + HttpResponse httpResponse = httpClient.execute(httpGet);
  57 +
  58 + int status = httpResponse.getStatusLine().getStatusCode();
  59 + assertEquals(SC_OK, status);
30 } 60 }
31 61
32 @Test 62 @Test
33 - public void loginfailed() { 63 + public void loginFailed() throws ClientProtocolException, IOException {
  64 + CredentialsProvider credsProvider = new BasicCredentialsProvider();
  65 + credsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("demoiselle", "changeit"));
  66 + CloseableHttpClient httpClient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build();
  67 +
  68 + String username = "invalid";
  69 + String password = "changeit";
  70 +
  71 + HttpGet httpGet = new HttpGet(deploymentUrl + "/helper");
  72 + byte[] encoded = Base64.encodeBase64((username + ":" + password).getBytes());
  73 + httpGet.setHeader("Authorization", "Basic " + new String(encoded));
  74 +
  75 + HttpResponse httpResponse = httpClient.execute(httpGet);
  76 +
  77 + int status = httpResponse.getStatusLine().getStatusCode();
  78 + assertEquals(SC_FORBIDDEN, status);
34 } 79 }
35 } 80 }
impl/extension/servlet/src/test/java/security/authentication/basic/HelperServlet.java 0 → 100644
@@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
  1 +package security.authentication.basic;
  2 +
  3 +import static org.apache.http.HttpStatus.SC_FORBIDDEN;
  4 +import static org.apache.http.HttpStatus.SC_OK;
  5 +
  6 +import java.io.IOException;
  7 +
  8 +import javax.servlet.ServletException;
  9 +import javax.servlet.http.HttpServlet;
  10 +import javax.servlet.http.HttpServletRequest;
  11 +import javax.servlet.http.HttpServletResponse;
  12 +
  13 +import br.gov.frameworkdemoiselle.security.SecurityContext;
  14 +import br.gov.frameworkdemoiselle.util.Beans;
  15 +
  16 +public class HelperServlet extends HttpServlet {
  17 +
  18 + private static final long serialVersionUID = 1L;
  19 +
  20 + @Override
  21 + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  22 + boolean loggedIn = Beans.getReference(SecurityContext.class).isLoggedIn();
  23 +
  24 + if (loggedIn) {
  25 + response.setStatus(SC_OK);
  26 + } else {
  27 + response.setStatus(SC_FORBIDDEN);
  28 + }
  29 + }
  30 +}
impl/extension/servlet/src/test/resources/producer/request/web.xml
@@ -51,12 +51,12 @@ @@ -51,12 +51,12 @@
51 </filter-mapping> 51 </filter-mapping>
52 52
53 <servlet> 53 <servlet>
54 - <servlet-name>Request Class</servlet-name>  
55 - <servlet-class>producer.request.RequestServlet</servlet-class> 54 + <servlet-name>Helper Servlet</servlet-name>
  55 + <servlet-class>producer.request.HelperServlet</servlet-class>
56 </servlet> 56 </servlet>
57 57
58 <servlet-mapping> 58 <servlet-mapping>
59 - <servlet-name>Request Class</servlet-name>  
60 - <url-pattern>/servlet</url-pattern> 59 + <servlet-name>Helper Servlet</servlet-name>
  60 + <url-pattern>/helper</url-pattern>
61 </servlet-mapping> 61 </servlet-mapping>
62 </web-app> 62 </web-app>
63 \ No newline at end of file 63 \ No newline at end of file
impl/extension/servlet/src/test/resources/producer/response/web.xml
@@ -51,12 +51,12 @@ @@ -51,12 +51,12 @@
51 </filter-mapping> 51 </filter-mapping>
52 52
53 <servlet> 53 <servlet>
54 - <servlet-name>Response Servlet</servlet-name>  
55 - <servlet-class>producer.response.ResponseServlet</servlet-class> 54 + <servlet-name>Helper Servlet</servlet-name>
  55 + <servlet-class>producer.response.HelperServlet</servlet-class>
56 </servlet> 56 </servlet>
57 57
58 <servlet-mapping> 58 <servlet-mapping>
59 - <servlet-name>Response Servlet</servlet-name>  
60 - <url-pattern>/servlet</url-pattern> 59 + <servlet-name>Helper Servlet</servlet-name>
  60 + <url-pattern>/helper</url-pattern>
61 </servlet-mapping> 61 </servlet-mapping>
62 </web-app> 62 </web-app>
63 \ No newline at end of file 63 \ No newline at end of file
impl/extension/servlet/src/test/resources/security/authentication/basic/web.xml
@@ -51,19 +51,19 @@ @@ -51,19 +51,19 @@
51 </filter-mapping> 51 </filter-mapping>
52 52
53 <servlet> 53 <servlet>
54 - <servlet-name>Security Class</servlet-name>  
55 - <servlet-class>security.SecurityServlet</servlet-class> 54 + <servlet-name>Helper Servlet</servlet-name>
  55 + <servlet-class>security.authentication.basic.HelperServlet</servlet-class>
56 </servlet> 56 </servlet>
57 <servlet-mapping> 57 <servlet-mapping>
58 - <servlet-name>Security Class</servlet-name>  
59 - <url-pattern>/login</url-pattern>  
60 - </servlet-mapping>  
61 - 58 + <servlet-name>Helper Servlet</servlet-name>
  59 + <url-pattern>/helper</url-pattern>
  60 + </servlet-mapping>
  61 +
62 <!-- 62 <!--
63 <security-constraint> 63 <security-constraint>
64 <web-resource-collection> 64 <web-resource-collection>
65 <web-resource-name>Private URL</web-resource-name> 65 <web-resource-name>Private URL</web-resource-name>
66 - <url-pattern>/login</url-pattern> 66 + <url-pattern>/helper</url-pattern>
67 </web-resource-collection> 67 </web-resource-collection>
68 <auth-constraint> 68 <auth-constraint>
69 <role-name>*</role-name> 69 <role-name>*</role-name>
@@ -72,7 +72,6 @@ @@ -72,7 +72,6 @@
72 72
73 <login-config> 73 <login-config>
74 <auth-method>BASIC</auth-method> 74 <auth-method>BASIC</auth-method>
75 - <realm-name>fileRealm</realm-name>  
76 </login-config> 75 </login-config>
77 76
78 <security-role> 77 <security-role>