content: 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));
    }
  
  }
  