package org.jboss.seam.compat.jaxrs.interceptor;
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.cdi.beans.BeansDescriptor;
import org.jboss.shrinkwrap.descriptor.api.spec.servlet.web.WebAppDescriptor;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(Arquillian.class)
public class InterceptedResourceTest extends AbstractRestClientTest {
@ArquillianResource
URL deploymentUrl;
@Deployment(testable = false)
public static WebArchive getDeployment() {
BeansDescriptor beansXml = Descriptors.create(BeansDescriptor.class).interceptor(ValidationInterceptor.class);
WebAppDescriptor webXml = Descriptors.create(WebAppDescriptor.class);
return ShrinkWrap.create(WebArchive.class, "test.war")
.addClasses(MyApplication.class, Resource.class)
.addAsWebInfResource(new StringAsset(beansXml.exportAsString()), beansXml.getDescriptorName())
.setWebXML(new StringAsset(webXml.exportAsString())).addAsLibrary(getJar());
}
public static JavaArchive getJar() {
return ShrinkWrap.create(JavaArchive.class, "test.jar").addClasses(Valid.class, ValidationInterceptor.class)
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
@Test
public void testCdiResourceIsIntercepted() throws Exception {
test(deploymentUrl.toString() + "api/test/ping", 200, "Validated pong");
}
}