use of org.mockito.ArgumentCaptor in project hono by eclipse.
the class AbstractRequestResponseClientTest method testCreateAndSendRequestAddsResponseToCache.
/**
* Verifies that the adapter puts the response from the service to the cache
* using the default cache timeout if the response does not contain a
* <em>no-cache</em> cache directive.
*
* @param ctx The vert.x test context.
*/
@SuppressWarnings("unchecked")
@Test
public void testCreateAndSendRequestAddsResponseToCache(final TestContext ctx) {
// GIVEN an adapter with an empty cache
client.setResponseCache(cache);
// WHEN sending a request
client.createAndSendRequest("get", (JsonObject) null, ctx.asyncAssertSuccess(result -> {
// THEN the response has been put to the cache
verify(cache).put(eq("cacheKey"), any(SimpleRequestResponseResult.class), eq(Duration.ofSeconds(RequestResponseClientConfigProperties.DEFAULT_RESPONSE_CACHE_TIMEOUT)));
}), "cacheKey");
final ArgumentCaptor<Message> messageCaptor = ArgumentCaptor.forClass(Message.class);
verify(sender).send(messageCaptor.capture(), any(Handler.class));
final Message response = ProtonHelper.message("result");
MessageHelper.addProperty(response, MessageHelper.APP_PROPERTY_STATUS, HttpURLConnection.HTTP_OK);
response.setCorrelationId(messageCaptor.getValue().getMessageId());
final ProtonDelivery delivery = mock(ProtonDelivery.class);
client.handleResponse(delivery, response);
}
use of org.mockito.ArgumentCaptor in project hono by eclipse.
the class AbstractRequestResponseClientTest method testCreateAndSendRequestAddsResponseToCacheWithMaxAge.
/**
* Verifies that the adapter puts the response from the service to the cache
* using the max age indicated by a response's <em>max-age</em> cache directive.
*
* @param ctx The vert.x test context.
*/
@SuppressWarnings("unchecked")
@Test
public void testCreateAndSendRequestAddsResponseToCacheWithMaxAge(final TestContext ctx) {
// GIVEN an adapter with an empty cache
client.setResponseCache(cache);
// WHEN sending a request
client.createAndSendRequest("get", (JsonObject) null, ctx.asyncAssertSuccess(result -> {
// THEN the response has been put to the cache
verify(cache).put(eq("cacheKey"), any(SimpleRequestResponseResult.class), eq(Duration.ofSeconds(35)));
}), "cacheKey");
final ArgumentCaptor<Message> messageCaptor = ArgumentCaptor.forClass(Message.class);
verify(sender).send(messageCaptor.capture(), any(Handler.class));
final Message response = ProtonHelper.message("result");
MessageHelper.addProperty(response, MessageHelper.APP_PROPERTY_STATUS, HttpURLConnection.HTTP_OK);
MessageHelper.addCacheDirective(response, CacheDirective.maxAgeDirective(35));
response.setCorrelationId(messageCaptor.getValue().getMessageId());
final ProtonDelivery delivery = mock(ProtonDelivery.class);
client.handleResponse(delivery, response);
}
use of org.mockito.ArgumentCaptor in project hono by eclipse.
the class AbstractRequestResponseClientTest method testCreateAndSendRequestDoesNotAddResponseToCache.
/**
* Verifies that the adapter does not put the response from the service to the cache
* if the response contains a <em>no-cache</em> cache directive.
*
* @param ctx The vert.x test context.
*/
@SuppressWarnings("unchecked")
@Test
public void testCreateAndSendRequestDoesNotAddResponseToCache(final TestContext ctx) {
// GIVEN an adapter with an empty cache
client.setResponseCache(cache);
// WHEN sending a request
client.createAndSendRequest("get", (JsonObject) null, ctx.asyncAssertSuccess(result -> {
// THEN the response is not put to the cache
verify(cache, never()).put(eq("cacheKey"), any(SimpleRequestResponseResult.class), any(Duration.class));
}), "cacheKey");
final ArgumentCaptor<Message> messageCaptor = ArgumentCaptor.forClass(Message.class);
verify(sender).send(messageCaptor.capture(), any(Handler.class));
final Message response = ProtonHelper.message("result");
MessageHelper.addProperty(response, MessageHelper.APP_PROPERTY_STATUS, HttpURLConnection.HTTP_OK);
MessageHelper.addCacheDirective(response, CacheDirective.noCacheDirective());
response.setCorrelationId(messageCaptor.getValue().getMessageId());
final ProtonDelivery delivery = mock(ProtonDelivery.class);
client.handleResponse(delivery, response);
}
use of org.mockito.ArgumentCaptor in project hono by eclipse.
the class AbstractRequestResponseClientTest method testCreateAndSendRequestFailsOnRejectedMessage.
/**
* Verifies that the client fails the result handler if the peer rejects
* the request message.
*
* @param ctx The vert.x test context.
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test
public void testCreateAndSendRequestFailsOnRejectedMessage(final TestContext ctx) {
// GIVEN a request-response client that times out requests after 200 ms
client.setRequestTimeout(200);
// WHEN sending a request message with some headers and payload
final Async sendFailure = ctx.async();
final JsonObject payload = new JsonObject().put("key", "value");
client.createAndSendRequest("get", null, payload, ctx.asyncAssertFailure(t -> {
sendFailure.complete();
}));
// and the peer rejects the message
final Rejected rejected = new Rejected();
rejected.setError(ProtonHelper.condition("bad-request", "request message is malformed"));
final ProtonDelivery delivery = mock(ProtonDelivery.class);
when(delivery.getRemoteState()).thenReturn(rejected);
final ArgumentCaptor<Handler> dispositionHandlerCaptor = ArgumentCaptor.forClass(Handler.class);
verify(sender).send(any(Message.class), dispositionHandlerCaptor.capture());
dispositionHandlerCaptor.getValue().handle(delivery);
// THEN the result handler is failed
sendFailure.await();
}
use of org.mockito.ArgumentCaptor in project hono by eclipse.
the class AbstractRequestResponseClientTest method testCreateAndSendRequestDoesNotAddNonCacheableResponseToCache.
/**
* Verifies that the adapter does not put a response from the service to the cache
* that does not contain any cache directive but has a <em>non-cacheable</em> status code.
*
* @param ctx The vert.x test context.
*/
@SuppressWarnings("unchecked")
@Test
public void testCreateAndSendRequestDoesNotAddNonCacheableResponseToCache(final TestContext ctx) {
// GIVEN an adapter with an empty cache
client.setResponseCache(cache);
// WHEN getting a 404 response to a request which contains
// no cache directive
final Async invocation = ctx.async();
client.createAndSendRequest("get", (JsonObject) null, ctx.asyncAssertSuccess(result -> invocation.complete()), "cacheKey");
final ArgumentCaptor<Message> messageCaptor = ArgumentCaptor.forClass(Message.class);
verify(sender).send(messageCaptor.capture(), any(Handler.class));
final Message response = ProtonHelper.message();
response.setCorrelationId(messageCaptor.getValue().getMessageId());
MessageHelper.addProperty(response, MessageHelper.APP_PROPERTY_STATUS, HttpURLConnection.HTTP_NOT_FOUND);
final ProtonDelivery delivery = mock(ProtonDelivery.class);
client.handleResponse(delivery, response);
// THEN the response is not put to the cache
invocation.await();
verify(cache, never()).put(eq("cacheKey"), any(SimpleRequestResponseResult.class), any(Duration.class));
}
Aggregations