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 // VMOptions= | 5 // VMOptions= |
| 6 // VMOptions=--short_socket_read | 6 // VMOptions=--short_socket_read |
| 7 // VMOptions=--short_socket_write | 7 // VMOptions=--short_socket_write |
| 8 // VMOptions=--short_socket_read --short_socket_write | 8 // VMOptions=--short_socket_read --short_socket_write |
| 9 | 9 |
| 10 #import("dart:isolate"); | 10 #import("dart:isolate"); |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 170 Expect.equals("text/html", request.headers.contentType.value); | 170 Expect.equals("text/html", request.headers.contentType.value); |
| 171 Expect.equals("text", request.headers.contentType.primaryType); | 171 Expect.equals("text", request.headers.contentType.primaryType); |
| 172 Expect.equals("html", request.headers.contentType.subType); | 172 Expect.equals("html", request.headers.contentType.subType); |
| 173 Expect.equals("utf-8", request.headers.contentType.parameters["charset"]); | 173 Expect.equals("utf-8", request.headers.contentType.parameters["charset"]); |
| 174 | 174 |
| 175 response.headers.set(HttpHeaders.CONTENT_TYPE, | 175 response.headers.set(HttpHeaders.CONTENT_TYPE, |
| 176 "text/html; charset = utf-8"); | 176 "text/html; charset = utf-8"); |
| 177 response.outputStream.close(); | 177 response.outputStream.close(); |
| 178 } | 178 } |
| 179 | 179 |
| 180 void _cookie1Handler(HttpRequest request, HttpResponse response) { | |
| 181 // No cookies passed with this request. | |
| 182 Expect.equals(0, request.cookies.length); | |
| 183 | |
| 184 Cookie cookie1 = new Cookie("name1", "value1"); | |
| 185 TimeZone utc = new TimeZone.utc(); | |
| 186 Date date = new Date.withTimeZone(2014, Date.JAN, 5, 23, 59, 59, 0, utc); | |
| 187 cookie1.expires = date; | |
| 188 cookie1.domain = "www.example.com"; | |
| 189 cookie1.httpOnly = true; | |
| 190 response.cookies.add(cookie1); | |
| 191 Cookie cookie2 = new Cookie("name2", "value2"); | |
| 192 cookie2.maxAge = 100; | |
| 193 cookie2.domain = ".example.com"; | |
| 194 cookie2.path = "/shop"; | |
| 195 response.cookies.add(cookie2); | |
| 196 response.outputStream.close(); | |
| 197 } | |
| 198 | |
| 199 void _cookie2Handler(HttpRequest request, HttpResponse response) { | |
| 200 // Two cookies passed with this request. | |
| 201 Expect.equals(2, request.cookies.length); | |
| 202 response.outputStream.close(); | |
| 203 } | |
| 204 | |
| 180 void main() { | 205 void main() { |
| 181 // Setup request handlers. | 206 // Setup request handlers. |
| 182 _requestHandlers = new Map(); | 207 _requestHandlers = new Map(); |
| 183 _requestHandlers["/echo"] = (HttpRequest request, HttpResponse response) { | 208 _requestHandlers["/echo"] = (HttpRequest request, HttpResponse response) { |
| 184 _echoHandler(request, response); | 209 _echoHandler(request, response); |
| 185 }; | 210 }; |
| 186 _requestHandlers["/0123456789"] = | 211 _requestHandlers["/0123456789"] = |
| 187 (HttpRequest request, HttpResponse response) { | 212 (HttpRequest request, HttpResponse response) { |
| 188 _zeroToTenHandler(request, response); | 213 _zeroToTenHandler(request, response); |
| 189 }; | 214 }; |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 204 _expires2Handler(request, response); | 229 _expires2Handler(request, response); |
| 205 }; | 230 }; |
| 206 _requestHandlers["/contenttype1"] = | 231 _requestHandlers["/contenttype1"] = |
| 207 (HttpRequest request, HttpResponse response) { | 232 (HttpRequest request, HttpResponse response) { |
| 208 _contentType1Handler(request, response); | 233 _contentType1Handler(request, response); |
| 209 }; | 234 }; |
| 210 _requestHandlers["/contenttype2"] = | 235 _requestHandlers["/contenttype2"] = |
| 211 (HttpRequest request, HttpResponse response) { | 236 (HttpRequest request, HttpResponse response) { |
| 212 _contentType2Handler(request, response); | 237 _contentType2Handler(request, response); |
| 213 }; | 238 }; |
| 239 _requestHandlers["/cookie1"] = | |
| 240 (HttpRequest request, HttpResponse response) { | |
| 241 _cookie1Handler(request, response); | |
| 242 }; | |
| 243 _requestHandlers["/cookie2"] = | |
| 244 (HttpRequest request, HttpResponse response) { | |
| 245 _cookie2Handler(request, response); | |
| 246 }; | |
| 214 | 247 |
| 215 this.port.receive((var message, SendPort replyTo) { | 248 this.port.receive((var message, SendPort replyTo) { |
| 216 if (message.isStart) { | 249 if (message.isStart) { |
| 217 _server = new HttpServer(); | 250 _server = new HttpServer(); |
| 218 try { | 251 try { |
| 219 _server.listen("127.0.0.1", 0); | 252 _server.listen("127.0.0.1", 0); |
| 220 _server.defaultRequestHandler = (HttpRequest req, HttpResponse rsp) { | 253 _server.defaultRequestHandler = (HttpRequest req, HttpResponse rsp) { |
| 221 _requestReceivedHandler(req, rsp); | 254 _requestReceivedHandler(req, rsp); |
| 222 }; | 255 }; |
| 223 replyTo.send(new TestServerStatus.started(_server.port), null); | 256 replyTo.send(new TestServerStatus.started(_server.port), null); |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 586 "text/html; charset = utf-8"); | 619 "text/html; charset = utf-8"); |
| 587 request.outputStream.close(); | 620 request.outputStream.close(); |
| 588 }; | 621 }; |
| 589 conn2.onResponse = (HttpClientResponse response) { | 622 conn2.onResponse = (HttpClientResponse response) { |
| 590 processResponse(response); | 623 processResponse(response); |
| 591 }; | 624 }; |
| 592 }); | 625 }); |
| 593 testServerMain.start(); | 626 testServerMain.start(); |
| 594 } | 627 } |
| 595 | 628 |
| 629 void testCookies() { | |
| 630 TestServerMain testServerMain = new TestServerMain(); | |
| 631 testServerMain.setServerStartedHandler((int port) { | |
| 632 int responses = 0; | |
| 633 HttpClient httpClient = new HttpClient(); | |
| 634 | |
|
Mads Ager (google)
2012/05/23 13:31:05
Delete empty line
Søren Gjesse
2012/05/24 11:34:21
Done.
| |
| 635 | |
| 636 HttpClientConnection conn1 = | |
| 637 httpClient.get("127.0.0.1", port, "/cookie1"); | |
| 638 conn1.onResponse = (HttpClientResponse response) { | |
| 639 Expect.equals(2, response.cookies.length); | |
| 640 response.cookies.forEach((cookie) { | |
| 641 if (cookie.name == "name1") { | |
| 642 Expect.equals("value1", cookie.value); | |
| 643 TimeZone utc = new TimeZone.utc(); | |
| 644 Date date = | |
| 645 new Date.withTimeZone(2014, Date.JAN, 5, 23, 59, 59, 0, utc); | |
| 646 Expect.equals(date, cookie.expires); | |
| 647 Expect.equals("www.example.com", cookie.domain); | |
| 648 Expect.isTrue(cookie.httpOnly); | |
| 649 } else if (cookie.name == "name2") { | |
| 650 Expect.equals("value2", cookie.value); | |
| 651 Expect.equals(100, cookie.maxAge); | |
| 652 Expect.equals(".example.com", cookie.domain); | |
| 653 Expect.equals("/shop", cookie.path); | |
| 654 } else { | |
| 655 Expect.fail("Unexpected cookie"); | |
| 656 } | |
| 657 }); | |
| 658 HttpClientConnection conn2 = | |
| 659 httpClient.get("127.0.0.1", port, "/cookie2"); | |
| 660 conn2.onRequest = (HttpClientRequest request) { | |
| 661 request.cookies.add(response.cookies[0]); | |
| 662 request.cookies.add(response.cookies[1]); | |
| 663 request.outputStream.close(); | |
| 664 }; | |
| 665 conn2.onResponse = (HttpClientRequest request) { | |
| 666 httpClient.shutdown(); | |
| 667 testServerMain.shutdown(); | |
| 668 }; | |
| 669 }; | |
| 670 }); | |
| 671 testServerMain.start(); | |
| 672 } | |
| 596 | 673 |
| 597 void main() { | 674 void main() { |
| 598 testStartStop(); | 675 testStartStop(); |
| 599 testGET(); | 676 testGET(); |
| 600 testPOST(true); | 677 testPOST(true); |
| 601 testPOST(false); | 678 testPOST(false); |
| 602 testReadInto(true); | 679 testReadInto(true); |
| 603 testReadInto(false); | 680 testReadInto(false); |
| 604 testReadShort(true); | 681 testReadShort(true); |
| 605 testReadShort(false); | 682 testReadShort(false); |
| 606 test404(); | 683 test404(); |
| 607 testReasonPhrase(); | 684 testReasonPhrase(); |
| 608 testHost(); | 685 testHost(); |
| 609 testExpires(); | 686 testExpires(); |
| 610 testContentType(); | 687 testContentType(); |
| 688 testCookies(); | |
| 611 } | 689 } |
| OLD | NEW |