@Test public void testDoesNotAddAMaxForwardsHeaderToForwardedOPTIONSRequests() throws Exception { request = new BasicClassicHttpRequest("OPTIONS", "/"); final Capture<ClassicHttpRequest> reqCap = EasyMock.newCapture(); EasyMock.expect( mockExecChain.proceed( EasyMock.capture(reqCap), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); execute(request); verifyMocks(); final ClassicHttpRequest forwarded = reqCap.getValue(); Assert.assertNull(forwarded.getFirstHeader("Max-Forwards")); }
@Test public void testViaHeaderOnRequestProperlyRecordsClientProtocol() throws Exception { final ClassicHttpRequest originalRequest = new BasicClassicHttpRequest("GET", "/"); originalRequest.setVersion(HttpVersion.HTTP_1_0); request = originalRequest; request.removeHeaders("Via"); final Capture<ClassicHttpRequest> cap = EasyMock.newCapture(); EasyMock.expect( mockExecChain.proceed( EasyMock.capture(cap), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); execute(request); verifyMocks(); final ClassicHttpRequest captured = cap.getValue(); final String via = captured.getFirstHeader("Via").getValue(); final String protocol = via.split("\\s+")[0]; final String[] protoParts = protocol.split("/"); if (protoParts.length > 1) { Assert.assertTrue("http".equalsIgnoreCase(protoParts[0])); } Assert.assertEquals("1.0",protoParts[protoParts.length-1]); }
private ClassicHttpResponse testRequestWithWeakETagValidatorIsNotAllowed(final String header) throws Exception { final Capture<ClassicHttpRequest> cap = EasyMock.newCapture(); EasyMock.expect( mockExecChain.proceed( EasyMock.capture(cap), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse).times(0, 1); replayMocks(); final ClassicHttpResponse response = execute(request); verifyMocks(); // it's probably ok to return a 400 (Bad Request) to this client if (cap.hasCaptured()) { final ClassicHttpRequest forwarded = cap.getValue(); final Header h = forwarded.getFirstHeader(header); if (h != null) { Assert.assertFalse(h.getValue().startsWith("W/")); } } return response; }
final ResponseTrigger responseTrigger, final HttpContext context) throws HttpException, IOException { final Header h = request.getFirstHeader(HttpHeaders.AUTHORIZATION); final String challengeResponse = h != null ? authTokenExtractor.extract(h.getValue()) : null; final Header expect = request.getFirstHeader(HttpHeaders.EXPECT); final boolean expectContinue = expect != null && "100-continue".equalsIgnoreCase(expect.getValue());
@Test public void testProperlyFormattedViaHeaderIsAddedToRequests() throws Exception { final Capture<ClassicHttpRequest> cap = EasyMock.newCapture(); request.removeHeaders("Via"); EasyMock.expect( mockExecChain.proceed( EasyMock.capture(cap), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); execute(request); verifyMocks(); final ClassicHttpRequest captured = cap.getValue(); final String via = captured.getFirstHeader("Via").getValue(); assertValidViaHeader(via); }
@Test public void testDecrementsMaxForwardsWhenForwardingOPTIONSRequest() throws Exception { request = new BasicClassicHttpRequest("OPTIONS", "*"); request.setHeader("Max-Forwards", "7"); final Capture<ClassicHttpRequest> cap = EasyMock.newCapture(); EasyMock.expect( mockExecChain.proceed( EasyMock.capture(cap), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); execute(request); verifyMocks(); final ClassicHttpRequest captured = cap.getValue(); Assert.assertEquals("6", captured.getFirstHeader("Max-Forwards").getValue()); }
assertNull(captured.getFirstHeader("If-None-Match")); assertNull(captured.getFirstHeader("If-Modified-Since")); assertNull(captured.getFirstHeader("If-Range")); assertNull(captured.getFirstHeader("If-Match")); assertNull(captured.getFirstHeader("If-Unmodified-Since"));
if (validation.getFirstHeader(ch) != null) { isConditional = true; break;
private void testDoesNotAddHeaderToRequestIfNotPresent(final String header) throws Exception { final BasicClassicHttpRequest req = new BasicClassicHttpRequest("POST","/"); req.setEntity(HttpTestUtils.makeBody(128)); req.setHeader("Content-Length","128"); req.removeHeaders(header); final Capture<ClassicHttpRequest> cap = EasyMock.newCapture(); EasyMock.expect( mockExecChain.proceed( EasyMock.capture(cap), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); execute(req); verifyMocks(); final ClassicHttpRequest captured = cap.getValue(); Assert.assertNull(captured.getFirstHeader(header)); }
private void testDoesNotModifyHeaderOnRequest(final String header, final String value) throws Exception { final BasicClassicHttpRequest req = new BasicClassicHttpRequest("POST","/"); req.setEntity(HttpTestUtils.makeBody(128)); req.setHeader("Content-Length","128"); req.setHeader(header,value); final Capture<ClassicHttpRequest> cap = EasyMock.newCapture(); EasyMock.expect( mockExecChain.proceed( EasyMock.capture(cap), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); execute(req); verifyMocks(); final ClassicHttpRequest captured = cap.getValue(); Assert.assertEquals(value, captured.getFirstHeader(header).getValue()); }
captured.getFirstHeader("If-Modified-Since"); assertEquals(lmDate, ifModifiedSince.getValue()); final Header ifNoneMatch = captured.getFirstHeader("If-None-Match"); assertEquals(etag, ifNoneMatch.getValue());
@Test public void testUsesLastModifiedDateForCacheConditionalRequests() throws Exception { final Date twentySecondsAgo = new Date(now.getTime() - 20 * 1000L); final String lmDate = DateUtils.formatDate(twentySecondsAgo); final ClassicHttpRequest req1 = new BasicClassicHttpRequest("GET", "/"); final ClassicHttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Date", DateUtils.formatDate(tenSecondsAgo)); resp1.setHeader("Last-Modified", lmDate); resp1.setHeader("Cache-Control","max-age=5"); backendExpectsAnyRequestAndReturn(resp1); final Capture<ClassicHttpRequest> cap = EasyMock.newCapture(); final ClassicHttpRequest req2 = new BasicClassicHttpRequest("GET", "/"); final ClassicHttpResponse resp2 = HttpTestUtils.make200Response(); EasyMock.expect( mockExecChain.proceed( EasyMock.capture(cap), EasyMock.isA(ExecChain.Scope.class))).andReturn(resp2); replayMocks(); execute(req1); execute(req2); verifyMocks(); final ClassicHttpRequest captured = cap.getValue(); final Header ifModifiedSince = captured.getFirstHeader("If-Modified-Since"); assertEquals(lmDate, ifModifiedSince.getValue()); }
@Override public final void handle( final ClassicHttpRequest request, final ResponseTrigger responseTrigger, final HttpContext context) throws HttpException, IOException { final Header expect = request.getFirstHeader(HttpHeaders.EXPECT); if (expect != null && "100-continue".equalsIgnoreCase(expect.getValue())) { final ClassicHttpResponse response = verify(request, context); if (response == null) { responseTrigger.sendInformation(new BasicClassicHttpResponse(HttpStatus.SC_CONTINUE)); } else { responseTrigger.submitResponse(response); return; } } requestHandler.handle(request, responseTrigger, context); }
@Override public final void handle( final ClassicHttpRequest request, final ResponseTrigger responseTrigger, final HttpContext context) throws HttpException, IOException { final Header expect = request.getFirstHeader(HttpHeaders.EXPECT); if (expect != null && "100-continue".equalsIgnoreCase(expect.getValue())) { final ClassicHttpResponse response = verify(request, context); if (response == null) { responseTrigger.sendInformation(new BasicClassicHttpResponse(HttpStatus.SC_CONTINUE)); } else { responseTrigger.submitResponse(response); return; } } requestHandler.handle(request, responseTrigger, context); }
@Override public final void handle( final ClassicHttpRequest request, final HttpFilterChain.ResponseTrigger responseTrigger, final HttpContext context, final HttpFilterChain chain) throws HttpException, IOException { final Header expect = request.getFirstHeader(HttpHeaders.EXPECT); final boolean expectContinue = expect != null && "100-continue".equalsIgnoreCase(expect.getValue()); if (expectContinue) { final boolean verified = verify(request, context); if (verified) { responseTrigger.sendInformation(new BasicClassicHttpResponse(HttpStatus.SC_CONTINUE)); } else { final ClassicHttpResponse expectationFailed = new BasicClassicHttpResponse(HttpStatus.SC_EXPECTATION_FAILED); final HttpEntity responseContent = generateResponseContent(expectationFailed); expectationFailed.setEntity(responseContent); responseTrigger.submitResponse(expectationFailed); return; } } chain.proceed(request, responseTrigger, context); } }
@Override public final void handle( final ClassicHttpRequest request, final HttpFilterChain.ResponseTrigger responseTrigger, final HttpContext context, final HttpFilterChain chain) throws HttpException, IOException { final Header expect = request.getFirstHeader(HttpHeaders.EXPECT); final boolean expectContinue = expect != null && "100-continue".equalsIgnoreCase(expect.getValue()); if (expectContinue) { final boolean verified = verify(request, context); if (verified) { responseTrigger.sendInformation(new BasicClassicHttpResponse(HttpStatus.SC_CONTINUE)); } else { final ClassicHttpResponse expectationFailed = new BasicClassicHttpResponse(HttpStatus.SC_EXPECTATION_FAILED); final HttpEntity responseContent = generateResponseContent(expectationFailed); expectationFailed.setEntity(responseContent); responseTrigger.submitResponse(expectationFailed); return; } } chain.proceed(request, responseTrigger, context); } }
final HttpContext context, final HttpFilterChain chain) throws HttpException, IOException { final Header h = request.getFirstHeader(HttpHeaders.AUTHORIZATION); final T challengeResponse = h != null ? parseChallengeResponse(h.getValue(), context) : null; final Header expect = request.getFirstHeader(HttpHeaders.EXPECT); final boolean expectContinue = expect != null && "100-continue".equalsIgnoreCase(expect.getValue());
final HttpContext context, final HttpFilterChain chain) throws HttpException, IOException { final Header h = request.getFirstHeader(HttpHeaders.AUTHORIZATION); final T challengeResponse = h != null ? parseChallengeResponse(h.getValue(), context) : null; final Header expect = request.getFirstHeader(HttpHeaders.EXPECT); final boolean expectContinue = expect != null && "100-continue".equalsIgnoreCase(expect.getValue());
final HttpEntity entity = request.getEntity(); if (entity != null) { final Header expect = request.getFirstHeader(HttpHeaders.EXPECT); expectContinue = expect != null && "100-continue".equalsIgnoreCase(expect.getValue()); if (!expectContinue) {
final HttpEntity entity = request.getEntity(); if (entity != null) { final Header expect = request.getFirstHeader(HttpHeaders.EXPECT); expectContinue = expect != null && "100-continue".equalsIgnoreCase(expect.getValue()); if (!expectContinue) {