Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(141)

Side by Side Diff: tests/standalone/src/io/HttpTest.dart

Issue 9602011: Add handling of HTTP header "Expires" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed review comments Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tests/standalone/src/io/HttpDateTest.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 response.outputStream.close(); 117 response.outputStream.close();
118 } 118 }
119 119
120 // Return a 301 with a custom reason phrase. 120 // Return a 301 with a custom reason phrase.
121 void _reasonForMovingHandler(HttpRequest request, HttpResponse response) { 121 void _reasonForMovingHandler(HttpRequest request, HttpResponse response) {
122 response.statusCode = HttpStatus.MOVED_PERMANENTLY; 122 response.statusCode = HttpStatus.MOVED_PERMANENTLY;
123 response.reasonPhrase = "Don't come looking here any more"; 123 response.reasonPhrase = "Don't come looking here any more";
124 response.outputStream.close(); 124 response.outputStream.close();
125 } 125 }
126 126
127 // Return a 301 with a custom reason phrase. 127 // Check the "Host" header.
128 void _hostHandler(HttpRequest request, HttpResponse response) { 128 void _hostHandler(HttpRequest request, HttpResponse response) {
129 Expect.equals("www.dartlang.org:1234", request.headers["host"]); 129 Expect.equals("www.dartlang.org:1234", request.headers["host"]);
130 response.statusCode = HttpStatus.OK; 130 response.statusCode = HttpStatus.OK;
131 response.outputStream.close(); 131 response.outputStream.close();
132 } 132 }
133 133
134 // Set the "Expires" header using the expires property.
135 void _expires1Handler(HttpRequest request, HttpResponse response) {
136 Date date =
137 new Date.withTimeZone(
138 1999, Date.JUN, 11, 18, 46, 53, 0, new TimeZone.utc());
139 response.expires = date;
140 Expect.equals(date, response.expires);
141 response.outputStream.close();
142 }
143
144 // Set the "Expires" header.
145 void _expires2Handler(HttpRequest request, HttpResponse response) {
146 response.setHeader("Expires", "Fri, 11 Jun 1999 18:46:53 GMT");
147 Date date =
148 new Date.withTimeZone(
149 1999, Date.JUN, 11, 18, 46, 53, 0, new TimeZone.utc());
150 Expect.equals(date, response.expires);
151 response.outputStream.close();
152 }
153
134 void main() { 154 void main() {
135 // Setup request handlers. 155 // Setup request handlers.
136 _requestHandlers = new Map(); 156 _requestHandlers = new Map();
137 _requestHandlers["/echo"] = (HttpRequest request, HttpResponse response) { 157 _requestHandlers["/echo"] = (HttpRequest request, HttpResponse response) {
138 _echoHandler(request, response); 158 _echoHandler(request, response);
139 }; 159 };
140 _requestHandlers["/0123456789"] = 160 _requestHandlers["/0123456789"] =
141 (HttpRequest request, HttpResponse response) { 161 (HttpRequest request, HttpResponse response) {
142 _zeroToTenHandler(request, response); 162 _zeroToTenHandler(request, response);
143 }; 163 };
144 _requestHandlers["/reasonformoving"] = 164 _requestHandlers["/reasonformoving"] =
145 (HttpRequest request, HttpResponse response) { 165 (HttpRequest request, HttpResponse response) {
146 _reasonForMovingHandler(request, response); 166 _reasonForMovingHandler(request, response);
147 }; 167 };
148 _requestHandlers["/host"] = 168 _requestHandlers["/host"] =
149 (HttpRequest request, HttpResponse response) { 169 (HttpRequest request, HttpResponse response) {
150 _hostHandler(request, response); 170 _hostHandler(request, response);
151 }; 171 };
172 _requestHandlers["/expires1"] =
173 (HttpRequest request, HttpResponse response) {
174 _expires1Handler(request, response);
175 };
176 _requestHandlers["/expires2"] =
177 (HttpRequest request, HttpResponse response) {
178 _expires2Handler(request, response);
179 };
152 180
153 this.port.receive((var message, SendPort replyTo) { 181 this.port.receive((var message, SendPort replyTo) {
154 if (message.isStart) { 182 if (message.isStart) {
155 _server = new HttpServer(); 183 _server = new HttpServer();
156 try { 184 try {
157 _server.listen("127.0.0.1", 0); 185 _server.listen("127.0.0.1", 0);
158 _server.onRequest = (HttpRequest req, HttpResponse rsp) { 186 _server.onRequest = (HttpRequest req, HttpResponse rsp) {
159 _requestReceivedHandler(req, rsp); 187 _requestReceivedHandler(req, rsp);
160 }; 188 };
161 replyTo.send(new TestServerStatus.started(_server.port), null); 189 replyTo.send(new TestServerStatus.started(_server.port), null);
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 }; 466 };
439 conn.onResponse = (HttpClientResponse response) { 467 conn.onResponse = (HttpClientResponse response) {
440 Expect.equals(HttpStatus.OK, response.statusCode); 468 Expect.equals(HttpStatus.OK, response.statusCode);
441 httpClient.shutdown(); 469 httpClient.shutdown();
442 testServerMain.shutdown(); 470 testServerMain.shutdown();
443 }; 471 };
444 }); 472 });
445 testServerMain.start(); 473 testServerMain.start();
446 } 474 }
447 475
476 void testExpires() {
477 TestServerMain testServerMain = new TestServerMain();
478 testServerMain.setServerStartedHandler((int port) {
479 int responses = 0;
480 HttpClient httpClient = new HttpClient();
481
482 void processResponse(HttpClientResponse response) {
483 Expect.equals(HttpStatus.OK, response.statusCode);
484 Expect.equals("Fri, 11 Jun 1999 18:46:53 GMT",
485 response.headers["expires"]);
486 Expect.equals(
487 new Date.withTimeZone(
488 1999, Date.JUN, 11, 18, 46, 53, 0, new TimeZone.utc()),
489 response.expires);
490 responses++;
491 if (responses == 2) {
492 httpClient.shutdown();
493 testServerMain.shutdown();
494 }
495 }
496
497 HttpClientConnection conn1 = httpClient.get("127.0.0.1", port, "/expires1");
498 conn1.onResponse = (HttpClientResponse response) {
499 processResponse(response);
500 };
501 HttpClientConnection conn2 = httpClient.get("127.0.0.1", port, "/expires2");
502 conn2.onResponse = (HttpClientResponse response) {
503 processResponse(response);
504 };
505 });
506 testServerMain.start();
507 }
508
448 509
449 void main() { 510 void main() {
450 testStartStop(); 511 testStartStop();
451 testGET(); 512 testGET();
452 testPOST(true); 513 testPOST(true);
453 testPOST(false); 514 testPOST(false);
454 testReadInto(true); 515 testReadInto(true);
455 testReadInto(false); 516 testReadInto(false);
456 testReadShort(true); 517 testReadShort(true);
457 testReadShort(false); 518 testReadShort(false);
458 test404(); 519 test404();
459 testReasonPhrase(); 520 testReasonPhrase();
460 testHost(); 521 testHost();
522 testExpires();
461 } 523 }
OLDNEW
« no previous file with comments | « tests/standalone/src/io/HttpDateTest.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698