Skip to content

Instantly share code, notes, and snippets.

@psamsotha
Last active April 29, 2020 15:35
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save psamsotha/af6dae41ea9174cb057fbed7e0425179 to your computer and use it in GitHub Desktop.
Save psamsotha/af6dae41ea9174cb057fbed7e0425179 to your computer and use it in GitHub Desktop.
Starter for Jersey Test Framework
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import org.glassfish.jersey.filter.LoggingFilter;
import org.glassfish.jersey.server.JSONP;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.servlet.ServletContainer;
import org.glassfish.jersey.test.DeploymentContext;
import org.glassfish.jersey.test.JerseyTest;
import org.glassfish.jersey.test.ServletDeploymentContext;
import org.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory;
import org.glassfish.jersey.test.spi.TestContainerFactory;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
/**
*
* Run like any other JUnit test. Only one require dependency
* <dependency>
* <groupId>org.glassfish.jersey.test-framework.providers</groupId>
* <artifactId>jersey-test-framework-provider-grizzly2</artifactId>
* <version>${jersey2.version}</version>
* <scope>test</scope>
* </dependency>
*/
public class TestFrameworkStarter extends JerseyTest {
public static class MyClass {
public String value;
public static MyClass fromString(String param) {
MyClass c = new MyClass();
c.value = param;
return c;
}
}
@Path("test")
public static class TestResource {
@GET
@JSONP(queryParam = "callback")
@Produces({"application/json", "application/javascript"})
public Response get(@Context HttpServletRequest request,
@QueryParam("test") MyClass cls) {
return Response.ok(cls).build();
}
}
@Override
public ResourceConfig configure() {
return new ResourceConfig()
.register(new LoggingFilter(Logger.getAnonymousLogger(), true))
.register(TestResource.class);
// register ParamConverterProvider is you have one
// Make it a public static inner class of this test class
// and just register the class
}
@Override
public TestContainerFactory getTestContainerFactory() {
return new GrizzlyWebTestContainerFactory();
}
@Override
public DeploymentContext configureDeployment() {
return ServletDeploymentContext.forServlet(new ServletContainer(configure())).build();
}
@Test
public void doit() {
final Response response = target("test")
.queryParam("test", "HelloWorld")
.queryParam("callback", "angular1234")
.request()
.accept("application/javascript")
.get();
assertEquals("angular1234({\"value\":\"HelloWorld\"})", response.readEntity(String.class));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment