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

Side by Side Diff: pkg/http_server/test/virtual_directory_test.dart

Issue 18333003: Correctly url-decode the path segment in the http_server. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 5 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
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:io'; 6 import 'dart:io';
7 7
8 import "package:unittest/unittest.dart"; 8 import "package:unittest/unittest.dart";
9 import "package:http_server/http_server.dart"; 9 import "package:http_server/http_server.dart";
10 10
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 }); 469 });
470 virDir.serve(server); 470 virDir.serve(server);
471 471
472 return getAsString(server.port, '/') 472 return getAsString(server.port, '/')
473 .whenComplete(() { 473 .whenComplete(() {
474 server.close(); 474 server.close();
475 }); 475 });
476 }), completion(equals('my-page 404'))); 476 }), completion(equals('my-page 404')));
477 }); 477 });
478 }); 478 });
479
480 group('escape-root', () {
481 test('escape1', () {
482 expect(HttpServer.bind('localhost', 0).then((server) {
483 var dir = new Directory('').createTempSync();
484 var virDir = new VirtualDirectory(dir.path);
485
486 virDir.serve(server);
487
488 return getStatusCode(server.port, '/../')
489 .whenComplete(() {
490 server.close();
491 dir.deleteSync();
492 });
493 }), completion(equals(HttpStatus.NOT_FOUND)));
494 });
495
496 test('escape1', () {
497 expect(HttpServer.bind('localhost', 0).then((server) {
498 var dir = new Directory('').createTempSync();
499 new Directory('${dir.path}/dir').createSync();
500 var virDir = new VirtualDirectory(dir.path);
501
502 virDir.serve(server);
503
504 return getStatusCode(server.port, '/dir/../../')
505 .whenComplete(() {
506 server.close();
507 dir.deleteSync(recursive: true);
508 });
509 }), completion(equals(HttpStatus.NOT_FOUND)));
510 });
511 });
512
513 group('url-decode', () {
514 test('with-space', () {
515 expect(HttpServer.bind('localhost', 0).then((server) {
516 var dir = new Directory('').createTempSync();
517 var file = new File('${dir.path}/my file')..createSync();
518 var virDir = new VirtualDirectory(dir.path);
519
520 virDir.serve(server);
521
522 return getStatusCode(server.port, '/my file')
523 .whenComplete(() {
524 server.close();
525 dir.deleteSync(recursive: true);
526 });
527 }), completion(equals(HttpStatus.OK)));
528 });
529
530 test('encoded-space', () {
531 expect(HttpServer.bind('localhost', 0).then((server) {
532 var dir = new Directory('').createTempSync();
533 var file = new File('${dir.path}/my file')..createSync();
534 var virDir = new VirtualDirectory(dir.path);
535
536 virDir.serve(server);
537
538 return getStatusCode(server.port, '/my%20file')
Lasse Reichstein Nielsen 2013/07/01 11:51:51 Test with strings containing: %2e%2e ("..") %2f
Anders Johnsen 2013/07/01 14:14:12 Done.
539 .whenComplete(() {
540 server.close();
541 dir.deleteSync(recursive: true);
542 });
543 }), completion(equals(HttpStatus.NOT_FOUND)));
544 });
545 });
479 } 546 }
480 547
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698