/** * Verifies that the endpoint forwards a request message via the event bus. */ @Test public void testProcessMessageSendsRequestViaEventBus() { final Message msg = ProtonHelper.message(); msg.setMessageId("random-id"); msg.setSubject(TenantConstants.TenantAction.get.toString()); MessageHelper.addTenantId(msg, Constants.DEFAULT_TENANT); MessageHelper.annotate(msg, resource); endpoint.processRequest(msg, resource, Constants.PRINCIPAL_ANONYMOUS); verify(eventBus).send(eq(TenantConstants.EVENT_BUS_ADDRESS_TENANT_IN), any(JsonObject.class), any(DeliveryOptions.class)); } }
private void doTenantHttpRequest( final RoutingContext ctx, final String tenantId, final TenantConstants.TenantAction action, final Predicate<Integer> successfulOutcomeFilter, final Handler<HttpServerResponse> httpServerResponseHandler) { logger.debug("http request [{}] for tenant [tenant: {}]", action, tenantId); final JsonObject payload = ctx.get(KEY_REQUEST_BODY); final JsonObject requestMsg = EventBusMessage.forOperation(action.toString()) .setTenant(tenantId) .setJsonPayload(payload) .toJson(); sendAction(ctx, requestMsg, getDefaultResponseHandler(ctx, successfulOutcomeFilter, httpServerResponseHandler)); }
private void doTenantHttpRequest( final RoutingContext ctx, final String tenantId, final TenantConstants.TenantAction action, final Predicate<Integer> successfulOutcomeFilter, final Handler<HttpServerResponse> httpServerResponseHandler) { logger.debug("http request [{}] for tenant [tenant: {}]", action, tenantId); final JsonObject payload = ctx.get(KEY_REQUEST_BODY); final JsonObject requestMsg = EventBusMessage.forOperation(action.toString()) .setTenant(tenantId) .setJsonPayload(payload) .toJson(); sendAction(ctx, requestMsg, getDefaultResponseHandler(ctx, successfulOutcomeFilter, httpServerResponseHandler)); }
private <T> Future<TenantObject> get( final TriTuple<TenantAction, T, Object> key, final Supplier<JsonObject> payloadSupplier, final Span currentSpan) { TracingHelper.TAG_CACHE_HIT.set(currentSpan, true); return getResponseFromCache(key).recover(cacheMiss -> { TracingHelper.TAG_CACHE_HIT.set(currentSpan, false); final Future<TenantResult<TenantObject>> tenantResult = Future.future(); createAndSendRequest( TenantConstants.TenantAction.get.toString(), customizeRequestApplicationProperties(), payloadSupplier.get().toBuffer(), RegistrationConstants.CONTENT_TYPE_APPLICATION_JSON, tenantResult.completer(), key, currentSpan); return tenantResult; }).map(tenantResult -> { switch(tenantResult.getStatus()) { case HttpURLConnection.HTTP_OK: return tenantResult.getPayload(); case HttpURLConnection.HTTP_NOT_FOUND: throw new ClientErrorException(tenantResult.getStatus(), "no such tenant"); default: throw StatusCodeMapper.from(tenantResult); } }); }
/** * Verifies that the base service routes a deprecated request for retrieving * a tenant by its identifier to the corresponding <em>get</em> method. * * @param ctx The vert.x test context. */ @Test public void testDeprecatedGetByIdSucceeds(final TestContext ctx) { final EventBusMessage request = EventBusMessage.forOperation(TenantConstants.TenantAction.get.toString()) .setJsonPayload(new JsonObject().put(TenantConstants.FIELD_PAYLOAD_TENANT_ID, "my-tenant")); tenantService.processRequest(request).setHandler(ctx.asyncAssertSuccess(response -> { ctx.assertEquals(HttpURLConnection.HTTP_OK, response.getStatus()); ctx.assertEquals("getById", response.getJsonPayload().getString("operation")); })); }
/** * Verifies that the base service routes a request for retrieving * a tenant by its trusted certificate authority to the corresponding * <em>get</em> method. * * @param ctx The vert.x test context. */ @Test public void testGetByCaSucceeds(final TestContext ctx) { final EventBusMessage request = EventBusMessage.forOperation(TenantConstants.TenantAction.get.toString()) .setJsonPayload(new JsonObject().put(TenantConstants.FIELD_PAYLOAD_SUBJECT_DN, "CN=test")); tenantService.processRequest(request).setHandler(ctx.asyncAssertSuccess(response -> { ctx.assertEquals(HttpURLConnection.HTTP_OK, response.getStatus()); ctx.assertEquals("getByCa", response.getJsonPayload().getString("operation")); })); }
private static EventBusMessage createRequest(final TenantConstants.TenantAction action, final JsonObject payload) { return EventBusMessage.forOperation(action.toString()) .setTenant(TEST_TENANT) .setJsonPayload(payload); }
/** * Verifies that the base service fails for an incomplete message that does not contain mandatory fields. * * @param ctx The vert.x test context. */ @Test public void testAddFailsForIncompleteMessage(final TestContext ctx) { final EventBusMessage msg = EventBusMessage.forOperation(TenantConstants.TenantAction.add.toString()); tenantService.processRequest(msg).setHandler(ctx.asyncAssertFailure(t -> { ctx.assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, ((ServiceInvocationException) t).getErrorCode()); })); }
private Message givenAMessageHavingProperties(final TenantConstants.TenantAction action) { final Message msg = ProtonHelper.message(); msg.setMessageId("msg"); msg.setReplyTo("reply"); msg.setSubject(action.toString()); return msg; } }
private static EventBusMessage createRequest(final TenantConstants.TenantAction action, final JsonObject payload) { return EventBusMessage.forOperation(action.toString()) .setTenant(TEST_TENANT) .setJsonPayload(payload); }