@Test public void testOrderOfMultipleAllowHeadersIsPreservedOnRequests() throws Exception { final BasicClassicHttpRequest put = new BasicClassicHttpRequest("PUT", "/"); put.setEntity(body); put.addHeader("Allow", "GET, HEAD"); put.addHeader("Allow", "DELETE"); put.addHeader("Content-Length", "128"); testOrderOfMultipleHeadersIsPreservedOnRequests("Allow", put); }
@Test public void testOrderOfMultipleContentEncodingHeadersIsPreservedOnRequests() throws Exception { final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/"); post.setEntity(body); post.addHeader("Content-Encoding", "gzip"); post.addHeader("Content-Encoding", "compress"); post.addHeader("Content-Length", "128"); testOrderOfMultipleHeadersIsPreservedOnRequests("Content-Encoding", post); }
@Test public void testOrderOfMultipleContentLanguageHeadersIsPreservedOnRequests() throws Exception { final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/"); post.setEntity(body); post.addHeader("Content-Language", "mi"); post.addHeader("Content-Language", "en"); post.addHeader("Content-Length", "128"); testOrderOfMultipleHeadersIsPreservedOnRequests("Content-Language", post); }
@Test public void testOrderOfMultipleExpectHeadersIsPreservedOnRequests() throws Exception { final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/"); post.setEntity(body); post.addHeader("Expect", "100-continue"); post.addHeader("Expect", "x-expect=true"); post.addHeader("Content-Length", "128"); testOrderOfMultipleHeadersIsPreservedOnRequests("Expect", post); }
@Test public void testResponsesToPUTsAreNotCached() throws Exception { emptyMockCacheExpectsNoPuts(); final BasicClassicHttpRequest put = new BasicClassicHttpRequest("PUT", "/"); put.setEntity(HttpTestUtils.makeBody(128)); put.addHeader("Content-Length", "128"); originResponse.setHeader("Cache-Control", "max-age=3600"); EasyMock.expect( mockExecChain.proceed( EasyMock.isA(ClassicHttpRequest.class), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); execute(put); verifyMocks(); }
if (headersMap != null) { for (final Entry<String, String> header : headersMap.entrySet()) { httpRequest.addHeader(header.getKey(), header.getValue());
@Test(expected = ProtocolException.class) public void testRequestHttp11MultipleHostHeaders() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); request.addHeader(HttpHeaders.HOST, "blah"); request.addHeader(HttpHeaders.HOST, "blah"); final RequestValidateHost interceptor = new RequestValidateHost(); interceptor.process(request, request.getEntity(), context); }
@Override public ClassicHttpRequest copy(final ClassicHttpRequest original) { if (original == null) { return null; } final BasicClassicHttpRequest copy = new BasicClassicHttpRequest(original.getMethod(), original.getPath()); copy.setVersion(original.getVersion()); for (final Iterator<Header> it = original.headerIterator(); it.hasNext(); ) { copy.addHeader(it.next()); } copy.setScheme(original.getScheme()); copy.setAuthority(original.getAuthority()); copy.setEntity(original.getEntity()); return copy; }
@Test public void testRequestContentOverwriteHeaders() throws Exception { final RequestContent interceptor = new RequestContent(true); final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/"); request.addHeader(new BasicHeader(HttpHeaders.CONTENT_LENGTH, "10")); request.addHeader(new BasicHeader(HttpHeaders.TRANSFER_ENCODING, "whatever")); request.setEntity(new StringEntity("")); interceptor.process(request, request.getEntity(), context); final Header h1 = request.getFirstHeader(HttpHeaders.CONTENT_LENGTH); Assert.assertNotNull(h1); Assert.assertEquals("0", h1.getValue()); }
@Test public void testRequestContentProtocolException() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request1 = new BasicClassicHttpRequest("POST", "/"); request1.addHeader(new BasicHeader(HttpHeaders.TRANSFER_ENCODING, "chunked")); final BasicClassicHttpRequest request2 = new BasicClassicHttpRequest("POST", "/"); request2.addHeader(new BasicHeader(HttpHeaders.CONTENT_LENGTH, "12")); final RequestContent interceptor = new RequestContent(); try { interceptor.process(request1, request1.getEntity(), context); Assert.fail("ProtocolException should have been thrown"); } catch (final ProtocolException ex) { // expected } try { interceptor.process(request2, request2.getEntity(), context); Assert.fail("ProtocolException should have been thrown"); } catch (final ProtocolException ex) { // expected } }
@Test public void testRequestConnControlUpgrade() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); request.addHeader(HttpHeaders.UPGRADE, "HTTP/2"); final RequestConnControl interceptor = new RequestConnControl(); interceptor.process(request, request.getEntity(), context); final Header header = request.getFirstHeader(HttpHeaders.CONNECTION); Assert.assertNotNull(header); Assert.assertEquals("upgrade", header.getValue()); }
@Test public void testRequestUserAgentNotGenerated() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); request.addHeader(new BasicHeader(HttpHeaders.USER_AGENT, "whatever")); final RequestUserAgent interceptor = new RequestUserAgent("some agent"); interceptor.process(request, request.getEntity(), context); final Header header = request.getFirstHeader(HttpHeaders.USER_AGENT); Assert.assertNotNull(header); Assert.assertEquals("whatever", header.getValue()); }
@Test public void testRequestConnControlCustom() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); final Header myheader = new BasicHeader(HttpHeaders.CONNECTION, "close"); request.addHeader(myheader); final RequestConnControl interceptor = new RequestConnControl(); interceptor.process(request, request.getEntity(), context); final Header header = request.getFirstHeader(HttpHeaders.CONNECTION); Assert.assertNotNull(header); Assert.assertEquals("close", header.getValue()); Assert.assertTrue(header == myheader); }
@Test public void testRequestTargetHostNotGenerated() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); request.setAuthority(new URIAuthority("somehost", 8080)); request.addHeader(new BasicHeader(HttpHeaders.HOST, "whatever")); final RequestTargetHost interceptor = new RequestTargetHost(); interceptor.process(request, request.getEntity(), context); final Header header = request.getFirstHeader(HttpHeaders.HOST); Assert.assertNotNull(header); Assert.assertEquals("whatever", header.getValue()); }
@Test public void testResponseConnControlClientRequestMixUp() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); request.addHeader(new BasicHeader(HttpHeaders.CONNECTION, "blah, keep-alive, close")); context.setAttribute(HttpCoreContext.HTTP_REQUEST, request); final ResponseConnControl interceptor = new ResponseConnControl(); final ClassicHttpResponse response = new BasicClassicHttpResponse(200, "OK"); interceptor.process(response, response.getEntity(), context); final Header header = response.getFirstHeader(HttpHeaders.CONNECTION); Assert.assertNotNull(header); Assert.assertEquals("close", header.getValue()); }
@Test public void testResponseConnControlExplicitClose() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); request.addHeader(new BasicHeader(HttpHeaders.CONNECTION, "keep-alive")); context.setAttribute(HttpCoreContext.HTTP_REQUEST, request); final ResponseConnControl interceptor = new ResponseConnControl(); final ClassicHttpResponse response = new BasicClassicHttpResponse(200, "OK"); response.setHeader(HttpHeaders.CONNECTION, "close"); interceptor.process(response, response.getEntity(), context); final Header header = response.getFirstHeader(HttpHeaders.CONNECTION); Assert.assertNotNull(header); Assert.assertEquals("close", header.getValue()); }
@Test public void testResponseConnControlEntityUnknownContentLengthExplicitKeepAlive() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); request.addHeader(new BasicHeader(HttpHeaders.CONNECTION, "keep-alive")); context.setAttribute(HttpCoreContext.HTTP_REQUEST, request); final ClassicHttpResponse response = new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK"); final BasicHttpEntity entity = new BasicHttpEntity(); response.setEntity(entity); final ResponseConnControl interceptor = new ResponseConnControl(); interceptor.process(response, response.getEntity(), context); final Header header = response.getFirstHeader(HttpHeaders.CONNECTION); Assert.assertNotNull(header); Assert.assertEquals("keep-alive", header.getValue()); }
@Test public void testResponseConnControlClientRequest() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); request.addHeader(new BasicHeader(HttpHeaders.CONNECTION, "keep-alive")); context.setAttribute(HttpCoreContext.HTTP_REQUEST, request); final ClassicHttpResponse response = new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK"); final StringEntity entity = new StringEntity("whatever"); response.setEntity(entity); final ResponseConnControl interceptor = new ResponseConnControl(); interceptor.process(response, response.getEntity(), context); final Header header = response.getFirstHeader(HttpHeaders.CONNECTION); Assert.assertNotNull(header); Assert.assertEquals("keep-alive", header.getValue()); }
@Test public void testResponseConnControlStatusCode() throws Exception { final HttpContext context = new BasicHttpContext(null); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); request.addHeader(new BasicHeader(HttpHeaders.CONNECTION, "keep-alive")); context.setAttribute(HttpCoreContext.HTTP_REQUEST, request); final ResponseConnControl interceptor = new ResponseConnControl(); final int [] statusCodes = new int[] { HttpStatus.SC_BAD_REQUEST, HttpStatus.SC_REQUEST_TIMEOUT, HttpStatus.SC_LENGTH_REQUIRED, HttpStatus.SC_REQUEST_TOO_LONG, HttpStatus.SC_REQUEST_URI_TOO_LONG, HttpStatus.SC_SERVICE_UNAVAILABLE, HttpStatus.SC_NOT_IMPLEMENTED }; for (final int statusCode : statusCodes) { final ClassicHttpResponse response = new BasicClassicHttpResponse(statusCode, "Unreasonable"); interceptor.process(response, response.getEntity(), context); final Header header = response.getFirstHeader(HttpHeaders.CONNECTION); Assert.assertNotNull(header); Assert.assertEquals("close", header.getValue()); } }
@Test public void testResponseConnControlEntityUnknownContentLengthHTTP10() throws Exception { final HttpContext context = new BasicHttpContext(null); context.setProtocolVersion(HttpVersion.HTTP_1_0); final BasicClassicHttpRequest request = new BasicClassicHttpRequest("GET", "/"); request.addHeader(new BasicHeader(HttpHeaders.CONNECTION, "keep-alive")); context.setAttribute(HttpCoreContext.HTTP_REQUEST, request); final BasicClassicHttpResponse response = new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK"); final BasicHttpEntity entity = new BasicHttpEntity(); response.setEntity(entity); final ResponseConnControl interceptor = new ResponseConnControl(); interceptor.process(response, response.getEntity(), context); final Header header = response.getFirstHeader(HttpHeaders.CONNECTION); Assert.assertNotNull(header); Assert.assertEquals("close", header.getValue()); }