package org.swisspush.reststorage; import com.jayway.restassured.RestAssured; import io.vertx.ext.unit.Async; import io.vertx.ext.unit.TestContext; import io.vertx.ext.unit.junit.VertxUnitRunner; import org.junit.Test; import org.junit.runner.RunWith; import static com.jayway.restassured.RestAssured.*; @RunWith(VertxUnitRunner.class) public class PathLevelTest extends AbstractTestCase { @Test public void testTryToPutResourceOverCollection(TestContext context) { Async async = context.async(); RestAssured.basePath = ""; with().put("/tests/crush/test1/test2/test3"); // here we assume, that on the path server is already a collection given(). body("{ \"foo\": \"bar\" }"). when(). put("/tests"). then(). assertThat().statusCode(405); async.complete(); } @Test public void testPut4levels(TestContext context) { Async async = context.async(); given(). body("{ \"foo\": \"bar\" }"). when(). put("/tests/crush/test1/test2/test3/test4"). then(). assertThat().statusCode(200); // test level 1 with and without trailing slash context.assertEquals("[test2/]", get("/tests/crush/test1").body().jsonPath().get("test1").toString()); context.assertEquals("[test2/]", get("/tests/crush/test1/").body().jsonPath().get("test1").toString()); // test level 2 with and without trailing slash context.assertEquals("[test3/]", get("/tests/crush/test1/test2").body().jsonPath().get("test2").toString()); context.assertEquals("[test3/]", get("/tests/crush/test1/test2/").body().jsonPath().get("test2").toString()); // test level 3 with and without trailing slash context.assertEquals("[test4]", get("/tests/crush/test1/test2/test3").body().jsonPath().get("test3").toString()); context.assertEquals("[test4]", get("/tests/crush/test1/test2/test3/").body().jsonPath().get("test3").toString()); // test4 level context.assertEquals("{ \"foo\": \"bar\" }", get("/tests/crush/test1/test2/test3/test4").body().asString()); async.complete(); } @Test public void testPutResourceOverCollection(TestContext context) { Async async = context.async(); given(). body("{ \"foo\": \"bar\" }"). when(). put("/tests/crush/test1/test2/test3/test4"). then(). assertThat().statusCode(200); given(). body("{ \"foo\": \"bar\" }"). when(). put("/tests/crush/test1/test2"). then(). assertThat().statusCode(405); async.complete(); } @Test public void testPutCollectionOverResource(TestContext context) { Async async = context.async(); given(). body("{ \"foo\": \"bar\" }"). when(). put("/tests/crush/test1/test2"). then(). assertThat().statusCode(200); given(). body("{ \"foo\": \"bar\" }"). when(). put("/tests/crush/test1/test2/test3/test4"). then(). assertThat().statusCode(405); async.complete(); } }