package integration.services;
import integration.VertxNubesTestBase;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.eventbus.DeliveryOptions;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.unit.Async;
import io.vertx.ext.unit.TestContext;
import org.junit.Test;
public class TestServiceProxy extends VertxNubesTestBase {
@Test
public void testServiceIsProxified(TestContext context) {
Async async = context.async();
String msg = "No problem is too big to run away from";
JsonObject json = new JsonObject();
json.put("original", msg); // the name of the param as declared in the method, service-proxy is pretty clever
DeliveryOptions options = new DeliveryOptions();
options.addHeader("action", "echo");
vertx.eventBus().send("service.parrot", json, options, reply -> {
context.assertTrue(reply.succeeded());
context.assertEquals(msg, reply.result().body());
async.complete();
});
}
@Test
public void testServiceIsInjected(TestContext context) {
String msg = "A whole stack of memories never equals one little hope";
Async async = context.async();
client().post("/injectedProxy", resp -> {
context.assertEquals(200, resp.statusCode());
resp.bodyHandler(buff -> {
context.assertEquals(msg, buff.toString("UTF-8"));
async.complete();
});
}).end(Buffer.buffer(msg));
}
}