package integration.injection;
import integration.TestVerticle;
import integration.VertxNubesTestBase;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.unit.Async;
import io.vertx.ext.unit.TestContext;
import mock.domains.Dog;
import org.junit.Test;
public class TestInject extends VertxNubesTestBase {
@Test
public void testInjectService(TestContext context) {
Async async = context.async();
int i = 2;
Dog dog = TestVerticle.dogService.getDog(i);
getJSON("/inject/service?idx=" + i, response -> {
response.bodyHandler(buff -> {
JsonObject json = new JsonObject(buff.toString());
context.assertEquals(dog.getName(), json.getString("name"));
async.complete();
});
});
}
@Test
public void testInjectClass(TestContext context) {
Async async = context.async();
Dog snoop = TestVerticle.SNOOPY;
getJSON("/inject/class", response -> {
response.bodyHandler(buff -> {
JsonObject json = new JsonObject(buff.toString());
context.assertEquals(snoop.getName(), json.getString("name"));
async.complete();
});
});
}
@Test
public void testInjectSocket(TestContext context) {
Async async = context.async();
Dog snoop = TestVerticle.SNOOPY;
client().websocket("/injectedSocket/websocket", sock -> {
sock.handler(buff -> {
context.assertEquals(snoop.getName(), buff.toString("UTF-8"));
async.complete();
});
sock.write(Buffer.buffer("something"));
});
}
@Test
public void testInjectRouter(TestContext context) {
Async async = context.async();
getJSON("/inject/router", response -> {
context.assertEquals(200, response.statusCode());
response.bodyHandler(buff -> {
JsonObject json = new JsonObject(buff.toString("UTF-8"));
context.assertNotNull(json.getString("router"));
async.complete();
});
});
}
@Test
public void testReadBodyAsJsonObject(TestContext context) {
Async async = context.async();
JsonObject snoop = new JsonObject().put("name", "Snoopy").put("breed", "Beagle");
sendJSON("/inject/readBodyAsJsonObject", snoop, response -> {
context.assertEquals(200, response.statusCode());
response.bodyHandler(buff -> {
context.assertEquals(snoop, new JsonObject(buff.toString("UTF-8")));
async.complete();
});
});
}
@Test
public void testReadBodyAsJsonArray(TestContext context) {
Async async = context.async();
JsonObject snoop = new JsonObject().put("name", "Snoopy").put("breed", "Beagle");
JsonObject snowy = new JsonObject().put("name", "Snowy").put("breed", "Terrier");
JsonArray dogs = new JsonArray();
dogs.add(snoop).add(snowy);
sendJSON("/inject/readBodyAsJsonArray", dogs, response -> {
context.assertEquals(200, response.statusCode());
response.bodyHandler(buff -> {
context.assertEquals(dogs, new JsonArray(buff.toString("UTF-8")));
async.complete();
});
});
}
@Test
public void testWrongBodyAsJsonArray(TestContext context) {
Async async = context.async();
sendJSON("/inject/readBodyAsJsonArray", "{}", response -> {
context.assertEquals(400, response.statusCode());
async.complete();
});
}
@Test
public void testWrongBodyAsJsonObject(TestContext context) {
Async async = context.async();
sendJSON("/inject/readBodyAsJsonObject", "[]", response -> {
context.assertEquals(400, response.statusCode());
async.complete();
});
}
}