Chromium Code Reviews| Index: pkg/http_server/test/virtual_directory_test.dart |
| diff --git a/pkg/http_server/test/virtual_directory_test.dart b/pkg/http_server/test/virtual_directory_test.dart |
| index d15113b105e4affcab5605a7b8cca1e19a7f19ca..c468cf942d711edcd1db4bcd9ea7e10d0f3b8eef 100644 |
| --- a/pkg/http_server/test/virtual_directory_test.dart |
| +++ b/pkg/http_server/test/virtual_directory_test.dart |
| @@ -134,5 +134,123 @@ void main() { |
| }); |
| }); |
| }); |
| + |
| + group('links', () { |
| + group('follow-links', () { |
| + test('dir-link', () { |
| + expect(HttpServer.bind('localhost', 0).then((server) { |
| + var dir = new Directory('').createTempSync(); |
| + var dir2 = new Directory('${dir.path}/dir2')..createSync(); |
| + var link = new Link('${dir.path}/dir3')..createSync('dir2'); |
| + var file = new File('${dir2.path}/file')..createSync(); |
| + var virDir = new VirtualDirectory(dir.path); |
| + virDir.followLinks = true; |
| + |
| + virDir.serve(server); |
| + |
| + return new HttpClient().get('localhost', server.port, '/dir3/file') |
|
Søren Gjesse
2013/06/24 08:08:53
Turn this HttpClient call into a separate function
Anders Johnsen
2013/06/24 08:21:16
I have a follow-up CL doing this.
|
| + .then((request) => request.close()) |
| + .then((response) => response.drain().then( |
| + (_) => response.statusCode)) |
| + .whenComplete(() { |
| + server.close(); |
| + dir.deleteSync(recursive: true); |
| + }); |
| + }), completion(equals(HttpStatus.OK))); |
| + }); |
| + |
| + test('root-link', () { |
| + expect(HttpServer.bind('localhost', 0).then((server) { |
| + var dir = new Directory('').createTempSync(); |
| + var link = new Link('${dir.path}/dir3')..createSync('.'); |
| + var file = new File('${dir.path}/file')..createSync(); |
| + var virDir = new VirtualDirectory(dir.path); |
| + virDir.followLinks = true; |
| + |
| + virDir.serve(server); |
| + |
| + return new HttpClient().get('localhost', server.port, '/dir3/file') |
| + .then((request) => request.close()) |
| + .then((response) => response.drain().then( |
| + (_) => response.statusCode)) |
| + .whenComplete(() { |
| + server.close(); |
| + dir.deleteSync(recursive: true); |
| + }); |
| + }), completion(equals(HttpStatus.OK))); |
| + }); |
| + |
| + group('bad-links', () { |
| + test('absolute-link', () { |
| + expect(HttpServer.bind('localhost', 0).then((server) { |
| + var dir = new Directory('').createTempSync(); |
| + var link = new Link('${dir.path}/dir3') |
|
Søren Gjesse
2013/06/24 08:08:53
Creating a link to a something that does not exist
Anders Johnsen
2013/06/24 08:21:16
Done.
|
| + ..createSync('${dir.path}/file'); |
| + var file = new File('${dir.path}/file')..createSync(); |
| + var virDir = new VirtualDirectory(dir.path); |
| + virDir.followLinks = true; |
| + |
| + virDir.serve(server); |
| + |
| + return new HttpClient().get('localhost', server.port, '/dir3/file') |
| + .then((request) => request.close()) |
| + .then((response) => response.drain().then( |
| + (_) => response.statusCode)) |
| + .whenComplete(() { |
| + server.close(); |
| + dir.deleteSync(recursive: true); |
| + }); |
| + }), completion(equals(HttpStatus.NOT_FOUND))); |
| + }); |
| + |
| + test('relative-parent-link', () { |
| + expect(HttpServer.bind('localhost', 0).then((server) { |
| + var dir = new Directory('').createTempSync(); |
| + var name = new Path(dir.path).filename; |
| + var link = new Link('${dir.path}/dir3') |
| + ..createSync('../$name/file'); |
| + var file = new File('${dir.path}/file')..createSync(); |
| + var virDir = new VirtualDirectory(dir.path); |
| + virDir.followLinks = true; |
| + |
| + virDir.serve(server); |
| + |
| + return new HttpClient().get('localhost', server.port, '/dir3/file') |
| + .then((request) => request.close()) |
| + .then((response) => response.drain().then( |
| + (_) => response.statusCode)) |
| + .whenComplete(() { |
| + server.close(); |
| + dir.deleteSync(recursive: true); |
| + }); |
| + }), completion(equals(HttpStatus.NOT_FOUND))); |
| + }); |
| + }); |
| + }); |
| + |
| + group('not-follow-links', () { |
| + test('dir-link', () { |
| + expect(HttpServer.bind('localhost', 0).then((server) { |
| + var dir = new Directory('').createTempSync(); |
| + var dir2 = new Directory('${dir.path}/dir2')..createSync(); |
| + var link = new Link('${dir.path}/dir3')..createSync('dir2'); |
| + var file = new File('${dir2.path}/file')..createSync(); |
| + var virDir = new VirtualDirectory(dir.path); |
| + virDir.followLinks = false; |
| + |
| + virDir.serve(server); |
| + |
| + return new HttpClient().get('localhost', server.port, '/dir3/file') |
| + .then((request) => request.close()) |
| + .then((response) => response.drain().then( |
| + (_) => response.statusCode)) |
| + .whenComplete(() { |
| + server.close(); |
| + dir.deleteSync(recursive: true); |
| + }); |
| + }), completion(equals(HttpStatus.NOT_FOUND))); |
| + }); |
| + }); |
| + }); |
| } |