Author: dblevins
Date: Sat Sep 10 02:17:43 2011
New Revision: 1167436
URL: http://svn.apache.org/viewvc?rev=1167436&view=rev
Log:
Patch from Rangarajan Sreenivasan, OPENEJB-1652: Arquillian: Servlet Listener
Tests
More or less a nice start on refactoring and cleaning the tests.
A very excellent patch, Ranga! Thank you!
Added:
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterCdiInjectionTest.java
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/TestSetup.java
Modified:
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterEjbLocalInjectionTest.java
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterEjbRemoteInjectionTest.java
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterPersistenceInjectionTest.java
Added:
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterCdiInjectionTest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterCdiInjectionTest.java?rev=1167436&view=auto
==============================================================================
---
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterCdiInjectionTest.java
(added)
+++
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterCdiInjectionTest.java
Sat Sep 10 02:17:43 2011
@@ -0,0 +1,86 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.arquillian;
+
+import org.jboss.arquillian.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.descriptor.api.spec.servlet.web.WebAppDescriptor;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.inject.Inject;
+import javax.servlet.*;
+import java.io.IOException;
+
+@RunWith(Arquillian.class)
+public class ServletFilterCdiInjectionTest extends TestSetup {
+
+ public static final String TEST_NAME =
ServletFilterCdiInjectionTest.class.getSimpleName();
+
+ @Test
+ public void pojoInjectionShouldSucceed() throws Exception {
+ final String expectedOutput = "testCdi=true";
+ validateTest(expectedOutput);
+ }
+
+ @Deployment(testable = false)
+ public static WebArchive getArchive() {
+ return new
ServletFilterCdiInjectionTest().createDeployment(PojoServletFilter.class,
Car.class);
+ }
+
+ protected void decorateDescriptor(WebAppDescriptor descriptor) {
+ descriptor.filter(PojoServletFilter.class, "/" + getTestContextName());
+ }
+
+ public static class PojoServletFilter implements Filter {
+
+ @Inject
+ private Car car;
+
+ public void init(FilterConfig config) {
+ }
+
+ public void destroy() {
+ }
+
+ @Override
+ public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws ServletException, IOException {
+ run(req, resp, this);
+ }
+
+ public void testCdi() {
+ Assert.assertNotNull(car);
+ car.drive("test");
+ }
+ }
+
+ public static class Car {
+ private final String make = "Lexus", model = "IS 350";
+ private final int year = 2011;
+
+ public String drive(String name) {
+ return name + " is on the wheel of a " + year + " " + make + " " +
model;
+ }
+ }
+
+
+}
+
+
+
Modified:
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterEjbLocalInjectionTest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterEjbLocalInjectionTest.java?rev=1167436&r1=1167435&r2=1167436&view=diff
==============================================================================
---
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterEjbLocalInjectionTest.java
(original)
+++
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterEjbLocalInjectionTest.java
Sat Sep 10 02:17:43 2011
@@ -16,76 +16,44 @@
*/
package org.apache.openejb.arquillian;
-import org.apache.commons.lang.StringUtils;
import org.jboss.arquillian.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
-import org.jboss.shrinkwrap.api.ArchivePaths;
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.asset.EmptyAsset;
-import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.jboss.shrinkwrap.descriptor.api.Descriptors;
-import org.jboss.shrinkwrap.descriptor.api.Node;
import org.jboss.shrinkwrap.descriptor.api.spec.servlet.web.WebAppDescriptor;
-import org.jboss.shrinkwrap.descriptor.spi.NodeProvider;
+import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
-import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
-import javax.inject.Inject;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import java.io.ByteArrayOutputStream;
+import javax.servlet.*;
import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.assertTrue;
@RunWith(Arquillian.class)
-public class ServletFilterEjbLocalInjectionTest {
-
- public static final String TEST_NAME =
ServletFilterEjbLocalInjectionTest.class.getSimpleName();
+public class ServletFilterEjbLocalInjectionTest extends TestSetup {
@Test
public void localEjbInjectionShouldSucceed() throws Exception {
- final String expectedOutput = "Local: OpenEJB is employed at TomEE
Software Inc.";
+ final String expectedOutput = "testLocalEjb=true";
validateTest(expectedOutput);
}
@Test
public void localBeanEjbInjectionShouldSucceed() throws Exception {
- final String expectedOutput = "OpenEJB shops at Apache Marketplace";
+ final String expectedOutput = "testLocalBean=true";
validateTest(expectedOutput);
}
@Deployment(testable = false)
- public static WebArchive createDeployment() {
- WebAppDescriptor descriptor =
Descriptors.create(WebAppDescriptor.class)
- .version("3.0")
- .filter(PojoServletFilter.class, "/" + TEST_NAME);
-
- WebArchive archive = ShrinkWrap.create(WebArchive.class, TEST_NAME +
".war")
- .addClass(PojoServletFilter.class)
- .addClass(CompanyLocal.class)
- .addClass(Company.class)
- .addClass(DefaultCompany.class)
- .addClass(SuperMarket.class)
- .setWebXML(new StringAsset(descriptor.exportAsString()))
- .addAsWebResource(EmptyAsset.INSTANCE,
ArchivePaths.create("beans.xml"));
-
- System.err.println(descriptor.exportAsString());
+ public static WebArchive getArchive() {
+ return new
ServletFilterEjbLocalInjectionTest().createDeployment(PojoServletFilter.class,
+ CompanyLocal.class, Company.class, DefaultCompany.class,
SuperMarket.class);
+ }
- return archive;
+ protected void decorateDescriptor(WebAppDescriptor descriptor) {
+ descriptor.filter(PojoServletFilter.class, "/" + getTestContextName());
}
public static class PojoServletFilter implements Filter {
@@ -96,10 +64,7 @@ public class ServletFilterEjbLocalInject
@EJB
private SuperMarket market;
- private FilterConfig config;
-
public void init(FilterConfig config) {
- this.config = config;
}
public void destroy() {
@@ -107,17 +72,17 @@ public class ServletFilterEjbLocalInject
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws ServletException, IOException {
- String name = req.getParameter("name");
- if (StringUtils.isEmpty(name)) {
- name = "OpenEJB";
- }
-
- if (localCompany != null) {
- resp.getOutputStream().println("Local: " +
localCompany.employ(name));
- }
- if (market != null) {
- resp.getOutputStream().println(market.shop(name));
- }
+ run(req, resp, this);
+ }
+
+ public void testLocalBean() {
+ Assert.assertNotNull(market);
+ market.shop("test");
+ }
+
+ public void testLocalEjb() {
+ Assert.assertNotNull(localCompany);
+ localCompany.employ("test");
}
@@ -154,44 +119,6 @@ public class ServletFilterEjbLocalInject
}
- private static void addEnvEntry(WebAppDescriptor descriptor, String name,
String type, String value) {
- Node rootNode = ((NodeProvider) descriptor).getRootNode();
- Node appNode = rootNode.get("/web-app").iterator().next();
- appNode.create("/env-entry")
- .create("env-entry-name").text(name)
- .parent()
- .create("env-entry-type").text(type)
- .parent()
- .create("env-entry-value").text(value)
-/*
- .parent()
- .create("injection-target")
-
.create("injection-target-class").text("org.apache.openejb.arquillian.ServletPojoInjectionTest$PojoServletFilter")
- .parent()
- .create("injection-target-name").text(name)
-*/
- ;
-
- }
-
- private void validateTest(String expectedOutput) throws IOException {
- final InputStream is = new URL("http://localhost:9080/" + TEST_NAME +
"/" + TEST_NAME).openStream();
- final ByteArrayOutputStream os = new ByteArrayOutputStream();
-
- int bytesRead = -1;
- byte[] buffer = new byte[8192];
- while ((bytesRead = is.read(buffer)) > -1) {
- os.write(buffer, 0, bytesRead);
- }
-
- is.close();
- os.close();
-
- String output = new String(os.toByteArray(), "UTF-8");
- assertNotNull("Response shouldn't be null", output);
- assertTrue("Output should contain: " + expectedOutput,
output.contains(expectedOutput));
- }
-
}
Modified:
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterEjbRemoteInjectionTest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterEjbRemoteInjectionTest.java?rev=1167436&r1=1167435&r2=1167436&view=diff
==============================================================================
---
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterEjbRemoteInjectionTest.java
(original)
+++
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterEjbRemoteInjectionTest.java
Sat Sep 10 02:17:43 2011
@@ -16,16 +16,11 @@
*/
package org.apache.openejb.arquillian;
-import org.apache.commons.lang.StringUtils;
import org.jboss.arquillian.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
-import org.jboss.shrinkwrap.api.ArchivePaths;
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.asset.EmptyAsset;
-import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.jboss.shrinkwrap.descriptor.api.Descriptors;
import org.jboss.shrinkwrap.descriptor.api.spec.servlet.web.WebAppDescriptor;
+import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -33,46 +28,24 @@ import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.servlet.*;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.assertTrue;
@RunWith(Arquillian.class)
-public class ServletFilterEjbRemoteInjectionTest {
-
- public static final String TEST_NAME =
ServletFilterEjbRemoteInjectionTest.class.getSimpleName();
+public class ServletFilterEjbRemoteInjectionTest extends TestSetup {
@Test
public void ejbInjectionShouldSucceed() throws Exception {
- final String expectedOutput = "Remote: OpenEJB is employed at TomEE
Software Inc.";
+ final String expectedOutput = "testEjb=true";
validateTest(expectedOutput);
}
@Deployment(testable = false)
- public static WebArchive createDeployment() {
- WebAppDescriptor descriptor =
Descriptors.create(WebAppDescriptor.class)
- .version("3.0")
- .filter(RemoteServletFilter.class, "/" + TEST_NAME);
-
- WebArchive archive = ShrinkWrap.create(WebArchive.class, TEST_NAME +
".war")
- .addClass(RemoteServletFilter.class)
- .addClass(CompanyRemote.class)
- .addClass(DefaultCompany.class)
- .setWebXML(new StringAsset(descriptor.exportAsString()))
- .addAsWebResource(EmptyAsset.INSTANCE,
ArchivePaths.create("beans.xml"));
-
- System.err.println(descriptor.exportAsString());
-
- return archive;
- }
-
- public static enum Code {
- OK,
- ERROR;
+ public static WebArchive getArchive() {
+ return new
ServletFilterEjbRemoteInjectionTest().createDeployment(RemoteServletFilter.class,
CompanyRemote.class, DefaultCompany.class);
+ }
+
+ protected void decorateDescriptor(WebAppDescriptor descriptor) {
+ descriptor.filter(RemoteServletFilter.class, "/" +
getTestContextName());
}
public static class RemoteServletFilter implements Filter {
@@ -80,10 +53,7 @@ public class ServletFilterEjbRemoteInjec
@EJB
private CompanyRemote remoteCompany;
- private FilterConfig config;
-
public void init(FilterConfig config) {
- this.config = config;
}
public void destroy() {
@@ -91,14 +61,12 @@ public class ServletFilterEjbRemoteInjec
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws ServletException, IOException {
- String name = req.getParameter("name");
- if (StringUtils.isEmpty(name)) {
- name = "OpenEJB";
- }
-
- if (remoteCompany != null) {
- resp.getOutputStream().println("Remote: " +
remoteCompany.employ(name));
- }
+ run(req, resp, this);
+ }
+
+ public void testEjb () {
+ Assert.assertNotNull(remoteCompany);
+ remoteCompany.employ("test");
}
}
@@ -119,24 +87,6 @@ public class ServletFilterEjbRemoteInjec
}
- private void validateTest(String expectedOutput) throws IOException {
- final InputStream is = new URL("http://localhost:9080/" + TEST_NAME +
"/" + TEST_NAME).openStream();
- final ByteArrayOutputStream os = new ByteArrayOutputStream();
-
- int bytesRead = -1;
- byte[] buffer = new byte[8192];
- while ((bytesRead = is.read(buffer)) > -1) {
- os.write(buffer, 0, bytesRead);
- }
-
- is.close();
- os.close();
-
- String output = new String(os.toByteArray(), "UTF-8");
- assertNotNull("Response shouldn't be null", output);
- assertTrue("Output should contain: " + expectedOutput,
output.contains(expectedOutput));
- }
-
}
Modified:
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterPersistenceInjectionTest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterPersistenceInjectionTest.java?rev=1167436&r1=1167435&r2=1167436&view=diff
==============================================================================
---
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterPersistenceInjectionTest.java
(original)
+++
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterPersistenceInjectionTest.java
Sat Sep 10 02:17:43 2011
@@ -16,16 +16,12 @@
*/
package org.apache.openejb.arquillian;
-import org.apache.commons.lang.StringUtils;
import org.jboss.arquillian.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ArchivePaths;
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.asset.EmptyAsset;
-import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.jboss.shrinkwrap.descriptor.api.Descriptors;
import org.jboss.shrinkwrap.descriptor.api.spec.servlet.web.WebAppDescriptor;
+import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -33,53 +29,40 @@ import javax.annotation.Resource;
import javax.persistence.*;
import javax.servlet.*;
import javax.transaction.UserTransaction;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.assertTrue;
@RunWith(Arquillian.class)
-public class ServletFilterPersistenceInjectionTest {
-
- public static final String TEST_NAME =
ServletFilterPersistenceInjectionTest.class.getSimpleName();
+public class ServletFilterPersistenceInjectionTest extends TestSetup {
@Test
public void transactionInjectionShouldSucceed() throws Exception {
- final String expectedOutput = "Transaction injection successful";
+ final String expectedOutput = "testUserTransaction=true";
validateTest(expectedOutput);
}
@Test
public void persistentContextInjectionShouldSucceed() throws Exception {
- final String expectedOutput = "Transaction manager injection
successful";
+ final String expectedOutput = "testEntityManager=true";
validateTest(expectedOutput);
}
@Test
public void persistenceUnitInjectionShouldSucceed() throws Exception {
- final String expectedOutput = "Transaction manager factory injection
successful";
+ final String expectedOutput = "testEntityManagerFactory=true";
validateTest(expectedOutput);
}
@Deployment(testable = false)
- public static WebArchive createDeployment() {
- WebAppDescriptor descriptor =
Descriptors.create(WebAppDescriptor.class)
- .version("3.0")
- .filter(PersistenceServletFilter.class, "/" + TEST_NAME);
-
- WebArchive archive = ShrinkWrap.create(WebArchive.class, TEST_NAME +
".war")
- .addClass(PersistenceServletFilter.class)
- .addClass(Address.class)
- .addAsManifestResource("persistence.xml",
ArchivePaths.create("persistence.xml"))
- .setWebXML(new StringAsset(descriptor.exportAsString()))
- .addAsWebResource(EmptyAsset.INSTANCE,
ArchivePaths.create("beans.xml"));
+ public static WebArchive getArchive() {
+ return new
ServletFilterPersistenceInjectionTest().createDeployment(PersistenceServletFilter.class,
Address.class);
+ }
- System.err.println(descriptor.exportAsString());
+ protected void decorateDescriptor(WebAppDescriptor descriptor) {
+ descriptor.filter(PersistenceServletFilter.class, "/" +
getTestContextName());
+ }
- return archive;
+ public void decorateArchive(WebArchive archive) {
+ archive.addAsManifestResource("persistence.xml",
ArchivePaths.create("persistence.xml"));
}
public static class PersistenceServletFilter implements Filter {
@@ -93,10 +76,7 @@ public class ServletFilterPersistenceInj
@PersistenceContext
private EntityManager entityManager;
- private FilterConfig config;
-
public void init(FilterConfig config) {
- this.config = config;
}
public void destroy() {
@@ -104,41 +84,28 @@ public class ServletFilterPersistenceInj
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws ServletException, IOException {
- String name = req.getParameter("name");
- if (StringUtils.isEmpty(name)) {
- name = "OpenEJB";
- }
-
- if (transaction != null) {
- try {
- transaction.begin();
- transaction.commit();
- resp.getOutputStream().println("Transaction injection
successful");
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- if (entityManager != null) {
- Address a = new Address();
- try {
- entityManager.contains(a);
- resp.getOutputStream().println("Transaction manager
injection successful");
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- if (entityMgrFactory != null) {
- Address a = new Address();
- try {
- EntityManager em = entityMgrFactory.createEntityManager();
- em.contains(a);
- resp.getOutputStream().println("Transaction manager
factory injection successful");
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
+ run(req, resp, this);
}
+ public void testEntityManagerFactory() {
+ Assert.assertNotNull(entityMgrFactory);
+
+ Address a = new Address();
+ EntityManager em = entityMgrFactory.createEntityManager();
+ em.contains(a);
+ }
+
+ public void testEntityManager() {
+ Assert.assertNotNull(entityManager);
+ Address a = new Address();
+ entityManager.contains(a);
+ }
+
+ public void testUserTransaction() throws Exception{
+ Assert.assertNotNull(transaction);
+ transaction.begin();
+ transaction.commit();
+ }
}
@@ -183,24 +150,6 @@ public class ServletFilterPersistenceInj
}
}
- private void validateTest(String expectedOutput) throws IOException {
- final InputStream is = new URL("http://localhost:9080/" + TEST_NAME +
"/" + TEST_NAME).openStream();
- final ByteArrayOutputStream os = new ByteArrayOutputStream();
-
- int bytesRead = -1;
- byte[] buffer = new byte[8192];
- while ((bytesRead = is.read(buffer)) > -1) {
- os.write(buffer, 0, bytesRead);
- }
-
- is.close();
- os.close();
-
- String output = new String(os.toByteArray(), "UTF-8");
- assertNotNull("Response shouldn't be null", output);
- assertTrue("Output should contain: " + expectedOutput,
output.contains(expectedOutput));
- }
-
}
Added:
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/TestSetup.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/TestSetup.java?rev=1167436&view=auto
==============================================================================
---
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/TestSetup.java
(added)
+++
openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/TestSetup.java
Sat Sep 10 02:17:43 2011
@@ -0,0 +1,113 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.arquillian;
+
+import org.jboss.shrinkwrap.api.ArchivePaths;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.descriptor.api.Descriptors;
+import org.jboss.shrinkwrap.descriptor.api.spec.servlet.web.WebAppDescriptor;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.lang.reflect.Method;
+import java.net.URL;
+
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertTrue;
+
+public abstract class TestSetup {
+
+ public WebArchive createDeployment(Class...archiveClasses) {
+ WebAppDescriptor descriptor =
Descriptors.create(WebAppDescriptor.class)
+ .version("3.0");
+ decorateDescriptor(descriptor);
+
+ WebArchive archive = ShrinkWrap.create(WebArchive.class,
getTestContextName() + ".war")
+ .setWebXML(new StringAsset(descriptor.exportAsString()))
+ .addAsWebResource(EmptyAsset.INSTANCE,
ArchivePaths.create("beans.xml"));
+ if (archiveClasses != null) {
+ for (Class c: archiveClasses) {
+ archive.addClass(c);
+ }
+ }
+ decorateArchive(archive);
+
+ return archive;
+ }
+
+ protected String getTestContextName() {
+ return this.getClass().getSimpleName();
+ }
+
+ protected void decorateDescriptor(WebAppDescriptor descriptor) {
+
+ }
+
+ protected void decorateArchive(WebArchive archive) {
+
+ }
+
+ protected void validateTest(String expectedOutput) throws IOException {
+ final InputStream is = new URL("http://localhost:9080/" +
getTestContextName() + "/" + getTestContextName()).openStream();
+ final ByteArrayOutputStream os = new ByteArrayOutputStream();
+
+ int bytesRead = -1;
+ byte[] buffer = new byte[8192];
+ while ((bytesRead = is.read(buffer)) > -1) {
+ os.write(buffer, 0, bytesRead);
+ }
+
+ is.close();
+ os.close();
+
+ String output = new String(os.toByteArray(), "UTF-8");
+ assertNotNull("Response shouldn't be null", output);
+ assertTrue("Output should contain: " + expectedOutput,
output.contains(expectedOutput));
+ }
+
+ public static void run(ServletRequest req, ServletResponse resp, Object
obj) throws IOException {
+ final Class<?> clazz = obj.getClass();
+ final Method[] methods = clazz.getMethods();
+
+ resp.setContentType("text/plain");
+ final PrintWriter writer = resp.getWriter();
+
+ for (Method method : methods) {
+ if (method.getName().startsWith("test")) {
+
+ writer.print(method.getName());
+
+ writer.print("=");
+
+ try {
+ method.invoke(obj);
+ writer.println("true");
+ } catch (Throwable e) {
+ writer.println("false");
+ }
+ }
+ }
+ }
+
+}