package integration.params; import integration.TestVerticle; import integration.VertxNubesTestBase; import io.vertx.core.buffer.Buffer; import io.vertx.ext.unit.Async; import io.vertx.ext.unit.TestContext; import mock.domains.Dog; import org.junit.Test; import static io.vertx.core.http.HttpHeaders.CONTENT_TYPE; public class FormParametersTest extends VertxNubesTestBase { @Test public void testFormString(TestContext context) { String myString = "Snoopy"; Buffer data = Buffer.buffer(); data.appendString("parameter=" + myString); Async async = context.async(); client().post("/params/form/string").handler(response -> { Buffer buff = Buffer.buffer(); response.handler(buffer -> { buff.appendBuffer(buffer); }); response.endHandler(handler -> { context.assertEquals(myString, buff.toString("UTF-8")); async.complete(); }); }).putHeader(CONTENT_TYPE, "application/x-www-form-urlencoded").end(data); } /* etc. : all types : no point in testing, it's the same as query parameters */ @Test public void testBackingParams(TestContext context) { Dog dog = TestVerticle.dogService.someDog(); Buffer data = Buffer.buffer(); data.appendString("name=" + dog.getName() + "&breed=" + dog.getBreed()); Async async = context.async(); client().post("/params/form/dog").handler(response -> { response.bodyHandler(buff -> { context.assertEquals(dog.toString(), buff.toString("UTF-8")); async.complete(); }); }).putHeader(CONTENT_TYPE, "application/x-www-form-urlencoded").end(data); } @Test public void testWrongBackingParams(TestContext context) { Dog dog = TestVerticle.dogService.someDog(); String invalidValue = "invalidLong"; Buffer data = Buffer.buffer(); data.appendString("name=" + dog.getName() + "&breed=" + dog.getBreed() + "&age=" + invalidValue); Async async = context.async(); client().post("/params/form/dog").handler(response -> { context.assertEquals(400, response.statusCode()); response.bodyHandler(buff -> { context.assertEquals("Some request of form parameter has an invalid value", buff.toString("UTF-8")); async.complete(); }); }).putHeader(CONTENT_TYPE, "application/x-www-form-urlencoded").end(data); } }