protected Future<Void> addTenant(final String tenantId, final JsonObject payload) { final Future<TenantResult<JsonObject>> result = Future.future(); getCompleteTenantService().add(tenantId, payload, result.completer()); return result.map(response -> { if (response.getStatus() == HttpURLConnection.HTTP_CREATED) { return null; } else { throw StatusCodeMapper.from(response); } }); }
/** * Verifies that a tenant cannot be added if it uses a trusted certificate authority * with the same subject DN as an already existing tenant. * * @param ctx The vert.x test context. */ @Test public void testAddTenantFailsForDuplicateCa(final TestContext ctx) { final JsonObject trustedCa = new JsonObject() .put(TenantConstants.FIELD_PAYLOAD_SUBJECT_DN, "CN=taken") .put(TenantConstants.FIELD_PAYLOAD_PUBLIC_KEY, "NOTAKEY"); final TenantObject tenant = TenantObject.from("tenant", true) .setProperty(TenantConstants.FIELD_PAYLOAD_TRUSTED_CA, trustedCa); addTenant("tenant", JsonObject.mapFrom(tenant)).map(ok -> { final TenantObject newTenant = TenantObject.from("newTenant", true) .setProperty(TenantConstants.FIELD_PAYLOAD_TRUSTED_CA, trustedCa); getCompleteTenantService().add( "newTenant", JsonObject.mapFrom(newTenant), ctx.asyncAssertSuccess(s -> { ctx.assertEquals(HttpURLConnection.HTTP_CONFLICT, s.getStatus()); })); return null; }); }
/** * Verifies that a tenant cannot be added if it uses an already registered * identifier. * * @param ctx The vert.x test context. */ @Test public void testAddTenantFailsForDuplicateTenantId(final TestContext ctx) { addTenant("tenant").map(ok -> { getCompleteTenantService().add( "tenant", buildTenantPayload("tenant"), ctx.asyncAssertSuccess(s -> { ctx.assertEquals(HttpURLConnection.HTTP_CONFLICT, s.getStatus()); })); return null; }); }