final SpanContext context) { return assertRegistration(deviceId, gatewayId);
/** * Get the registration assertion for the device that needs to be sent along with the data downstream to HonoMessaging. * * @return The assertion inside the Future if it was successful, the error reason inside the Future if it failed. */ private Future<String> getRegistrationAssertion() { return registrationClient.assertRegistration(HonoExampleConstants.DEVICE_ID).map(regInfo -> { return regInfo.getString(RegistrationConstants.FIELD_ASSERTION); }); }
private Future<String> getRegistrationAssertion(final String tenant, final String deviceId) { final String registrationAssertion = sampler.getRegistrationAssertion(); if (registrationAssertion != null && registrationAssertion.length() > 0) { return Future.succeededFuture(registrationAssertion); } else if (assertion != null && Instant.now().isBefore(assertionExpiration)) { return Future.succeededFuture(assertion); } else { return getRegistrationClient(tenant) .compose(client -> client.assertRegistration(deviceId)) .map(regInfo -> { assertion = regInfo.getString(RegistrationConstants.FIELD_ASSERTION); assertionExpiration = JwtHelper.getExpiration(assertion).toInstant(); LOGGER.info("got registration assertion for device [{}], expires: {}", deviceId, assertionExpiration); return assertion; }); } }
.compose(client -> client.assertRegistration(deviceId, gatewayId.result()));
.compose(client -> client.assertRegistration(deviceId, gatewayId.result()));
.compose(client -> client.assertRegistration(deviceId, gatewayId.result(), context));
.compose(client -> client.assertRegistration(deviceId, gatewayId.result(), context));
.getOrCreateRegistrationClient(authenticatedDevice.getTenantId()) .compose(registrationClient -> { return registrationClient.assertRegistration(authenticatedDevice.getDeviceId()) .map(registration -> { return registration.getString(RegistrationConstants.FIELD_ASSERTION);
.getOrCreateRegistrationClient(authenticatedDevice.getTenantId()) .compose(registrationClient -> { return registrationClient.assertRegistration(authenticatedDevice.getDeviceId()) .map(registration -> { return registration.getString(RegistrationConstants.FIELD_ASSERTION);
/** * Verifies that the adapter successfully retrieves a registration assertion * for an existing device. * * @param ctx The vert.x test context. */ @Test public void testGetRegistrationAssertionSucceedsForExistingDevice(final TestContext ctx) { // GIVEN an adapter connected to a registration service final JsonObject assertionResult = newRegistrationAssertionResult("token"); when(registrationClient.assertRegistration(eq("device"), any())).thenReturn(Future.succeededFuture(assertionResult)); when(registrationClient.assertRegistration(eq("device"), any(), any())).thenReturn(Future.succeededFuture(assertionResult)); // WHEN an assertion for the device is retrieved adapter.getRegistrationAssertion("tenant", "device", null).setHandler(ctx.asyncAssertSuccess(result -> { // THEN the result contains the registration assertion ctx.assertEquals(assertionResult, result); })); adapter.getRegistrationAssertion("tenant", "device", null, mock(SpanContext.class)).setHandler(ctx.asyncAssertSuccess(result -> { // THEN the result contains the registration assertion ctx.assertEquals(assertionResult, result); })); }
/** * Verifies that the adapter fails a request to get a registration assertion for * a non-existing device. * * @param ctx The vert.x test context. */ @Test public void testGetRegistrationAssertionFailsWith404ForNonExistingDevice(final TestContext ctx) { // GIVEN an adapter connected to a registration service when(registrationClient.assertRegistration(eq("non-existent"), any())).thenReturn( Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_NOT_FOUND))); when(registrationClient.assertRegistration(eq("non-existent"), any(), any())).thenReturn( Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_NOT_FOUND))); // WHEN an assertion for a non-existing device is retrieved adapter.getRegistrationAssertion("tenant", "non-existent", null).setHandler(ctx.asyncAssertFailure(t -> { // THEN the request fails with a 404 ctx.assertEquals(HttpURLConnection.HTTP_NOT_FOUND, ((ServiceInvocationException) t).getErrorCode()); })); adapter.getRegistrationAssertion("tenant", "non-existent", null, mock(SpanContext.class)).setHandler(ctx.asyncAssertFailure(t -> { // THEN the request fails with a 404 ctx.assertEquals(HttpURLConnection.HTTP_NOT_FOUND, ((ServiceInvocationException) t).getErrorCode()); })); }