protected Future<Void> addTenant(final String tenantId) { return addTenant(tenantId, buildTenantPayload(tenantId)); }
/** * Verifies that the service does not find any tenant for an unknown subject DN. * * @param ctx The vert.x test context. */ @Test public void testGetForCertificateAuthorityFailsForUnknownSubjectDn(final TestContext ctx) { final X500Principal unknownSubjectDn = new X500Principal("O=Eclipse, OU=NotHono, CN=ca"); final X500Principal subjectDn = new X500Principal("O=Eclipse, OU=Hono, CN=ca"); final String publicKey = "NOTAPUBLICKEY"; final JsonObject trustedCa = new JsonObject() .put(TenantConstants.FIELD_PAYLOAD_SUBJECT_DN, subjectDn.getName(X500Principal.RFC2253)) .put(TenantConstants.FIELD_PAYLOAD_PUBLIC_KEY, publicKey); final JsonObject tenant = buildTenantPayload("tenant") .put(TenantConstants.FIELD_PAYLOAD_TRUSTED_CA, trustedCa); addTenant("tenant", tenant).map(ok -> { getCompleteTenantService().get(unknownSubjectDn, null, ctx.asyncAssertSuccess(s -> { assertThat(s.getStatus(), is(HttpURLConnection.HTTP_NOT_FOUND)); })); return null; }); }
/** * Verifies that the service finds an existing tenant by the subject DN of * its configured trusted certificate authority. * * @param ctx The vert.x test context. */ @Test public void testGetForCertificateAuthoritySucceeds(final TestContext ctx) { final X500Principal subjectDn = new X500Principal("O=Eclipse, OU=Hono, CN=ca"); final JsonObject trustedCa = new JsonObject() .put(TenantConstants.FIELD_PAYLOAD_SUBJECT_DN, subjectDn.getName(X500Principal.RFC2253)) .put(TenantConstants.FIELD_PAYLOAD_PUBLIC_KEY, "NOTAPUBLICKEY"); final JsonObject tenant = buildTenantPayload("tenant") .put(TenantConstants.FIELD_PAYLOAD_TRUSTED_CA, trustedCa); addTenant("tenant", tenant).map(ok -> { getCompleteTenantService().get(subjectDn, null, ctx.asyncAssertSuccess(s -> { assertThat(s.getStatus(), is(HttpURLConnection.HTTP_OK)); final TenantObject obj = s.getPayload().mapTo(TenantObject.class); assertThat(obj.getTenantId(), is("tenant")); final JsonObject ca = obj.getProperty(TenantConstants.FIELD_PAYLOAD_TRUSTED_CA); assertThat(ca, is(trustedCa)); })); 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; }); }
/** * Verifies that the service updates tenants for a given tenantId. * * @param ctx The vert.x test context. */ @Test public void testUpdateTenantsSucceeds(final TestContext ctx) { final JsonObject updatedPayload = buildTenantPayload("tenant"); updatedPayload.put("custom-prop", "something"); addTenant("tenant").compose(ok -> { final Future<TenantResult<JsonObject>> updateResult = Future.future(); getCompleteTenantService().update("tenant", updatedPayload.copy(), updateResult.completer()); return updateResult; }).compose(updateResult -> { ctx.assertEquals(HttpURLConnection.HTTP_NO_CONTENT, updateResult.getStatus()); final Future<TenantResult<JsonObject>> getResult = Future.future(); getCompleteTenantService().get("tenant", null, getResult.completer()); return getResult; }).setHandler(ctx.asyncAssertSuccess(getResult -> { assertThat(getResult.getStatus(), is(HttpURLConnection.HTTP_OK)); assertThat(getResult.getPayload().getString("custom-prop"), is("something")); })); }