package com.thoughtworks.inproctester.jersey.tests;
import com.sun.jersey.api.client.ClientResponse;
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.test.framework.JerseyTest;
import com.sun.jersey.test.framework.WebAppDescriptor;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import org.codehaus.jackson.map.ObjectMapper;
import org.junit.Assert;
import org.junit.Test;
import javax.ws.rs.core.MediaType;
import java.awt.*;
public class InProcessJerseyTest extends JerseyTest {
public static ClientConfig loadClientConfig() {
ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getClasses().add(JacksonJsonProvider.class);
return clientConfig;
}
private ObjectMapper objectMapper = new ObjectMapper();
public InProcessJerseyTest() throws Exception {
super(new WebAppDescriptor.Builder("com.thoughtworks.inproctester.jersey.testapp")
.clientConfig(loadClientConfig())
.servletPath("/*")
// .initParam("com.sun.jersey.config.feature.Redirect", "true")
.initParam("com.sun.jersey.api.json.POJOMappingFeature", "true")
.contextPath("/jersey").build());
}
@Test
public void shouldAddResource() throws Exception {
WebResource webResource = resource();
JsonNode testResource = objectMapper.readValue("{\"name\":\"test\"}", JsonNode.class);
ClientResponse createResponse = webResource.path("/").type(MediaType.APPLICATION_JSON).entity(testResource).post(ClientResponse.class);
Assert.assertEquals(201, createResponse.getStatus());
Assert.assertEquals(testResource, createResponse.getEntity(JsonNode.class));
JsonNode testResourceFromServer = webResource.uri(createResponse.getLocation()).accept(MediaType.APPLICATION_JSON).get(JsonNode.class);
Assert.assertEquals(testResource, testResourceFromServer);
}
}