public void testEntityEnclosingRequestExpectationVerification() throws Exception {
HttpAsyncExpectationVerifier expectationVerifier = Mockito.mock(HttpAsyncExpectationVerifier.class);
this.protocolHandler = new HttpAsyncServiceHandler(
this.handlerResolver, expectationVerifier, this.httpProcessor, this.reuseStrategy, this.params);
HttpExchange httpExchange = this.protocolHandler.new HttpExchange();
HttpContext exchangeContext = httpExchange.getContext();
this.connContext.setAttribute(HttpAsyncServiceHandler.HTTP_EXCHANGE, httpExchange);
BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", "/",
HttpVersion.HTTP_1_1);
request.addHeader(HTTP.EXPECT_DIRECTIVE, HTTP.EXPECT_CONTINUE);
Mockito.when(this.conn.getHttpRequest()).thenReturn(request);
Mockito.when(this.requestHandler.processRequest(
request, exchangeContext)).thenReturn(this.requestConsumer);
Mockito.when(expectationVerifier.verify(
Mockito.eq(request),
Mockito.any(HttpAsyncContinueTrigger.class),
Mockito.eq(exchangeContext))).thenReturn(this.cancellable);
this.protocolHandler.requestReceived(this.conn);
Assert.assertEquals(MessageState.ACK_EXPECTED, httpExchange.getRequestState());
Assert.assertEquals(MessageState.READY, httpExchange.getResponseState());
Assert.assertSame(request, httpExchange.getRequest());
Assert.assertSame(this.requestHandler, httpExchange.getRequestHandler());
Assert.assertSame(this.requestConsumer, httpExchange.getRequestConsumer());
Assert.assertSame(request, exchangeContext.getAttribute(ExecutionContext.HTTP_REQUEST));
Assert.assertSame(this.conn, exchangeContext.getAttribute(ExecutionContext.HTTP_CONNECTION));
Mockito.verify(this.httpProcessor).process(request, exchangeContext);
Mockito.verify(this.requestConsumer).requestReceived(request);
Mockito.verify(this.conn).suspendInput();
Mockito.verify(expectationVerifier).verify(
Mockito.eq(request),
Mockito.any(HttpAsyncContinueTrigger.class),
Mockito.eq(exchangeContext));
Assert.assertSame(this.cancellable, httpExchange.getAsyncProcess());
}