package samplest.etag; import com.github.kevinsawicki.http.HttpRequest; import org.junit.ClassRule; import org.junit.Test; import restx.tests.HttpTestClient; import restx.tests.RestxServerRule; import static org.assertj.core.api.Assertions.assertThat; /** * Date: 22/5/14 * Time: 20:43 */ public class SampleETagResourceTest { @ClassRule public static RestxServerRule server = new RestxServerRule(); @Test public void should_provide_etag() throws Exception { HttpRequest request = client().GET("/api/etag/test1"); assertHttpResponse(request, 200, "{\n \"name\" : \"test1\"\n}"); assertThat(request.header("ETag")).isEqualTo("5a105e8b9d40e1329780d62ea2265d8a"); } @Test public void should_304_on_provided_etag() throws Exception { HttpRequest request = client().GET("/api/etag/test1").header("If-None-Match", "5a105e8b9d40e1329780d62ea2265d8a"); assertThat(request.code()).isEqualTo(304); } @Test public void should_reply_on_bad_provided_etag() throws Exception { HttpRequest request = client().GET("/api/etag/test1").header("If-None-Match", "123456"); assertHttpResponse(request, 200, "{\n \"name\" : \"test1\"\n}"); } protected HttpRequest assertHttpResponse(HttpRequest httpRequest, int expectedStatus, String expectedBody) { assertThat(httpRequest.code()).isEqualTo(expectedStatus); assertThat(httpRequest.body().trim()).isEqualTo(expectedBody); return httpRequest; } protected HttpTestClient client() { return server.client().authenticatedAs("admin"); } }