From f3fe0f573940a2ad0b2a00e497fb4baa020cc4ba Mon Sep 17 00:00:00 2001 From: Cleverson Sacramento Date: Fri, 6 Sep 2013 14:18:07 -0300 Subject: [PATCH] Configuração dos testes da extensão JSF e Servlet usando Arquillian (client/server) --- impl/extension/jsf/src/test/java/test/Tests.java | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ impl/extension/jsf/src/test/java/xxxx/XServlet.java | 35 +++++++++++++++++++++++++++++++++++ impl/extension/jsf/src/test/java/xxxx/XTest.java | 46 ++++++++++++++++++++++++++++++++++++++++++++++ impl/extension/jsf/src/test/resources/arquillian.xml | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ impl/extension/jsf/src/test/resources/test/beans.xml | 47 +++++++++++++++++++++++++++++++++++++++++++++++ impl/extension/jsf/src/test/resources/xxx/web.xml | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ impl/extension/servlet/pom.xml | 6 ++++++ impl/extension/servlet/src/test/java/xxxx/XServlet.java | 2 ++ impl/extension/servlet/src/test/java/xxxx/XTest.java | 29 +++++++++++++++++++++-------- impl/extension/servlet/src/test/resources/.drone.profile | 0 10 files changed, 361 insertions(+), 8 deletions(-) create mode 100644 impl/extension/jsf/src/test/java/test/Tests.java create mode 100644 impl/extension/jsf/src/test/java/xxxx/XServlet.java create mode 100644 impl/extension/jsf/src/test/java/xxxx/XTest.java create mode 100644 impl/extension/jsf/src/test/resources/arquillian.xml create mode 100644 impl/extension/jsf/src/test/resources/test/beans.xml create mode 100644 impl/extension/jsf/src/test/resources/xxx/web.xml delete mode 100644 impl/extension/servlet/src/test/resources/.drone.profile diff --git a/impl/extension/jsf/src/test/java/test/Tests.java b/impl/extension/jsf/src/test/java/test/Tests.java new file mode 100644 index 0000000..3a4dea6 --- /dev/null +++ b/impl/extension/jsf/src/test/java/test/Tests.java @@ -0,0 +1,84 @@ +/* + * Demoiselle Framework + * Copyright (C) 2010 SERPRO + * ---------------------------------------------------------------------------- + * This file is part of Demoiselle Framework. + * + * Demoiselle Framework is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License version 3 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License version 3 + * along with this program; if not, see + * or write to the Free Software Foundation, Inc., 51 Franklin Street, + * Fifth Floor, Boston, MA 02110-1301, USA. + * ---------------------------------------------------------------------------- + * Este arquivo é parte do Framework Demoiselle. + * + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação + * do Software Livre (FSF). + * + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português + * para maiores detalhes. + * + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título + * "LICENCA.txt", junto com esse programa. Se não, acesse + * ou escreva para a Fundação do Software Livre (FSF) Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. + */ +package test; + +import java.io.File; + +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.asset.FileAsset; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import org.jboss.shrinkwrap.resolver.api.maven.Maven; +import org.junit.Ignore; + +@Ignore +public final class Tests { + + private Tests() { + } + + public static WebArchive createDeployment(final Class baseClass) { + return createDeployment().addPackages(true, baseClass.getPackage()).addClass(Tests.class); + } + + public static WebArchive createDeployment() { + File[] libs = Maven.resolver().offline().loadPomFromFile("pom.xml", "arquillian-test") + .importCompileAndRuntimeDependencies().resolve().withTransitivity().asFile(); + + return ShrinkWrap + .create(WebArchive.class) + // .addClass(ServletAuthenticator.class) + // .addClass(ServletAuthorizer.class) + // .addClass(ServletFilter.class) + // .addClass(ServletListener.class) + // .addClass(HttpServletRequestProducer.class) + // .addClass(HttpServletResponseProducer.class) + // .addClass(HttpSessionProducer.class) + // .addClass(ServletLocaleProducer.class) + // .addClass(BasicAuthenticationFilter.class) + // .addClass(HttpServletRequestProducerFilter.class) + // .addClass(HttpServletResponseProducerFilter.class) + // .addClass(InternalProcessorFilterImpl.class) + .addAsResource(createFileAsset("src/main/resources/demoiselle-jsf-bundle.properties"), + "demoiselle-jsf-bundle.properties") + .addAsWebInfResource(createFileAsset("src/test/resources/test/beans.xml"), "beans.xml") + .addAsLibraries(libs); + } + + public static FileAsset createFileAsset(final String pathname) { + return new FileAsset(new File(pathname)); + } +} diff --git a/impl/extension/jsf/src/test/java/xxxx/XServlet.java b/impl/extension/jsf/src/test/java/xxxx/XServlet.java new file mode 100644 index 0000000..10b09ec --- /dev/null +++ b/impl/extension/jsf/src/test/java/xxxx/XServlet.java @@ -0,0 +1,35 @@ +package xxxx; + +import java.io.IOException; + +import javax.inject.Inject; +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.Credentials; +import br.gov.frameworkdemoiselle.security.SecurityContext; + +@WebServlet("/login") +public class XServlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + + @Inject + private SecurityContext securityContext; + + @Inject + private Credentials credentials; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + super.doGet(request, response); + + credentials.setUsername("admin"); + credentials.setPassword("changeit"); + + securityContext.login(); + } +} diff --git a/impl/extension/jsf/src/test/java/xxxx/XTest.java b/impl/extension/jsf/src/test/java/xxxx/XTest.java new file mode 100644 index 0000000..9b7b3ce --- /dev/null +++ b/impl/extension/jsf/src/test/java/xxxx/XTest.java @@ -0,0 +1,46 @@ +package xxxx; + +import java.net.URL; + +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.drone.api.annotation.Drone; +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.thoughtworks.selenium.DefaultSelenium; + +@RunWith(Arquillian.class) +public class XTest { + + private static final String PATH = "src/test/resources/xxx"; + + @Drone + private DefaultSelenium browser; + + @ArquillianResource + private URL deploymentUrl; + + @Deployment(testable = false) + public static WebArchive createDeployment() { + return Tests.createDeployment().addClass(XServlet.class) + .addAsWebInfResource(Tests.createFileAsset(PATH + "/web.xml"), "web.xml"); + } + + @Test + public void xxxx() { + browser.open(deploymentUrl + "login"); + + // browser.type("id=xxx-input", "demo"); + // browser.waitForPageToLoad("15000"); + + // assertTrue("User should be logged in!", + // browser.isElementPresent("xpath=//li[contains(text(), 'Welcome')]")); + // assertTrue("Username should be shown!", + // browser.isElementPresent("xpath=//p[contains(text(), 'You are signed in as demo.')]")); + } +} diff --git a/impl/extension/jsf/src/test/resources/arquillian.xml b/impl/extension/jsf/src/test/resources/arquillian.xml new file mode 100644 index 0000000..80a0dac --- /dev/null +++ b/impl/extension/jsf/src/test/resources/arquillian.xml @@ -0,0 +1,68 @@ + + + + + + target/deployments + + + + + + + + diff --git a/impl/extension/jsf/src/test/resources/test/beans.xml b/impl/extension/jsf/src/test/resources/test/beans.xml new file mode 100644 index 0000000..2bb9523 --- /dev/null +++ b/impl/extension/jsf/src/test/resources/test/beans.xml @@ -0,0 +1,47 @@ + + + + + br.gov.frameworkdemoiselle.transaction.TransactionalInterceptor + br.gov.frameworkdemoiselle.security.RequiredPermissionInterceptor + br.gov.frameworkdemoiselle.security.RequiredRoleInterceptor + br.gov.frameworkdemoiselle.exception.ExceptionHandlerInterceptor + + + diff --git a/impl/extension/jsf/src/test/resources/xxx/web.xml b/impl/extension/jsf/src/test/resources/xxx/web.xml new file mode 100644 index 0000000..70d32be --- /dev/null +++ b/impl/extension/jsf/src/test/resources/xxx/web.xml @@ -0,0 +1,52 @@ + + + + + br.gov.frameworkdemoiselle.util.ServletListener + + + Demoiselle Servlet Filter + br.gov.frameworkdemoiselle.util.ServletFilter + + + Demoiselle Servlet Filter + /* + + + \ No newline at end of file diff --git a/impl/extension/servlet/pom.xml b/impl/extension/servlet/pom.xml index 18e4ccb..6d38bb3 100755 --- a/impl/extension/servlet/pom.xml +++ b/impl/extension/servlet/pom.xml @@ -84,6 +84,12 @@ test --> + + commons-httpclient + commons-httpclient + 3.1 + test + diff --git a/impl/extension/servlet/src/test/java/xxxx/XServlet.java b/impl/extension/servlet/src/test/java/xxxx/XServlet.java index 10b09ec..16bd4c6 100644 --- a/impl/extension/servlet/src/test/java/xxxx/XServlet.java +++ b/impl/extension/servlet/src/test/java/xxxx/XServlet.java @@ -26,6 +26,8 @@ public class XServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { super.doGet(request, response); + + System.out.println("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); credentials.setUsername("admin"); credentials.setPassword("changeit"); diff --git a/impl/extension/servlet/src/test/java/xxxx/XTest.java b/impl/extension/servlet/src/test/java/xxxx/XTest.java index bf6eb1b..a38c19e 100644 --- a/impl/extension/servlet/src/test/java/xxxx/XTest.java +++ b/impl/extension/servlet/src/test/java/xxxx/XTest.java @@ -1,9 +1,12 @@ package xxxx; +import java.io.IOException; import java.net.URL; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpException; +import org.apache.commons.httpclient.methods.GetMethod; import org.jboss.arquillian.container.test.api.Deployment; -import org.jboss.arquillian.drone.api.annotation.Drone; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.jboss.shrinkwrap.api.spec.WebArchive; @@ -12,27 +15,37 @@ import org.junit.runner.RunWith; import test.Tests; -import com.thoughtworks.selenium.DefaultSelenium; - @RunWith(Arquillian.class) public class XTest { private static final String PATH = "src/test/resources/xxx"; - @Drone - private DefaultSelenium browser; - @ArquillianResource private URL deploymentUrl; @Deployment(testable = false) public static WebArchive createDeployment() { - return Tests.createDeployment().addAsWebInfResource(Tests.createFileAsset(PATH + "/web.xml"), "web.xml"); + return Tests.createDeployment().addClass(XServlet.class) + .addAsWebInfResource(Tests.createFileAsset(PATH + "/web.xml"), "web.xml"); } @Test public void xxxx() { - browser.open(deploymentUrl + "login"); + HttpClient client = new HttpClient(); + GetMethod method = new GetMethod(deploymentUrl + "login"); + + try { + int status = client.executeMethod(method); + System.out.println(status); + + } catch (HttpException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + + // browser.open(deploymentUrl + "login"); // browser.type("id=xxx-input", "demo"); // browser.waitForPageToLoad("15000"); diff --git a/impl/extension/servlet/src/test/resources/.drone.profile b/impl/extension/servlet/src/test/resources/.drone.profile deleted file mode 100644 index e69de29..0000000 --- a/impl/extension/servlet/src/test/resources/.drone.profile +++ /dev/null -- libgit2 0.21.2