RCS file: /home/cvspublic/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestRedirects.java,v retrieving revision 1.8 diff -u -r1.8 TestRedirects.java --- TestRedirects.java 13 Nov 2004 12:21:28 -0000 1.8 +++ TestRedirects.java 9 Jan 2005 22:39:01 -0000 @@ -113,23 +113,43 @@ private class CircularRedirectService implements HttpService { + private int _invocations = 0; + private boolean _generateParam = false; + public CircularRedirectService() { super(); } + public CircularRedirectService(boolean generateRequestParam) { + super(); + _generateParam = generateRequestParam; + } public boolean process(final SimpleRequest request, final SimpleResponse response) throws IOException { RequestLine reqline = request.getRequestLine(); HttpVersion ver = reqline.getHttpVersion(); - if (reqline.getUri().equals("/circular-oldlocation/")) { - response.setStatusLine(ver, HttpStatus.SC_MOVED_TEMPORARILY); - response.addHeader(new Header("Location", "/circular-location2/")); - } else if (reqline.getUri().equals("/circular-location2/")) { - response.setStatusLine(ver, HttpStatus.SC_MOVED_TEMPORARILY); - response.addHeader(new Header("Location", "/circular-oldlocation/")); - } else { - response.setStatusLine(ver, HttpStatus.SC_NOT_FOUND); + if(_generateParam) { + if (reqline.getUri().startsWith("/circular-oldlocation")) { + response.setStatusLine(ver, HttpStatus.SC_MOVED_TEMPORARILY); + response.addHeader(new Header("Location", "/circular-location2?invk=" + (++_invocations))); + } else if (reqline.getUri().startsWith("/circular-location2")) { + response.setStatusLine(ver, HttpStatus.SC_MOVED_TEMPORARILY); + response.addHeader(new Header("Location", "/circular-oldlocation?invk=" + (++_invocations))); + } else { + response.setStatusLine(ver, HttpStatus.SC_NOT_FOUND); + } + } + else { + if (reqline.getUri().startsWith("/circular-oldlocation/")) { + response.setStatusLine(ver, HttpStatus.SC_MOVED_TEMPORARILY); + response.addHeader(new Header("Location", "/circular-location2/")); + } else if (reqline.getUri().startsWith("/circular-location2/")) { + response.setStatusLine(ver, HttpStatus.SC_MOVED_TEMPORARILY); + response.addHeader(new Header("Location", "/circular-oldlocation/")); + } else { + response.setStatusLine(ver, HttpStatus.SC_NOT_FOUND); + } } return true; } @@ -343,7 +363,7 @@ } public void testCircularRedirect() throws IOException { - this.server.setHttpService(new CircularRedirectService()); + this.server.setHttpService(new CircularRedirectService(true)); GetMethod httpget = new GetMethod("/circular-oldlocation/"); try { this.client.getParams().setBooleanParameter(HttpClientParams.ALLOW_CIRCULAR_REDIRECTS, false); @@ -351,7 +371,10 @@ fail("RedirectException exception should have been thrown"); } catch (RedirectException e) { - // expected + String message = e.getMessage(); + if(message.indexOf("Circular redirect to") < 0) + fail("RedirectException exception thrown, but with wrong cause\n"+ + message); } finally { httpget.releaseConnection(); }