package edu.lmu.cs.headmaster.ws.resource; import org.springframework.web.context.ContextLoaderListener; import org.springframework.web.context.request.RequestContextListener; import com.sun.jersey.api.client.WebResource; import com.sun.jersey.api.client.config.ClientConfig; import com.sun.jersey.api.client.config.DefaultClientConfig; import com.sun.jersey.spi.spring.container.servlet.SpringServlet; import com.sun.jersey.test.framework.AppDescriptor; import com.sun.jersey.test.framework.JerseyTest; import com.sun.jersey.test.framework.WebAppDescriptor; import edu.lmu.cs.headmaster.ws.resource.StringListMessageBodyProvider; /** * Base class for all other resource test classes to extend. It defines a shared * web resource object for subclass convenience. */ public abstract class ResourceTest extends JerseyTest { protected WebResource wr; public ResourceTest() { super(); wr = resource(); } @Override protected AppDescriptor configure() { return configure("edu.lmu.cs.headmaster.ws.resource.SecurityContextContainerRequestFilter"); } /** * Parameterized configure method to allow for different types of resource * tests. */ protected AppDescriptor configure(String securityContextClassName) { // The test web app descriptor nearly replicates web.xml except for the // Spring context and a container request filter. return new WebAppDescriptor.Builder("edu.lmu.cs.headmaster.ws.resource") .clientConfig(createClientConfig()) .contextParam("contextConfigLocation", "classpath:testContext.xml") .contextListenerClass(ContextLoaderListener.class) .requestListenerClass(RequestContextListener.class) .servletClass(SpringServlet.class) .initParam( "com.sun.jersey.config.property.resourceConfigClass", "com.sun.jersey.api.core.PackagesResourceConfig" ) .initParam( "com.sun.jersey.config.property.packages", "edu.lmu.cs.headmaster.ws.resource" ) .initParam( "com.sun.jersey.spi.container.ContainerRequestFilters", securityContextClassName ) .contextPath("headmaster-test").build(); } /** * Makes sure that our string list body reader/writer gets in there... */ protected ClientConfig createClientConfig() { final ClientConfig config = new DefaultClientConfig(); config.getClasses().add(StringListMessageBodyProvider.class); return config; } }