protected static void register( final CompleteCredentialsService svc, final String tenant, final String deviceId, final String authId, final String type, final JsonObject clientContext, final JsonArray secrets, final TestContext ctx) { final JsonObject data = new JsonObject() .put(CredentialsConstants.FIELD_PAYLOAD_DEVICE_ID, deviceId) .put(CredentialsConstants.FIELD_AUTH_ID, authId) .put(CredentialsConstants.FIELD_TYPE, type) .put(CredentialsConstants.FIELD_SECRETS, secrets); if (clientContext != null) { data.mergeIn(clientContext); } final Async registration = ctx.async(); svc.add("tenant", data, ctx.asyncAssertSuccess(s -> { assertThat(s.getStatus(), is(HttpURLConnection.HTTP_CREATED)); registration.complete(); })); registration.await(); } }
/** * Verifies that only one set of credentials can be registered for an auth-id and type (per tenant). * * @param ctx The vert.x test context. */ @Test public void testAddCredentialsRefusesDuplicateRegistration(final TestContext ctx) { register(getCompleteCredentialsService(), "tenant", "device", "myId", "myType", ctx); final JsonObject payload2 = new JsonObject() .put(CredentialsConstants.FIELD_PAYLOAD_DEVICE_ID, "other-device") .put(CredentialsConstants.FIELD_AUTH_ID, "myId") .put(CredentialsConstants.FIELD_TYPE, "myType") .put(CredentialsConstants.FIELD_SECRETS, new JsonArray()); final Async add = ctx.async(); getCompleteCredentialsService().add("tenant", payload2, ctx.asyncAssertSuccess(s -> { assertThat(s.getStatus(), is(HttpURLConnection.HTTP_CONFLICT)); add.complete(); })); add.await(); }