Last active
April 29, 2020 15:35
-
-
Save psamsotha/af6dae41ea9174cb057fbed7e0425179 to your computer and use it in GitHub Desktop.
Starter for Jersey Test Framework
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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