package org.jboss.resteasy.test.keystone; import static org.jboss.resteasy.test.TestPortProvider.generateURL; import java.util.Set; import javax.ws.rs.client.Entity; import javax.ws.rs.core.Application; import javax.ws.rs.core.Configurable; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import org.jboss.resteasy.client.jaxrs.ResteasyClient; import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder; import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget; import org.jboss.resteasy.keystone.model.Mappers; import org.jboss.resteasy.keystone.model.Project; import org.jboss.resteasy.keystone.model.Projects; import org.jboss.resteasy.keystone.server.SkeletonKeyApplication; import org.jboss.resteasy.plugins.server.netty.NettyJaxrsServer; import org.jboss.resteasy.spi.ResteasyDeployment; import org.jboss.resteasy.test.TestPortProvider; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; /** * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a> * @version $Revision: 1 $ */ public class ProjectsResourceTest { private static NettyJaxrsServer server; private static ResteasyDeployment deployment; public static class SApp extends Application { SkeletonKeyApplication app; public SApp(@Context Configurable confgurable) { this.app = new SkeletonKeyApplication(confgurable); } @Override public Set<Object> getSingletons() { return app.getSingletons(); } } @BeforeClass public static void before() throws Exception { deployment = new ResteasyDeployment(); deployment.setApplicationClass(SApp.class.getName()); server = new NettyJaxrsServer(); server.setPort(TestPortProvider.getPort()); server.setRootResourcePath("/"); server.setDeployment(deployment); server.start(); } @AfterClass public static void after() throws Exception { server.stop(); server = null; deployment = null; } @Test public void testProjects() { String newProject = "{ \"project\" : { \"name\" : \"Resteasy\", \"description\" : \"The Best of REST\", \"enabled\" : true } }"; ResteasyClient client = new ResteasyClientBuilder().providerFactory(deployment.getProviderFactory()).build(); ResteasyWebTarget projectsTarget = client.target(generateURL("/projects")); Response response = projectsTarget.request().post(Entity.json(newProject)); Assert.assertEquals(response.getStatus(), 201); response.close(); ResteasyWebTarget target = client.target(response.getLocation()); String project = target.request().get(String.class); System.out.println(project); Project u = target.request().get(Project.class); System.out.println(u); Assert.assertEquals("Resteasy", u.getName()); Assert.assertEquals("The Best of REST", u.getDescription()); Assert.assertTrue(u.getEnabled()); u.setName("Resteasy JAX-RS"); Assert.assertEquals(target.request().put(Entity.json(u)).getStatus(), 204); u = target.request().get(Project.class); Assert.assertEquals("Resteasy JAX-RS", u.getName()); Assert.assertEquals(target.request().delete().getStatus(), 204); response = target.request().get(); Assert.assertEquals(404, response.getStatus()); response.close(); projectsTarget = client.target(generateURL("/projects")); Mappers.registerContextResolver(projectsTarget); Projects projects = projectsTarget.request().get(Projects.class); client.close(); } @Test public void testProjectsId() { String newProject = "{ \"project\" : { \"id\" : \"5\", \"name\" : \"Resteasy\", \"description\" : \"The Best of REST\", \"enabled\" : true } }"; ResteasyClient client = new ResteasyClientBuilder().providerFactory(deployment.getProviderFactory()).build(); Response response = client.target(generateURL("/projects")).request().post(Entity.json(newProject)); Assert.assertEquals(response.getStatus(), 201); response.close(); ResteasyWebTarget target = client.target(response.getLocation()); String project = target.request().get(String.class); System.out.println(project); Project u = target.request().get(Project.class); System.out.println(u); Assert.assertEquals("5", u.getId()); Assert.assertEquals("Resteasy", u.getName()); Assert.assertEquals("The Best of REST", u.getDescription()); Assert.assertTrue(u.getEnabled()); u.setName("Resteasy JAX-RS"); Assert.assertEquals(target.request().put(Entity.json(u)).getStatus(), 204); u = target.request().get(Project.class); Assert.assertEquals("Resteasy JAX-RS", u.getName()); Assert.assertEquals(target.request().delete().getStatus(), 204); response = target.request().get(); Assert.assertEquals(404, response.getStatus()); client.close(); } }