package org.jboss.seam.compat.jaxrs.provider;
import java.net.URL;
import org.jboss.arquillian.api.ArquillianResource;
import org.jboss.arquillian.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.seam.compat.jaxrs.AbstractRestClientTest;
import org.jboss.seam.compat.jaxrs.MyApplication;
import org.jboss.seam.compat.jaxrs.Resource;
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.JavaArchive;
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.Test;
import org.junit.runner.RunWith;
/**
* Verifies that a JAX-RS provider gets JAX-RS injections when bundled inside a .jar placed in WEB-INF/lib.
*
* @author <a href="http://community.jboss.org/people/jharting">Jozef Hartinger</a>
* @see http://java.net/jira/browse/GLASSFISH-15794
* @see https://issues.jboss.org/browse/RESTEASY-506
*/
@RunWith(Arquillian.class)
public class ProviderInjectionTest extends AbstractRestClientTest {
@ArquillianResource
URL deploymentUrl;
@Deployment(testable = false)
public static WebArchive getDeployment() {
WebAppDescriptor webXml = Descriptors.create(WebAppDescriptor.class);
return ShrinkWrap.create(WebArchive.class, "test.war").addClasses(MyApplication.class, Resource.class)
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml").setWebXML(new StringAsset(webXml.exportAsString()))
.addAsLibrary(getJar());
}
public static JavaArchive getJar() {
return ShrinkWrap.create(JavaArchive.class, "test.jar").addClasses(MyExceptionMapper.class, Foo.class)
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
@Test
public void testProviderInjected() throws Exception {
test(deploymentUrl.toString() + "api/test/exception", 200,
"SecurityContext:true,Providers:true,ServletConfig:true,ServletContext:true,CDI field injection:true");
}
}