@Test
public void testProtocolException() throws Exception {
HttpProcessor httprocessor = Mockito.mock(HttpProcessor.class);
ConnectionReuseStrategy connReuseStrategy = Mockito.mock(ConnectionReuseStrategy.class);
HttpResponseFactory responseFactory = Mockito.mock(HttpResponseFactory.class);
HttpRequestHandlerResolver handlerResolver = Mockito.mock(HttpRequestHandlerResolver.class);
HttpRequestHandler requestHandler = Mockito.mock(HttpRequestHandler.class);
HttpParams params = new SyncBasicHttpParams();
HttpService httpservice = new HttpService(
httprocessor,
connReuseStrategy,
responseFactory,
handlerResolver,
params);
HttpContext context = new BasicHttpContext();
HttpServerConnection conn = Mockito.mock(HttpServerConnection.class);
HttpRequest request = new BasicHttpRequest("whatever", "/");
Mockito.when(conn.receiveRequestHeader()).thenReturn(request);
HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
Mockito.when(responseFactory.newHttpResponse(HttpVersion.HTTP_1_1, 200, context)).thenReturn(response);
HttpResponse error = new BasicHttpResponse(HttpVersion.HTTP_1_0, 500, "Oppsie");
Mockito.when(responseFactory.newHttpResponse(HttpVersion.HTTP_1_0, 500, context)).thenReturn(error);
Mockito.when(handlerResolver.lookup("/")).thenReturn(requestHandler);
Mockito.doThrow(new ProtocolException("oh, this world is wrong")).when(
requestHandler).handle(request, response, context);
Mockito.when(connReuseStrategy.keepAlive(error, context)).thenReturn(false);