From 59d68a64d81572b03ac4df0dd32c483fa530de73 Mon Sep 17 00:00:00 2001 From: Jozef Hartinger Date: Fri, 21 Mar 2014 17:24:09 +0100 Subject: [PATCH] WELD-1621 Tests --- .../ee/servletContext/BarServlet.java | 47 +++++++++++ .../ee/servletContext/FooServlet.java | 47 +++++++++++ .../ServletContextBeanTest.java | 81 +++++++++++++++++++ .../ee/servletContext/SharedBean.java | 32 ++++++++ 4 files changed, 207 insertions(+) create mode 100644 tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/BarServlet.java create mode 100644 tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/FooServlet.java create mode 100644 tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/ServletContextBeanTest.java create mode 100644 tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/SharedBean.java diff --git a/tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/BarServlet.java b/tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/BarServlet.java new file mode 100644 index 00000000000..349aac1a2ac --- /dev/null +++ b/tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/BarServlet.java @@ -0,0 +1,47 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2014, Red Hat, Inc., and individual contributors + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * Licensed 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.jboss.weld.tests.builtinBeans.ee.servletContext; + +import java.io.IOException; + +import javax.inject.Inject; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@WebServlet("/") +public class BarServlet extends HttpServlet { + + @Inject + private ServletContext ctx; + + @Inject + private SharedBean sharedBean; + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("text/plain"); + try { + resp.getWriter().write(ctx.getContextPath() + ";" + sharedBean.getContextPath()); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/FooServlet.java b/tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/FooServlet.java new file mode 100644 index 00000000000..ca9f375f023 --- /dev/null +++ b/tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/FooServlet.java @@ -0,0 +1,47 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2014, Red Hat, Inc., and individual contributors + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * Licensed 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.jboss.weld.tests.builtinBeans.ee.servletContext; + +import java.io.IOException; + +import javax.inject.Inject; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@WebServlet("/") +public class FooServlet extends HttpServlet { + + @Inject + private ServletContext ctx; + + @Inject + private SharedBean sharedBean; + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("text/plain"); + try { + resp.getWriter().write(ctx.getContextPath() + ";" + sharedBean.getContextPath()); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/ServletContextBeanTest.java b/tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/ServletContextBeanTest.java new file mode 100644 index 00000000000..abe5dcea81c --- /dev/null +++ b/tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/ServletContextBeanTest.java @@ -0,0 +1,81 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2014, Red Hat, Inc., and individual contributors + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * Licensed 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.jboss.weld.tests.builtinBeans.ee.servletContext; + +import java.net.URL; + +import javax.servlet.ServletContext; + +import junit.framework.Assert; + +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.Archive; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.asset.EmptyAsset; +import org.jboss.shrinkwrap.api.spec.EnterpriseArchive; +import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import org.jboss.weld.tests.category.Integration; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; + +import com.gargoylesoftware.htmlunit.TextPage; +import com.gargoylesoftware.htmlunit.WebClient; + +/** + * + * Tests the built-in bean for {@link ServletContext}. + * + * @author Jozef Hartinger + * @see WELD-1621 + * + */ +@RunWith(Arquillian.class) +@Category(Integration.class) +public class ServletContextBeanTest { + + @ArquillianResource(FooServlet.class) + private URL fooUrl; + + @ArquillianResource(BarServlet.class) + private URL barUrl; + + @Deployment(testable = false) + public static Archive getDeployment() { + WebArchive war1 = ShrinkWrap.create(WebArchive.class, "foo.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml").addClasses(FooServlet.class); + WebArchive war2 = ShrinkWrap.create(WebArchive.class, "bar.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml").addClasses(BarServlet.class); + JavaArchive library = ShrinkWrap.create(JavaArchive.class).addClass(SharedBean.class); + return ShrinkWrap.create(EnterpriseArchive.class).addAsModules(war1, war2).addAsLibrary(library); + } + + @Test + public void testFirstArchive() throws Exception { + WebClient client = new WebClient(); + TextPage page = client.getPage(fooUrl); + Assert.assertEquals("/foo;/foo", page.getContent()); + } + + @Test + public void testSecondArchive() throws Exception { + WebClient client = new WebClient(); + TextPage page = client.getPage(barUrl); + Assert.assertEquals("/bar;/bar", page.getContent()); + } +} diff --git a/tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/SharedBean.java b/tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/SharedBean.java new file mode 100644 index 00000000000..e52ee050944 --- /dev/null +++ b/tests-arquillian/src/test/java/org/jboss/weld/tests/builtinBeans/ee/servletContext/SharedBean.java @@ -0,0 +1,32 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2014, Red Hat, Inc., and individual contributors + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * Licensed 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.jboss.weld.tests.builtinBeans.ee.servletContext; + +import javax.enterprise.context.Dependent; +import javax.inject.Inject; +import javax.servlet.ServletContext; + +@Dependent +public class SharedBean { + + @Inject + private ServletContext ctx; + + public String getContextPath() { + return ctx.getContextPath(); + } +}