/** * {@inheritDoc} */ @Override protected void initHook(Map<String, Object> parameters) { hook = new CloseableHttpAsyncClientHook(runtimeLinker); }
@Test public void mustNotHaveAProxyInThirdParametersIfThereIsNoParameters() { Object[] parameters = new Object[] {}; hook.beforeBody(METHOD_ID, object, parameters, ssc); verifyNoMoreInteractions(runtimeLinker); verifyZeroInteractions(ssc, object, httpContext, futureCallback); }
@Test public void returnsANullValueAndHasZeroInteractionsWithAnyOfTheParamters() { long methodId = 11L; Object[] parameters = new Object[0]; Object result = mock(Object.class); Object afterBodyObject = hook.afterBody(methodId, object, parameters, result, ssc); assertThat("The returned object after body must be null.", afterBodyObject, is(nullValue())); verifyZeroInteractions(object, result, ssc, runtimeLinker); } }
@Test public void mustNotHaveAProxyInThirdParametersIfParametersIsNull() { Object[] parameters = null; hook.beforeBody(METHOD_ID, object, parameters, ssc); verifyNoMoreInteractions(runtimeLinker); verifyZeroInteractions(ssc, object, httpContext, futureCallback); }
@Test public void mustNotSetProxyIfThereIsTooFewParameters() { Object[] parameters = new String[] { null, null, null }; hook.beforeBody(METHOD_ID, object, parameters, ssc); verifyNoMoreInteractions(runtimeLinker); verifyZeroInteractions(ssc, object, httpContext, futureCallback); }
@Test public void mustNotSetProxyIfThereIsTooManyParameters() { Object[] parameters = new String[] { null, null, null, null, null }; hook.beforeBody(METHOD_ID, object, parameters, ssc); assertThat("Third parameter (proxy) must not be set.", parameters[3], is(nullValue())); verifyNoMoreInteractions(runtimeLinker); verifyZeroInteractions(ssc, object, httpContext, futureCallback); }
@Test public void successful() { SpanStore spanStore = new SpanStore(); Object[] parameters = new Object[] { new Object(), new Object(), httpContext, mock(FutureCallback.class) }; when(runtimeLinker.createProxy(eq(FutureCallbackProxy.class), Mockito.<FutureCallbackProxy> any(), Mockito.<ClassLoader> any())).thenReturn(futureCallback); when(httpContext.getAttribute(SpanStoreAdapter.Constants.ID)).thenReturn(spanStore); ArgumentCaptor<FutureCallbackProxy> proxyCaptor = ArgumentCaptor.forClass(FutureCallbackProxy.class); Object result = hook.beforeBody(METHOD_ID, object, parameters, ssc); verify(runtimeLinker).createProxy(eq(FutureCallbackProxy.class), proxyCaptor.capture(), Mockito.<ClassLoader> any()); verifyNoMoreInteractions(runtimeLinker, httpContext); verifyZeroInteractions(ssc, object, futureCallback, httpContext); assertThat(result, is(nullValue())); assertThat(parameters[3], is(theInstance((Object) futureCallback))); }