Chromium Code Reviews| Index: tests/standalone/io/http_redirect_test.dart |
| diff --git a/tests/standalone/io/http_redirect_test.dart b/tests/standalone/io/http_redirect_test.dart |
| index d0b78a0f31de5cb543f9ee397d8754bd409fe476..2ff82f57ffb611430c390c5f878ffb5b9946f30d 100644 |
| --- a/tests/standalone/io/http_redirect_test.dart |
| +++ b/tests/standalone/io/http_redirect_test.dart |
| @@ -32,10 +32,7 @@ Future<HttpServer> setupServer() { |
| addRequestHandler( |
| "/$number", |
| (HttpRequest request, HttpResponse response) { |
| - response.headers.set(HttpHeaders.LOCATION, |
| - "http://127.0.0.1:${server.port}/${number + 1}"); |
| - response.statusCode = statusCode; |
| - response.close(); |
| + response.redirect("http://127.0.0.1:${server.port}/${number + 1}"); |
| }); |
| } |
| @@ -43,10 +40,8 @@ Future<HttpServer> setupServer() { |
| addRequestHandler( |
| "/redirect", |
| (HttpRequest request, HttpResponse response) { |
| - response.headers.set(HttpHeaders.LOCATION, |
| - "http://127.0.0.1:${server.port}/location"); |
| - response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
| - response.close(); |
| + response.redirect("http://127.0.0.1:${server.port}/location", |
| + HttpStatus.MOVED_PERMANENTLY); |
| } |
| ); |
| addRequestHandler( |
| @@ -83,6 +78,13 @@ Future<HttpServer> setupServer() { |
| ); |
| addRequestHandler( |
| + "/some/relativeToAbsolute", |
| + (HttpRequest request, HttpResponse response) { |
| + response.redirect("xxx", HttpStatus.SEE_OTHER); |
| + } |
| + ); |
| + |
| + addRequestHandler( |
| "/redirectUrl2", |
| (HttpRequest request, HttpResponse response) { |
| response.headers.set(HttpHeaders.LOCATION, "location"); |
| @@ -456,6 +458,34 @@ void testRedirectRelativeUrl() { |
| testPath("/redirectUrl5"); |
| } |
| +void testRedirectRelativeToAbsolute() { |
| + setupServer().then((server) { |
| + HttpClient client = new HttpClient(); |
| + |
| + int redirectCount = 0; |
| + handleResponse(HttpClientResponse response) { |
| + response.listen( |
| + (_) => Expect.fail("Response data not expected"), |
| + onDone: () { |
| + Expect.equals(HttpStatus.SEE_OTHER, response.statusCode); |
| + Expect.equals("http://127.0.0.1:${server.port}/some/xxx", |
| + response.headers["Location"][0]); |
| + Expect.isTrue(response.isRedirect); |
| + server.close(); |
| + client.close(); |
| + }); |
| + } |
| + client.getUrl( |
| + Uri.parse("http://127.0.0.1:${server.port}/some/relativeToAbsolute")) |
| + .then((HttpClientRequest request) { |
| + request.followRedirects = false; |
| + return request.close(); |
| + }) |
| + .then(handleResponse); |
| + }); |
| +} |
| + |
| + |
|
Bill Hesse
2013/08/02 08:27:36
One line between functions?
|
| main() { |
| testManualRedirect(); |
| testManualRedirectWithHeaders(); |
| @@ -467,4 +497,5 @@ main() { |
| testRedirectLoop(); |
| testRedirectClosingConnection(); |
| testRedirectRelativeUrl(); |
| + testRedirectRelativeToAbsolute(); |
| } |