Chromium Code Reviews| Index: tests/standalone/io/http_cookie_test.dart |
| diff --git a/tests/standalone/io/http_cookie_test.dart b/tests/standalone/io/http_cookie_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..85709f6d9956cf79d53d487ec00f50a8c673f46e |
| --- /dev/null |
| +++ b/tests/standalone/io/http_cookie_test.dart |
| @@ -0,0 +1,66 @@ |
| +// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| +// for details. All rights reserved. Use of this source code is governed by a |
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +import "package:expect/expect.dart"; |
| +import "dart:io"; |
| + |
| +void testCookies() { |
| + var cookies = [{'abc': 'def'}, |
| + {'ABC': 'DEF'}, |
| + {'Abc': 'Def'}, |
| + {'Abc': 'Def', 'SID': 'sffFSDF4FsdfF56765'}]; |
| + |
| + HttpServer.bind("127.0.0.1", 0).then((server) { |
| + server.listen( |
|
Bill Hesse
2013/06/04 08:30:14
Should we show people how to indent closures less,
Søren Gjesse
2013/06/04 08:54:45
Done - I did not see any other places.
|
| + (HttpRequest request) { |
| + // Collect the cookies in a map. |
| + var cookiesMap = {}; |
| + request.cookies.forEach((c) => cookiesMap[c.name] = c.value); |
| + int index = int.parse(request.uri.path.substring(1)); |
| + Expect.mapEquals(cookies[index], cookiesMap); |
| + // Return the same cookies to the client. |
| + cookiesMap.forEach((k, v) { |
| + request.response.cookies.add(new Cookie(k, v)); |
| + }); |
| + request.response.close(); |
| + }); |
| + |
| + int count = 0; |
| + HttpClient client = new HttpClient(); |
| + for (int i = 0; i < cookies.length; i++) { |
| + client.get("127.0.0.1", server.port, "/$i") |
| + .then((request) { |
| + // Send the cookies to the server. |
| + cookies[i].forEach((k, v) { |
| + request.cookies.add(new Cookie(k, v)); |
| + }); |
| + return request.close(); |
| + }) |
| + .then((response) { |
| + // Expect the same cookies back. |
| + var cookiesMap = {}; |
| + response.cookies.forEach((c) => cookiesMap[c.name] = c.value); |
| + Expect.mapEquals(cookies[i], cookiesMap); |
| + response.listen( |
| + (d) {}, |
| + onDone: () { |
| + if (++count == cookies.length) { |
| + client.close(); |
| + server.close(); |
| + } |
| + }); |
| + }) |
| + .catchError((e) { |
| + String msg = "Unexpected error $e"; |
| + var trace = getAttachedStackTrace(e); |
| + if (trace != null) msg += "\nStackTrace: $trace"; |
| + Expect.fail(msg); |
| + }); |
| + } |
| + }); |
| +} |
| + |
| +void main() { |
| + testCookies(); |
| +} |