@Test
  public void eventCreation() throws Exception {
    final AtomicReference<RequestHandler> requestHandlerRef = new AtomicReference<>();
    when(mockHttpListenerConfig.addRequestHandler(
            any(ListenerRequestMatcher.class), any(RequestHandler.class)))
        .then(
            new Answer<RequestHandlerManager>() {
              @Override
              public RequestHandlerManager answer(InvocationOnMock invocation) throws Throwable {
                requestHandlerRef.set((RequestHandler) invocation.getArguments()[1]);
                return null;
              }
            });
    usePath("/");

    assertThat(RequestContext.getEvent(), is(nullValue()));

    HttpResponseReadyCallback responseCallback = mock(HttpResponseReadyCallback.class);
    doAnswer(
            new Answer<Void>() {
              @Override
              public Void answer(InvocationOnMock invocation) throws Throwable {
                assertThat(RequestContext.getEvent(), not(nullValue()));
                return null;
              }
            })
        .when(responseCallback)
        .responseReady(any(HttpResponse.class), any(ResponseStatusCallback.class));

    HttpRequest request = buildGetRootRequest(HTTP_1_1);
    when(request.getHeaderValue("host")).thenReturn("localhost");
    HttpRequestContext requestContext = buildRequestContext(request);

    requestHandlerRef.get().handleRequest(requestContext, responseCallback);

    assertThat(RequestContext.getEvent(), is(nullValue()));
  }
 protected HttpRequest buildGetRootRequest(HttpProtocol protocol) {
   HttpRequest request = mock(HttpRequest.class);
   when(request.getHeaderValue(HOST)).thenReturn(null);
   when(request.getPath()).thenReturn("/");
   when(request.getUri()).thenReturn("/");
   when(request.getMethod()).thenReturn("GET");
   when(request.getProtocol()).thenReturn(protocol);
   return request;
 }