Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 // | 4 // |
| 5 | 5 |
| 6 import "dart:io"; | 6 import "dart:io"; |
| 7 import "dart:uri"; | 7 import "dart:uri"; |
| 8 | 8 |
| 9 HttpServer setupServer() { | 9 HttpServer setupServer() { |
| 10 HttpServer server = new HttpServer(); | 10 HttpServer server = new HttpServer("127.0.0.1", 0); |
| 11 server.listen("127.0.0.1", 0, backlog: 5); | 11 |
| 12 var handlers = new Map<String, Function>(); | |
| 13 addRequestHandler(String path, void handler(HttpRequest request, | |
| 14 HttpResponse response)) { | |
| 15 handlers[path] = handler; | |
| 16 } | |
| 17 | |
| 18 server.listen((HttpRequest request) { | |
| 19 if (handlers.containsKey(request.uri.path)) { | |
| 20 handlers[request.uri.path](request, request.response); | |
| 21 } else { | |
| 22 request.listen((_) {}, onDone: () { | |
| 23 request.response.statusCode = 404; | |
| 24 request.response.close(); | |
| 25 }); | |
| 26 } | |
| 27 }); | |
| 12 | 28 |
| 13 void addRedirectHandler(int number, int statusCode) { | 29 void addRedirectHandler(int number, int statusCode) { |
| 14 server.addRequestHandler( | 30 addRequestHandler( |
| 15 (HttpRequest request) => request.path == "/$number", | 31 "/$number", |
| 16 (HttpRequest request, HttpResponse response) { | 32 (HttpRequest request, HttpResponse response) { |
| 17 response.headers.set(HttpHeaders.LOCATION, | 33 response.headers.set(HttpHeaders.LOCATION, |
| 18 "http://127.0.0.1:${server.port}/${number + 1}"); | 34 "http://127.0.0.1:${server.port}/${number + 1}"); |
| 19 response.statusCode = statusCode; | 35 response.statusCode = statusCode; |
| 20 response.outputStream.close(); | 36 response.close(); |
| 21 }); | 37 }); |
| 22 } | 38 } |
| 23 | 39 |
| 24 // Setup simple redirect. | 40 // Setup simple redirect. |
| 25 server.addRequestHandler( | 41 addRequestHandler( |
| 26 (HttpRequest request) => request.path == "/redirect", | 42 "/redirect", |
| 27 (HttpRequest request, HttpResponse response) { | 43 (HttpRequest request, HttpResponse response) { |
| 28 response.headers.set(HttpHeaders.LOCATION, | 44 response.headers.set(HttpHeaders.LOCATION, |
| 29 "http://127.0.0.1:${server.port}/location"); | 45 "http://127.0.0.1:${server.port}/location"); |
| 30 response.statusCode = HttpStatus.MOVED_PERMANENTLY; | 46 response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
| 31 response.outputStream.close(); | 47 response.close(); |
| 32 } | 48 } |
| 33 ); | 49 ); |
| 34 server.addRequestHandler( | 50 addRequestHandler( |
| 35 (HttpRequest request) => request.path == "/location", | 51 "/location", |
| 36 (HttpRequest request, HttpResponse response) { | 52 (HttpRequest request, HttpResponse response) { |
| 37 response.outputStream.close(); | 53 response.close(); |
| 38 } | 54 } |
| 39 ); | 55 ); |
| 40 | 56 |
| 41 // Setup redirect chain. | 57 // Setup redirect chain. |
| 42 int n = 1; | 58 int n = 1; |
| 43 addRedirectHandler(n++, HttpStatus.MOVED_PERMANENTLY); | 59 addRedirectHandler(n++, HttpStatus.MOVED_PERMANENTLY); |
| 44 addRedirectHandler(n++, HttpStatus.MOVED_TEMPORARILY); | 60 addRedirectHandler(n++, HttpStatus.MOVED_TEMPORARILY); |
| 45 addRedirectHandler(n++, HttpStatus.SEE_OTHER); | 61 addRedirectHandler(n++, HttpStatus.SEE_OTHER); |
| 46 addRedirectHandler(n++, HttpStatus.TEMPORARY_REDIRECT); | 62 addRedirectHandler(n++, HttpStatus.TEMPORARY_REDIRECT); |
| 47 for (int i = n; i < 10; i++) { | 63 for (int i = n; i < 10; i++) { |
| 48 addRedirectHandler(i, HttpStatus.MOVED_PERMANENTLY); | 64 addRedirectHandler(i, HttpStatus.MOVED_PERMANENTLY); |
| 49 } | 65 } |
| 50 | 66 |
| 51 // Setup redirect loop. | 67 // Setup redirect loop. |
| 52 server.addRequestHandler( | 68 addRequestHandler( |
| 53 (HttpRequest request) => request.path == "/A", | 69 "/A", |
| 54 (HttpRequest request, HttpResponse response) { | 70 (HttpRequest request, HttpResponse response) { |
| 55 response.headers.set(HttpHeaders.LOCATION, | 71 response.headers.set(HttpHeaders.LOCATION, |
| 56 "http://127.0.0.1:${server.port}/B"); | 72 "http://127.0.0.1:${server.port}/B"); |
| 57 response.statusCode = HttpStatus.MOVED_PERMANENTLY; | 73 response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
| 58 response.outputStream.close(); | 74 response.close(); |
| 59 } | 75 } |
| 60 ); | 76 ); |
| 61 server.addRequestHandler( | 77 addRequestHandler( |
| 62 (HttpRequest request) => request.path == "/B", | 78 "/B", |
| 63 (HttpRequest request, HttpResponse response) { | 79 (HttpRequest request, HttpResponse response) { |
| 64 response.headers.set(HttpHeaders.LOCATION, | 80 response.headers.set(HttpHeaders.LOCATION, |
| 65 "http://127.0.0.1:${server.port}/A"); | 81 "http://127.0.0.1:${server.port}/A"); |
| 66 response.statusCode = HttpStatus.MOVED_TEMPORARILY; | 82 response.statusCode = HttpStatus.MOVED_TEMPORARILY; |
| 67 response.outputStream.close(); | 83 response.close(); |
| 68 } | 84 } |
| 69 ); | 85 ); |
| 70 | 86 |
| 71 // Setup redirect checking headers. | 87 // Setup redirect checking headers. |
| 72 server.addRequestHandler( | 88 addRequestHandler( |
| 73 (HttpRequest request) => request.path == "/src", | 89 "/src", |
| 74 (HttpRequest request, HttpResponse response) { | 90 (HttpRequest request, HttpResponse response) { |
| 75 Expect.equals("value", request.headers.value("X-Request-Header")); | 91 Expect.equals("value", request.headers.value("X-Request-Header")); |
| 76 response.headers.set(HttpHeaders.LOCATION, | 92 response.headers.set(HttpHeaders.LOCATION, |
| 77 "http://127.0.0.1:${server.port}/target"); | 93 "http://127.0.0.1:${server.port}/target"); |
| 78 response.statusCode = HttpStatus.MOVED_PERMANENTLY; | 94 response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
| 79 response.outputStream.close(); | 95 response.close(); |
| 80 } | 96 } |
| 81 ); | 97 ); |
| 82 server.addRequestHandler( | 98 addRequestHandler( |
| 83 (HttpRequest request) => request.path == "/target", | 99 "/target", |
| 84 (HttpRequest request, HttpResponse response) { | 100 (HttpRequest request, HttpResponse response) { |
| 85 Expect.equals("value", request.headers.value("X-Request-Header")); | 101 Expect.equals("value", request.headers.value("X-Request-Header")); |
| 86 response.outputStream.close(); | 102 response.close(); |
| 87 } | 103 } |
| 88 ); | 104 ); |
| 89 | 105 |
| 90 // Setup redirect for 301 where POST should not redirect. | 106 // Setup redirect for 301 where POST should not redirect. |
| 91 server.addRequestHandler( | 107 addRequestHandler( |
| 92 (HttpRequest request) => request.path == "/301src", | 108 "/301src", |
| 93 (HttpRequest request, HttpResponse response) { | 109 (HttpRequest request, HttpResponse response) { |
| 94 Expect.equals("POST", request.method); | 110 Expect.equals("POST", request.method); |
| 95 response.headers.set(HttpHeaders.LOCATION, | 111 response.headers.set(HttpHeaders.LOCATION, |
| 96 "http://127.0.0.1:${server.port}/301target"); | 112 "http://127.0.0.1:${server.port}/301target"); |
| 97 response.statusCode = HttpStatus.MOVED_PERMANENTLY; | 113 response.statusCode = HttpStatus.MOVED_PERMANENTLY; |
| 98 response.outputStream.close(); | 114 response.close(); |
| 99 } | 115 } |
| 100 ); | 116 ); |
| 101 server.addRequestHandler( | 117 addRequestHandler( |
| 102 (HttpRequest request) => request.path == "/301target", | 118 "/301target", |
| 103 (HttpRequest request, HttpResponse response) { | 119 (HttpRequest request, HttpResponse response) { |
| 104 Expect.fail("Redirect of POST should not happen"); | 120 Expect.fail("Redirect of POST should not happen"); |
| 105 } | 121 } |
| 106 ); | 122 ); |
| 107 | 123 |
| 108 // Setup redirect for 303 where POST should turn into GET. | 124 // Setup redirect for 303 where POST should turn into GET. |
| 109 server.addRequestHandler( | 125 addRequestHandler( |
| 110 (HttpRequest request) => request.path == "/303src", | 126 "/303src", |
| 111 (HttpRequest request, HttpResponse response) { | 127 (HttpRequest request, HttpResponse response) { |
| 112 Expect.equals("POST", request.method); | 128 Expect.equals("POST", request.method); |
| 113 response.headers.set(HttpHeaders.LOCATION, | 129 response.headers.set(HttpHeaders.LOCATION, |
| 114 "http://127.0.0.1:${server.port}/303target"); | 130 "http://127.0.0.1:${server.port}/303target"); |
| 115 response.statusCode = HttpStatus.SEE_OTHER; | 131 response.statusCode = HttpStatus.SEE_OTHER; |
| 116 response.outputStream.close(); | 132 response.close(); |
| 117 } | 133 } |
| 118 ); | 134 ); |
| 119 server.addRequestHandler( | 135 addRequestHandler( |
| 120 (HttpRequest request) => request.path == "/303target", | 136 "/303target", |
| 121 (HttpRequest request, HttpResponse response) { | 137 (HttpRequest request, HttpResponse response) { |
| 122 Expect.equals("GET", request.method); | 138 Expect.equals("GET", request.method); |
| 123 response.outputStream.close(); | 139 response.close(); |
| 124 } | 140 } |
| 125 ); | 141 ); |
| 126 | 142 |
| 127 return server; | 143 return server; |
| 128 } | 144 } |
| 129 | 145 |
| 130 void checkRedirects(int redirectCount, HttpClientConnection conn) { | 146 void checkRedirects(int redirectCount, HttpClientResponse response) { |
| 131 if (redirectCount < 2) { | 147 if (redirectCount < 2) { |
| 132 Expect.isNull(conn.redirects); | 148 Expect.isTrue(response.redirects.isEmpty); |
| 133 } else { | 149 } else { |
| 134 Expect.equals(redirectCount - 1, conn.redirects.length); | 150 Expect.equals(redirectCount - 1, response.redirects.length); |
| 135 for (int i = 0; i < redirectCount - 2; i++) { | 151 for (int i = 0; i < redirectCount - 2; i++) { |
| 136 Expect.equals(conn.redirects[i].location.path, "/${i + 2}"); | 152 Expect.equals(response.redirects[i].location.path, "/${i + 2}"); |
| 137 } | 153 } |
| 138 } | 154 } |
| 139 } | 155 } |
| 140 | 156 |
| 141 void testManualRedirect() { | 157 void testManualRedirect() { |
| 142 HttpServer server = setupServer(); | 158 HttpServer server = setupServer(); |
| 143 HttpClient client = new HttpClient(); | 159 HttpClient client = new HttpClient(); |
| 144 | 160 |
| 145 int redirectCount = 0; | 161 int redirectCount = 0; |
| 146 HttpClientConnection conn = | 162 handleResponse(HttpClientResponse response) { |
| 147 client.getUrl(new Uri.fromString("http://127.0.0.1:${server.port}/1")); | 163 response.listen( |
| 148 conn.followRedirects = false; | 164 (_) {}, |
|
Søren Gjesse
2013/01/09 08:43:49
Maybe add Expect.fail here as no data is expected.
Anders Johnsen
2013/01/09 10:03:00
Done.
| |
| 149 conn.onResponse = (HttpClientResponse response) { | 165 onDone: () { |
| 150 response.inputStream.onData = response.inputStream.read; | 166 redirectCount++; |
| 151 response.inputStream.onClosed = () { | 167 if (redirectCount < 10) { |
| 152 redirectCount++; | 168 Expect.isTrue(response.isRedirect); |
| 153 if (redirectCount < 10) { | 169 checkRedirects(redirectCount, response); |
| 154 Expect.isTrue(response.isRedirect); | 170 response.redirect().then(handleResponse); |
| 155 checkRedirects(redirectCount, conn); | 171 } else { |
| 156 conn.redirect(); | 172 Expect.equals(HttpStatus.NOT_FOUND, response.statusCode); |
| 157 } else { | 173 server.close(); |
| 158 Expect.equals(HttpStatus.NOT_FOUND, response.statusCode); | 174 client.close(); |
| 159 server.close(); | 175 } |
| 160 client.shutdown(); | 176 }); |
| 161 } | 177 } |
| 162 }; | 178 client.getUrl(new Uri.fromString("http://127.0.0.1:${server.port}/1")) |
| 163 }; | 179 .then((HttpClientRequest request) { |
| 180 request.followRedirects = false; | |
| 181 return request.close(); | |
| 182 }) | |
| 183 .then(handleResponse); | |
| 164 } | 184 } |
| 165 | 185 |
| 166 void testManualRedirectWithHeaders() { | 186 void testManualRedirectWithHeaders() { |
| 167 HttpServer server = setupServer(); | 187 HttpServer server = setupServer(); |
| 168 HttpClient client = new HttpClient(); | 188 HttpClient client = new HttpClient(); |
| 169 | 189 |
| 170 int redirectCount = 0; | 190 int redirectCount = 0; |
| 171 HttpClientConnection conn = | 191 |
| 172 client.getUrl(new Uri.fromString("http://127.0.0.1:${server.port}/src")); | 192 handleResponse(HttpClientResponse response) { |
| 173 conn.followRedirects = false; | 193 response.listen((_) {}, onDone: () { |
|
Søren Gjesse
2013/01/09 08:43:49
Ditto.
Anders Johnsen
2013/01/09 10:03:00
Done.
| |
| 174 conn.onRequest = (HttpClientRequest request) { | |
| 175 request.headers.add("X-Request-Header", "value"); | |
| 176 request.outputStream.close(); | |
| 177 }; | |
| 178 conn.onResponse = (HttpClientResponse response) { | |
| 179 response.inputStream.onData = response.inputStream.read; | |
| 180 response.inputStream.onClosed = () { | |
| 181 redirectCount++; | 194 redirectCount++; |
| 182 if (redirectCount < 2) { | 195 if (redirectCount < 2) { |
| 183 Expect.isTrue(response.isRedirect); | 196 Expect.isTrue(response.isRedirect); |
| 184 conn.redirect(); | 197 response.redirect().then(handleResponse); |
| 185 } else { | 198 } else { |
| 186 Expect.equals(HttpStatus.OK, response.statusCode); | 199 Expect.equals(HttpStatus.OK, response.statusCode); |
| 187 server.close(); | 200 server.close(); |
| 188 client.shutdown(); | 201 client.close(); |
| 189 } | 202 } |
| 190 }; | 203 }); |
| 191 }; | 204 } |
| 205 | |
| 206 client.getUrl(new Uri.fromString("http://127.0.0.1:${server.port}/src")) | |
| 207 .then((HttpClientRequest request) { | |
| 208 request.followRedirects = false; | |
| 209 request.headers.add("X-Request-Header", "value"); | |
| 210 return request.close(); | |
| 211 }).then(handleResponse); | |
| 192 } | 212 } |
| 193 | 213 |
| 194 void testAutoRedirect() { | 214 void testAutoRedirect() { |
| 195 HttpServer server = setupServer(); | 215 HttpServer server = setupServer(); |
| 196 HttpClient client = new HttpClient(); | 216 HttpClient client = new HttpClient(); |
| 197 | 217 |
| 198 var requestCount = 0; | 218 client.getUrl(new Uri.fromString("http://127.0.0.1:${server.port}/redirect")) |
| 199 | 219 .then((HttpClientRequest request) { |
| 200 void onRequest(HttpClientRequest request) { | 220 return request.close(); |
| 201 requestCount++; | 221 }) |
| 202 request.outputStream.close(); | 222 .then((HttpClientResponse response) { |
| 203 } | 223 response.listen( |
| 204 | 224 (_) => Expect.fail("Response data not expected"), |
| 205 void onResponse(HttpClientResponse response) { | 225 onDone: () { |
| 206 response.inputStream.onData = | 226 Expect.equals(1, response.redirects.length); |
| 207 () => Expect.fail("Response data not expected"); | 227 server.close(); |
| 208 response.inputStream.onClosed = () { | 228 client.close(); |
| 209 Expect.equals(1, requestCount); | 229 }); |
| 210 server.close(); | 230 }); |
| 211 client.shutdown(); | |
| 212 }; | |
| 213 }; | |
| 214 | |
| 215 HttpClientConnection conn = | |
| 216 client.getUrl( | |
| 217 new Uri.fromString("http://127.0.0.1:${server.port}/redirect")); | |
| 218 conn.onRequest = onRequest; | |
| 219 conn.onResponse = onResponse; | |
| 220 conn.onError = (e) => Expect.fail("Error not expected ($e)"); | |
| 221 } | 231 } |
| 222 | 232 |
| 223 void testAutoRedirectWithHeaders() { | 233 void testAutoRedirectWithHeaders() { |
| 224 HttpServer server = setupServer(); | 234 HttpServer server = setupServer(); |
| 225 HttpClient client = new HttpClient(); | 235 HttpClient client = new HttpClient(); |
| 226 | 236 |
| 227 var requestCount = 0; | 237 client.getUrl(new Uri.fromString("http://127.0.0.1:${server.port}/src")) |
| 228 | 238 .then((HttpClientRequest request) { |
| 229 void onRequest(HttpClientRequest request) { | 239 request.headers.add("X-Request-Header", "value"); |
| 230 requestCount++; | 240 return request.close(); |
| 231 request.headers.add("X-Request-Header", "value"); | 241 }) |
| 232 request.outputStream.close(); | 242 .then((HttpClientResponse response) { |
| 233 }; | 243 response.listen( |
| 234 | 244 (_) => Expect.fail("Response data not expected"), |
| 235 void onResponse(HttpClientResponse response) { | 245 onDone: () { |
| 236 response.inputStream.onData = | 246 Expect.equals(1, response.redirects.length); |
| 237 () => Expect.fail("Response data not expected"); | 247 server.close(); |
| 238 response.inputStream.onClosed = () { | 248 client.close(); |
| 239 Expect.equals(1, requestCount); | 249 }); |
| 240 server.close(); | 250 }); |
| 241 client.shutdown(); | |
| 242 }; | |
| 243 }; | |
| 244 | |
| 245 HttpClientConnection conn = | |
| 246 client.getUrl(new Uri.fromString("http://127.0.0.1:${server.port}/src")); | |
| 247 conn.onRequest = onRequest; | |
| 248 conn.onResponse = onResponse; | |
| 249 conn.onError = (e) => Expect.fail("Error not expected ($e)"); | |
| 250 } | 251 } |
| 251 | 252 |
| 252 void testAutoRedirect301POST() { | 253 void testAutoRedirect301POST() { |
| 253 HttpServer server = setupServer(); | 254 HttpServer server = setupServer(); |
| 254 HttpClient client = new HttpClient(); | 255 HttpClient client = new HttpClient(); |
| 255 | 256 |
| 256 var requestCount = 0; | 257 client.postUrl(new Uri.fromString("http://127.0.0.1:${server.port}/301src")) |
| 257 | 258 .then((HttpClientRequest request) { |
| 258 void onRequest(HttpClientRequest request) { | 259 return request.close(); |
| 259 requestCount++; | 260 }) |
| 260 request.outputStream.close(); | 261 .then((HttpClientResponse response) { |
| 261 }; | 262 Expect.equals(HttpStatus.MOVED_PERMANENTLY, response.statusCode); |
| 262 | 263 response.listen( |
| 263 void onResponse(HttpClientResponse response) { | 264 (_) => Expect.fail("Response data not expected"), |
| 264 Expect.equals(HttpStatus.MOVED_PERMANENTLY, response.statusCode); | 265 onDone: () { |
| 265 response.inputStream.onData = | 266 Expect.equals(0, response.redirects.length); |
| 266 () => Expect.fail("Response data not expected"); | 267 server.close(); |
| 267 response.inputStream.onClosed = () { | 268 client.close(); |
| 268 Expect.equals(1, requestCount); | 269 }); |
| 269 server.close(); | 270 }); |
| 270 client.shutdown(); | |
| 271 }; | |
| 272 }; | |
| 273 | |
| 274 HttpClientConnection conn = | |
| 275 client.postUrl( | |
| 276 new Uri.fromString("http://127.0.0.1:${server.port}/301src")); | |
| 277 conn.onRequest = onRequest; | |
| 278 conn.onResponse = onResponse; | |
| 279 conn.onError = (e) => Expect.fail("Error not expected ($e)"); | |
| 280 } | 271 } |
| 281 | 272 |
| 282 void testAutoRedirect303POST() { | 273 void testAutoRedirect303POST() { |
| 283 HttpServer server = setupServer(); | 274 HttpServer server = setupServer(); |
| 284 HttpClient client = new HttpClient(); | 275 HttpClient client = new HttpClient(); |
| 285 | 276 |
| 286 var requestCount = 0; | 277 client.postUrl(new Uri.fromString("http://127.0.0.1:${server.port}/303src")) |
| 287 | 278 .then((HttpClientRequest request) { |
| 288 void onRequest(HttpClientRequest request) { | 279 return request.close(); |
| 289 requestCount++; | 280 }) |
| 290 request.outputStream.close(); | 281 .then((HttpClientResponse response) { |
| 291 }; | 282 Expect.equals(HttpStatus.OK, response.statusCode); |
| 292 | 283 response.listen( |
| 293 void onResponse(HttpClientResponse response) { | 284 (_) => Expect.fail("Response data not expected"), |
| 294 Expect.equals(HttpStatus.OK, response.statusCode); | 285 onDone: () { |
| 295 response.inputStream.onData = | 286 Expect.equals(1, response.redirects.length); |
| 296 () => Expect.fail("Response data not expected"); | 287 server.close(); |
| 297 response.inputStream.onClosed = () { | 288 client.close(); |
| 298 Expect.equals(1, requestCount); | 289 }); |
| 299 server.close(); | 290 }); |
| 300 client.shutdown(); | |
| 301 }; | |
| 302 }; | |
| 303 | |
| 304 HttpClientConnection conn = | |
| 305 client.postUrl( | |
| 306 new Uri.fromString("http://127.0.0.1:${server.port}/303src")); | |
| 307 conn.onRequest = onRequest; | |
| 308 conn.onResponse = onResponse; | |
| 309 conn.onError = (e) => Expect.fail("Error not expected ($e)"); | |
| 310 } | 291 } |
| 311 | 292 |
| 312 void testAutoRedirectLimit() { | 293 void testAutoRedirectLimit() { |
| 313 HttpServer server = setupServer(); | 294 HttpServer server = setupServer(); |
| 314 HttpClient client = new HttpClient(); | 295 HttpClient client = new HttpClient(); |
| 315 | 296 |
| 316 HttpClientConnection conn = | 297 client.getUrl(new Uri.fromString("http://127.0.0.1:${server.port}/1")) |
| 317 client.getUrl(new Uri.fromString("http://127.0.0.1:${server.port}/1")); | 298 .then((HttpClientRequest request) => request.close()) |
| 318 conn.onResponse = (HttpClientResponse response) { | 299 .catchError((e) { |
| 319 response.inputStream.onData = () => Expect.fail("Response not expected"); | 300 Expect.equals(5, e.error.redirects.length); |
| 320 response.inputStream.onClosed = () => Expect.fail("Response not expected"); | 301 server.close(); |
| 321 }; | 302 client.close(); |
| 322 conn.onError = (e) { | 303 }, test: (e) => e is RedirectLimitExceededException); |
| 323 Expect.isTrue(e is RedirectLimitExceededException); | |
| 324 Expect.equals(5, e.redirects.length); | |
| 325 server.close(); | |
| 326 client.shutdown(); | |
| 327 }; | |
| 328 } | 304 } |
| 329 | 305 |
| 330 void testRedirectLoop() { | 306 void testRedirectLoop() { |
| 331 HttpServer server = setupServer(); | 307 HttpServer server = setupServer(); |
| 332 HttpClient client = new HttpClient(); | 308 HttpClient client = new HttpClient(); |
| 333 | 309 |
| 334 int redirectCount = 0; | 310 int redirectCount = 0; |
| 335 HttpClientConnection conn = | 311 client.getUrl(new Uri.fromString("http://127.0.0.1:${server.port}/A")) |
| 336 client.getUrl(new Uri.fromString("http://127.0.0.1:${server.port}/A")); | 312 .then((HttpClientRequest request) => request.close()) |
| 337 conn.onResponse = (HttpClientResponse response) { | 313 .catchError((e) { |
| 338 response.inputStream.onData = () => Expect.fail("Response not expected"); | 314 Expect.equals(2, e.error.redirects.length); |
| 339 response.inputStream.onClosed = () => Expect.fail("Response not expected"); | 315 server.close(); |
| 340 }; | 316 client.close(); |
| 341 conn.onError = (e) { | 317 }, test: (e) => e is RedirectLoopException); |
| 342 Expect.isTrue(e is RedirectLoopException); | |
| 343 Expect.equals(2, e.redirects.length); | |
| 344 server.close(); | |
| 345 client.shutdown(); | |
| 346 }; | |
| 347 } | 318 } |
| 348 | 319 |
| 349 main() { | 320 main() { |
| 350 testManualRedirect(); | 321 testManualRedirect(); |
| 351 testManualRedirectWithHeaders(); | 322 // testManualRedirectWithHeaders(); |
|
Søren Gjesse
2013/01/09 08:43:49
Why are these tests still commented out?
Anders Johnsen
2013/01/09 10:03:00
Argh, fixed!!
| |
| 352 testAutoRedirect(); | 323 // testAutoRedirect(); |
| 353 testAutoRedirectWithHeaders(); | 324 // testAutoRedirectWithHeaders(); |
| 354 testAutoRedirect301POST(); | 325 // testAutoRedirect301POST(); |
| 355 testAutoRedirect303POST(); | 326 // testAutoRedirect303POST(); |
| 356 testAutoRedirectLimit(); | 327 // testAutoRedirectLimit(); |
| 357 testRedirectLoop(); | 328 // testRedirectLoop(); |
| 358 } | 329 } |
| OLD | NEW |