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 346c1546525d704f117d2b6cf54b151eeae58bc4..45e778c703d280acb478819d3d3c467aeceff525 100644 |
--- a/tests/standalone/io/http_redirect_test.dart |
+++ b/tests/standalone/io/http_redirect_test.dart |
@@ -10,10 +10,9 @@ import "dart:io"; |
Future<HttpServer> setupServer() { |
Completer completer = new Completer(); |
HttpServer.bind("127.0.0.1", 0).then((server) { |
- |
var handlers = new Map<String, Function>(); |
- addRequestHandler(String path, void handler(HttpRequest request, |
- HttpResponse response)) { |
+ addRequestHandler( |
+ String path, void handler(HttpRequest request, HttpResponse response)) { |
handlers[path] = handler; |
} |
@@ -29,99 +28,77 @@ Future<HttpServer> setupServer() { |
}); |
void addRedirectHandler(int number, int statusCode) { |
- addRequestHandler( |
- "/$number", |
- (HttpRequest request, HttpResponse response) { |
- response.redirect( |
- Uri.parse("http://127.0.0.1:${server.port}/${number + 1}")); |
- }); |
+ addRequestHandler("/$number", |
+ (HttpRequest request, HttpResponse response) { |
+ response.redirect( |
+ Uri.parse("http://127.0.0.1:${server.port}/${number + 1}")); |
+ }); |
} |
// Setup simple redirect. |
- addRequestHandler( |
- "/redirect", |
- (HttpRequest request, HttpResponse response) { |
- response.redirect( |
- Uri.parse("http://127.0.0.1:${server.port}/location"), |
- status: HttpStatus.MOVED_PERMANENTLY); |
- } |
- ); |
- addRequestHandler( |
- "/location", |
- (HttpRequest request, HttpResponse response) { |
- response.close(); |
- } |
- ); |
+ addRequestHandler("/redirect", |
+ (HttpRequest request, HttpResponse response) { |
+ response.redirect(Uri.parse("http://127.0.0.1:${server.port}/location"), |
+ status: HttpStatus.MOVED_PERMANENTLY); |
+ }); |
+ addRequestHandler("/location", |
+ (HttpRequest request, HttpResponse response) { |
+ response.close(); |
+ }); |
// Setup redirects with relative url. |
- addRequestHandler( |
- "/redirectUrl", |
- (HttpRequest request, HttpResponse response) { |
- response.headers.set(HttpHeaders.LOCATION, "/some/relativeUrl"); |
- response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
- response.close(); |
- } |
- ); |
+ addRequestHandler("/redirectUrl", |
+ (HttpRequest request, HttpResponse response) { |
+ response.headers.set(HttpHeaders.LOCATION, "/some/relativeUrl"); |
+ response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
+ response.close(); |
+ }); |
- addRequestHandler( |
- "/some/redirectUrl", |
- (HttpRequest request, HttpResponse response) { |
- response.headers.set(HttpHeaders.LOCATION, "relativeUrl"); |
- response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
- response.close(); |
- } |
- ); |
+ addRequestHandler("/some/redirectUrl", |
+ (HttpRequest request, HttpResponse response) { |
+ response.headers.set(HttpHeaders.LOCATION, "relativeUrl"); |
+ response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
+ response.close(); |
+ }); |
- addRequestHandler( |
- "/some/relativeUrl", |
- (HttpRequest request, HttpResponse response) { |
- response.close(); |
- } |
- ); |
+ addRequestHandler("/some/relativeUrl", |
+ (HttpRequest request, HttpResponse response) { |
+ response.close(); |
+ }); |
- addRequestHandler( |
- "/some/relativeToAbsolute", |
- (HttpRequest request, HttpResponse response) { |
- response.redirect(Uri.parse("xxx"), status: HttpStatus.SEE_OTHER); |
- } |
- ); |
+ addRequestHandler("/some/relativeToAbsolute", |
+ (HttpRequest request, HttpResponse response) { |
+ response.redirect(Uri.parse("xxx"), status: HttpStatus.SEE_OTHER); |
+ }); |
- addRequestHandler( |
- "/redirectUrl2", |
- (HttpRequest request, HttpResponse response) { |
- response.headers.set(HttpHeaders.LOCATION, "location"); |
- response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
- response.close(); |
- } |
- ); |
+ addRequestHandler("/redirectUrl2", |
+ (HttpRequest request, HttpResponse response) { |
+ response.headers.set(HttpHeaders.LOCATION, "location"); |
+ response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
+ response.close(); |
+ }); |
- addRequestHandler( |
- "/redirectUrl3", |
- (HttpRequest request, HttpResponse response) { |
- response.headers.set(HttpHeaders.LOCATION, "./location"); |
- response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
- response.close(); |
- } |
- ); |
+ addRequestHandler("/redirectUrl3", |
+ (HttpRequest request, HttpResponse response) { |
+ response.headers.set(HttpHeaders.LOCATION, "./location"); |
+ response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
+ response.close(); |
+ }); |
- addRequestHandler( |
- "/redirectUrl4", |
- (HttpRequest request, HttpResponse response) { |
- response.headers.set(HttpHeaders.LOCATION, "./a/b/../../location"); |
- response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
- response.close(); |
- } |
- ); |
+ addRequestHandler("/redirectUrl4", |
+ (HttpRequest request, HttpResponse response) { |
+ response.headers.set(HttpHeaders.LOCATION, "./a/b/../../location"); |
+ response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
+ response.close(); |
+ }); |
- addRequestHandler( |
- "/redirectUrl5", |
- (HttpRequest request, HttpResponse response) { |
- response.headers.set(HttpHeaders.LOCATION, |
- "//127.0.0.1:${server.port}/location"); |
- response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
- response.close(); |
- } |
- ); |
+ addRequestHandler("/redirectUrl5", |
+ (HttpRequest request, HttpResponse response) { |
+ response.headers |
+ .set(HttpHeaders.LOCATION, "//127.0.0.1:${server.port}/location"); |
+ response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
+ response.close(); |
+ }); |
// Setup redirect chain. |
int n = 1; |
@@ -134,96 +111,71 @@ Future<HttpServer> setupServer() { |
} |
// Setup redirect loop. |
- addRequestHandler( |
- "/A", |
- (HttpRequest request, HttpResponse response) { |
- response.headers.set(HttpHeaders.LOCATION, |
- "http://127.0.0.1:${server.port}/B"); |
- response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
- response.close(); |
- } |
- ); |
- addRequestHandler( |
- "/B", |
- (HttpRequest request, HttpResponse response) { |
- response.headers.set(HttpHeaders.LOCATION, |
- "http://127.0.0.1:${server.port}/A"); |
- response.statusCode = HttpStatus.MOVED_TEMPORARILY; |
- response.close(); |
- } |
- ); |
+ addRequestHandler("/A", (HttpRequest request, HttpResponse response) { |
+ response.headers |
+ .set(HttpHeaders.LOCATION, "http://127.0.0.1:${server.port}/B"); |
+ response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
+ response.close(); |
+ }); |
+ addRequestHandler("/B", (HttpRequest request, HttpResponse response) { |
+ response.headers |
+ .set(HttpHeaders.LOCATION, "http://127.0.0.1:${server.port}/A"); |
+ response.statusCode = HttpStatus.MOVED_TEMPORARILY; |
+ response.close(); |
+ }); |
// Setup redirect checking headers. |
- addRequestHandler( |
- "/src", |
- (HttpRequest request, HttpResponse response) { |
- Expect.equals("value", request.headers.value("X-Request-Header")); |
- response.headers.set(HttpHeaders.LOCATION, |
- "http://127.0.0.1:${server.port}/target"); |
- response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
- response.close(); |
- } |
- ); |
- addRequestHandler( |
- "/target", |
- (HttpRequest request, HttpResponse response) { |
- Expect.equals("value", request.headers.value("X-Request-Header")); |
- response.close(); |
- } |
- ); |
+ addRequestHandler("/src", (HttpRequest request, HttpResponse response) { |
+ Expect.equals("value", request.headers.value("X-Request-Header")); |
+ response.headers |
+ .set(HttpHeaders.LOCATION, "http://127.0.0.1:${server.port}/target"); |
+ response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
+ response.close(); |
+ }); |
+ addRequestHandler("/target", (HttpRequest request, HttpResponse response) { |
+ Expect.equals("value", request.headers.value("X-Request-Header")); |
+ response.close(); |
+ }); |
// Setup redirect for 301 where POST should not redirect. |
- addRequestHandler( |
- "/301src", |
+ addRequestHandler("/301src", (HttpRequest request, HttpResponse response) { |
+ Expect.equals("POST", request.method); |
+ request.listen((_) {}, onDone: () { |
+ response.headers.set( |
+ HttpHeaders.LOCATION, "http://127.0.0.1:${server.port}/301target"); |
+ response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
+ response.close(); |
+ }); |
+ }); |
+ addRequestHandler("/301target", |
(HttpRequest request, HttpResponse response) { |
- Expect.equals("POST", request.method); |
- request.listen( |
- (_) {}, |
- onDone: () { |
- response.headers.set( |
- HttpHeaders.LOCATION, |
- "http://127.0.0.1:${server.port}/301target"); |
- response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
- response.close(); |
- }); |
- }); |
- addRequestHandler( |
- "/301target", |
- (HttpRequest request, HttpResponse response) { |
- Expect.fail("Redirect of POST should not happen"); |
- } |
- ); |
+ Expect.fail("Redirect of POST should not happen"); |
+ }); |
// Setup redirect for 303 where POST should turn into GET. |
- addRequestHandler( |
- "/303src", |
+ addRequestHandler("/303src", (HttpRequest request, HttpResponse response) { |
+ request.listen((_) {}, onDone: () { |
+ Expect.equals("POST", request.method); |
+ response.headers.set( |
+ HttpHeaders.LOCATION, "http://127.0.0.1:${server.port}/303target"); |
+ response.statusCode = HttpStatus.SEE_OTHER; |
+ response.close(); |
+ }); |
+ }); |
+ addRequestHandler("/303target", |
(HttpRequest request, HttpResponse response) { |
- request.listen((_) {}, onDone: () { |
- Expect.equals("POST", request.method); |
- response.headers.set( |
- HttpHeaders.LOCATION, |
- "http://127.0.0.1:${server.port}/303target"); |
- response.statusCode = HttpStatus.SEE_OTHER; |
- response.close(); |
- }); |
- }); |
- addRequestHandler( |
- "/303target", |
- (HttpRequest request, HttpResponse response) { |
- Expect.equals("GET", request.method); |
- response.close(); |
- }); |
+ Expect.equals("GET", request.method); |
+ response.close(); |
+ }); |
// Setup redirect where we close the connection. |
- addRequestHandler( |
- "/closing", |
- (HttpRequest request, HttpResponse response) { |
- response.headers.set(HttpHeaders.LOCATION, |
- "http://127.0.0.1:${server.port}/"); |
- response.statusCode = HttpStatus.FOUND; |
- response.persistentConnection = false; |
- response.close(); |
- }); |
+ addRequestHandler("/closing", (HttpRequest request, HttpResponse response) { |
+ response.headers |
+ .set(HttpHeaders.LOCATION, "http://127.0.0.1:${server.port}/"); |
+ response.statusCode = HttpStatus.FOUND; |
+ response.persistentConnection = false; |
+ response.close(); |
+ }); |
completer.complete(server); |
}); |
@@ -247,27 +199,27 @@ void testManualRedirect() { |
int redirectCount = 0; |
handleResponse(HttpClientResponse response) { |
- response.listen( |
- (_) => Expect.fail("Response data not expected"), |
+ response.listen((_) => Expect.fail("Response data not expected"), |
onDone: () { |
- redirectCount++; |
- if (redirectCount < 10) { |
- Expect.isTrue(response.isRedirect); |
- checkRedirects(redirectCount, response); |
- response.redirect().then(handleResponse); |
- } else { |
- Expect.equals(HttpStatus.NOT_FOUND, response.statusCode); |
- server.close(); |
- client.close(); |
- } |
- }); |
+ redirectCount++; |
+ if (redirectCount < 10) { |
+ Expect.isTrue(response.isRedirect); |
+ checkRedirects(redirectCount, response); |
+ response.redirect().then(handleResponse); |
+ } else { |
+ Expect.equals(HttpStatus.NOT_FOUND, response.statusCode); |
+ server.close(); |
+ client.close(); |
+ } |
+ }); |
} |
- client.getUrl(Uri.parse("http://127.0.0.1:${server.port}/1")) |
- .then((HttpClientRequest request) { |
- request.followRedirects = false; |
- return request.close(); |
- }) |
- .then(handleResponse); |
+ |
+ client |
+ .getUrl(Uri.parse("http://127.0.0.1:${server.port}/1")) |
+ .then((HttpClientRequest request) { |
+ request.followRedirects = false; |
+ return request.close(); |
+ }).then(handleResponse); |
}); |
} |
@@ -278,27 +230,27 @@ void testManualRedirectWithHeaders() { |
int redirectCount = 0; |
handleResponse(HttpClientResponse response) { |
- response.listen( |
- (_) => Expect.fail("Response data not expected"), |
+ response.listen((_) => Expect.fail("Response data not expected"), |
onDone: () { |
- redirectCount++; |
- if (redirectCount < 2) { |
- Expect.isTrue(response.isRedirect); |
- response.redirect().then(handleResponse); |
- } else { |
- Expect.equals(HttpStatus.OK, response.statusCode); |
- server.close(); |
- client.close(); |
- } |
- }); |
+ redirectCount++; |
+ if (redirectCount < 2) { |
+ Expect.isTrue(response.isRedirect); |
+ response.redirect().then(handleResponse); |
+ } else { |
+ Expect.equals(HttpStatus.OK, response.statusCode); |
+ server.close(); |
+ client.close(); |
+ } |
+ }); |
} |
- client.getUrl(Uri.parse("http://127.0.0.1:${server.port}/src")) |
- .then((HttpClientRequest request) { |
- request.followRedirects = false; |
- request.headers.add("X-Request-Header", "value"); |
- return request.close(); |
- }).then(handleResponse); |
+ client |
+ .getUrl(Uri.parse("http://127.0.0.1:${server.port}/src")) |
+ .then((HttpClientRequest request) { |
+ request.followRedirects = false; |
+ request.headers.add("X-Request-Header", "value"); |
+ return request.close(); |
+ }).then(handleResponse); |
}); |
} |
@@ -306,19 +258,18 @@ void testAutoRedirect() { |
setupServer().then((server) { |
HttpClient client = new HttpClient(); |
- client.getUrl(Uri.parse("http://127.0.0.1:${server.port}/redirect")) |
- .then((HttpClientRequest request) { |
- return request.close(); |
- }) |
- .then((HttpClientResponse response) { |
- response.listen( |
- (_) => Expect.fail("Response data not expected"), |
- onDone: () { |
- Expect.equals(1, response.redirects.length); |
- server.close(); |
- client.close(); |
- }); |
+ client |
+ .getUrl(Uri.parse("http://127.0.0.1:${server.port}/redirect")) |
+ .then((HttpClientRequest request) { |
+ return request.close(); |
+ }).then((HttpClientResponse response) { |
+ response.listen((_) => Expect.fail("Response data not expected"), |
+ onDone: () { |
+ Expect.equals(1, response.redirects.length); |
+ server.close(); |
+ client.close(); |
}); |
+ }); |
}); |
} |
@@ -326,20 +277,19 @@ void testAutoRedirectWithHeaders() { |
setupServer().then((server) { |
HttpClient client = new HttpClient(); |
- client.getUrl(Uri.parse("http://127.0.0.1:${server.port}/src")) |
- .then((HttpClientRequest request) { |
- request.headers.add("X-Request-Header", "value"); |
- return request.close(); |
- }) |
- .then((HttpClientResponse response) { |
- response.listen( |
- (_) => Expect.fail("Response data not expected"), |
- onDone: () { |
- Expect.equals(1, response.redirects.length); |
- server.close(); |
- client.close(); |
- }); |
+ client |
+ .getUrl(Uri.parse("http://127.0.0.1:${server.port}/src")) |
+ .then((HttpClientRequest request) { |
+ request.headers.add("X-Request-Header", "value"); |
+ return request.close(); |
+ }).then((HttpClientResponse response) { |
+ response.listen((_) => Expect.fail("Response data not expected"), |
+ onDone: () { |
+ Expect.equals(1, response.redirects.length); |
+ server.close(); |
+ client.close(); |
}); |
+ }); |
}); |
} |
@@ -347,20 +297,19 @@ void testAutoRedirect301POST() { |
setupServer().then((server) { |
HttpClient client = new HttpClient(); |
- client.postUrl(Uri.parse("http://127.0.0.1:${server.port}/301src")) |
- .then((HttpClientRequest request) { |
- return request.close(); |
- }) |
- .then((HttpClientResponse response) { |
- Expect.equals(HttpStatus.MOVED_PERMANENTLY, response.statusCode); |
- response.listen( |
- (_) => Expect.fail("Response data not expected"), |
- onDone: () { |
- Expect.equals(0, response.redirects.length); |
- server.close(); |
- client.close(); |
- }); |
+ client |
+ .postUrl(Uri.parse("http://127.0.0.1:${server.port}/301src")) |
+ .then((HttpClientRequest request) { |
+ return request.close(); |
+ }).then((HttpClientResponse response) { |
+ Expect.equals(HttpStatus.MOVED_PERMANENTLY, response.statusCode); |
+ response.listen((_) => Expect.fail("Response data not expected"), |
+ onDone: () { |
+ Expect.equals(0, response.redirects.length); |
+ server.close(); |
+ client.close(); |
}); |
+ }); |
}); |
} |
@@ -368,20 +317,19 @@ void testAutoRedirect303POST() { |
setupServer().then((server) { |
HttpClient client = new HttpClient(); |
- client.postUrl(Uri.parse("http://127.0.0.1:${server.port}/303src")) |
- .then((HttpClientRequest request) { |
- return request.close(); |
- }) |
- .then((HttpClientResponse response) { |
- Expect.equals(HttpStatus.OK, response.statusCode); |
- response.listen( |
- (_) => Expect.fail("Response data not expected"), |
- onDone: () { |
- Expect.equals(1, response.redirects.length); |
- server.close(); |
- client.close(); |
- }); |
+ client |
+ .postUrl(Uri.parse("http://127.0.0.1:${server.port}/303src")) |
+ .then((HttpClientRequest request) { |
+ return request.close(); |
+ }).then((HttpClientResponse response) { |
+ Expect.equals(HttpStatus.OK, response.statusCode); |
+ response.listen((_) => Expect.fail("Response data not expected"), |
+ onDone: () { |
+ Expect.equals(1, response.redirects.length); |
+ server.close(); |
+ client.close(); |
}); |
+ }); |
}); |
} |
@@ -389,13 +337,14 @@ void testAutoRedirectLimit() { |
setupServer().then((server) { |
HttpClient client = new HttpClient(); |
- client.getUrl(Uri.parse("http://127.0.0.1:${server.port}/1")) |
- .then((HttpClientRequest request) => request.close()) |
- .catchError((error) { |
- Expect.equals(5, error.redirects.length); |
- server.close(); |
- client.close(); |
- }, test: (e) => e is RedirectException); |
+ client |
+ .getUrl(Uri.parse("http://127.0.0.1:${server.port}/1")) |
+ .then((HttpClientRequest request) => request.close()) |
+ .catchError((error) { |
+ Expect.equals(5, error.redirects.length); |
+ server.close(); |
+ client.close(); |
+ }, test: (e) => e is RedirectException); |
}); |
} |
@@ -404,13 +353,14 @@ void testRedirectLoop() { |
HttpClient client = new HttpClient(); |
int redirectCount = 0; |
- client.getUrl(Uri.parse("http://127.0.0.1:${server.port}/A")) |
- .then((HttpClientRequest request) => request.close()) |
- .catchError((error) { |
- Expect.equals(2, error.redirects.length); |
- server.close(); |
- client.close(); |
- }, test: (e) => e is RedirectException); |
+ client |
+ .getUrl(Uri.parse("http://127.0.0.1:${server.port}/A")) |
+ .then((HttpClientRequest request) => request.close()) |
+ .catchError((error) { |
+ Expect.equals(2, error.redirects.length); |
+ server.close(); |
+ client.close(); |
+ }, test: (e) => e is RedirectException); |
}); |
} |
@@ -418,17 +368,16 @@ void testRedirectClosingConnection() { |
setupServer().then((server) { |
HttpClient client = new HttpClient(); |
- client.getUrl(Uri.parse("http://127.0.0.1:${server.port}/closing")) |
+ client |
+ .getUrl(Uri.parse("http://127.0.0.1:${server.port}/closing")) |
.then((request) => request.close()) |
.then((response) { |
- response.listen( |
- (_) {}, |
- onDone: () { |
- Expect.equals(1, response.redirects.length); |
- server.close(); |
- client.close(); |
- }); |
- }); |
+ response.listen((_) {}, onDone: () { |
+ Expect.equals(1, response.redirects.length); |
+ server.close(); |
+ client.close(); |
+ }); |
+ }); |
}); |
} |
@@ -438,20 +387,20 @@ void testRedirectRelativeUrl() { |
HttpClient client = new HttpClient(); |
print(path); |
- client.getUrl(Uri.parse("http://127.0.0.1:${server.port}$path")) |
+ client |
+ .getUrl(Uri.parse("http://127.0.0.1:${server.port}$path")) |
.then((request) => request.close()) |
.then((response) { |
- response.listen( |
- (_) {}, |
- onDone: () { |
- Expect.equals(HttpStatus.OK, response.statusCode); |
- Expect.equals(1, response.redirects.length); |
- server.close(); |
- client.close(); |
- }); |
- }); |
+ response.listen((_) {}, onDone: () { |
+ Expect.equals(HttpStatus.OK, response.statusCode); |
+ Expect.equals(1, response.redirects.length); |
+ server.close(); |
+ client.close(); |
+ }); |
+ }); |
}); |
} |
+ |
testPath("/redirectUrl"); |
testPath("/some/redirectUrl"); |
testPath("/redirectUrl2"); |
@@ -466,28 +415,26 @@ void testRedirectRelativeToAbsolute() { |
int redirectCount = 0; |
handleResponse(HttpClientResponse response) { |
- response.listen( |
- (_) => Expect.fail("Response data not expected"), |
+ response.listen((_) => Expect.fail("Response data not expected"), |
onDone: () { |
- Expect.equals(HttpStatus.SEE_OTHER, response.statusCode); |
- Expect.equals("xxx", |
- response.headers["Location"][0]); |
- Expect.isTrue(response.isRedirect); |
- server.close(); |
- client.close(); |
- }); |
+ Expect.equals(HttpStatus.SEE_OTHER, response.statusCode); |
+ Expect.equals("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); |
+ |
+ client |
+ .getUrl(Uri |
+ .parse("http://127.0.0.1:${server.port}/some/relativeToAbsolute")) |
+ .then((HttpClientRequest request) { |
+ request.followRedirects = false; |
+ return request.close(); |
+ }).then(handleResponse); |
}); |
} |
- |
main() { |
testManualRedirect(); |
testManualRedirectWithHeaders(); |