Chromium Code Reviews| OLD | NEW |
|---|---|
| 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:io'; | 5 import 'dart:io'; |
| 6 | 6 |
| 7 import "package:unittest/unittest.dart"; | 7 import "package:unittest/unittest.dart"; |
| 8 import "package:http_server/http_server.dart"; | 8 import "package:http_server/http_server.dart"; |
| 9 | 9 |
| 10 | 10 |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 127 .whenComplete(() { | 127 .whenComplete(() { |
| 128 server.close(); | 128 server.close(); |
| 129 file.deleteSync(); | 129 file.deleteSync(); |
| 130 dir2.deleteSync(); | 130 dir2.deleteSync(); |
| 131 dir.deleteSync(); | 131 dir.deleteSync(); |
| 132 }); | 132 }); |
| 133 }), completion(equals(HttpStatus.NOT_FOUND))); | 133 }), completion(equals(HttpStatus.NOT_FOUND))); |
| 134 }); | 134 }); |
| 135 }); | 135 }); |
| 136 }); | 136 }); |
| 137 | |
| 138 group('links', () { | |
| 139 group('follow-links', () { | |
| 140 test('dir-link', () { | |
| 141 expect(HttpServer.bind('localhost', 0).then((server) { | |
| 142 var dir = new Directory('').createTempSync(); | |
| 143 var dir2 = new Directory('${dir.path}/dir2')..createSync(); | |
| 144 var link = new Link('${dir.path}/dir3')..createSync('dir2'); | |
| 145 var file = new File('${dir2.path}/file')..createSync(); | |
| 146 var virDir = new VirtualDirectory(dir.path); | |
| 147 virDir.followLinks = true; | |
| 148 | |
| 149 virDir.serve(server); | |
| 150 | |
| 151 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.
| |
| 152 .then((request) => request.close()) | |
| 153 .then((response) => response.drain().then( | |
| 154 (_) => response.statusCode)) | |
| 155 .whenComplete(() { | |
| 156 server.close(); | |
| 157 dir.deleteSync(recursive: true); | |
| 158 }); | |
| 159 }), completion(equals(HttpStatus.OK))); | |
| 160 }); | |
| 161 | |
| 162 test('root-link', () { | |
| 163 expect(HttpServer.bind('localhost', 0).then((server) { | |
| 164 var dir = new Directory('').createTempSync(); | |
| 165 var link = new Link('${dir.path}/dir3')..createSync('.'); | |
| 166 var file = new File('${dir.path}/file')..createSync(); | |
| 167 var virDir = new VirtualDirectory(dir.path); | |
| 168 virDir.followLinks = true; | |
| 169 | |
| 170 virDir.serve(server); | |
| 171 | |
| 172 return new HttpClient().get('localhost', server.port, '/dir3/file') | |
| 173 .then((request) => request.close()) | |
| 174 .then((response) => response.drain().then( | |
| 175 (_) => response.statusCode)) | |
| 176 .whenComplete(() { | |
| 177 server.close(); | |
| 178 dir.deleteSync(recursive: true); | |
| 179 }); | |
| 180 }), completion(equals(HttpStatus.OK))); | |
| 181 }); | |
| 182 | |
| 183 group('bad-links', () { | |
| 184 test('absolute-link', () { | |
| 185 expect(HttpServer.bind('localhost', 0).then((server) { | |
| 186 var dir = new Directory('').createTempSync(); | |
| 187 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.
| |
| 188 ..createSync('${dir.path}/file'); | |
| 189 var file = new File('${dir.path}/file')..createSync(); | |
| 190 var virDir = new VirtualDirectory(dir.path); | |
| 191 virDir.followLinks = true; | |
| 192 | |
| 193 virDir.serve(server); | |
| 194 | |
| 195 return new HttpClient().get('localhost', server.port, '/dir3/file') | |
| 196 .then((request) => request.close()) | |
| 197 .then((response) => response.drain().then( | |
| 198 (_) => response.statusCode)) | |
| 199 .whenComplete(() { | |
| 200 server.close(); | |
| 201 dir.deleteSync(recursive: true); | |
| 202 }); | |
| 203 }), completion(equals(HttpStatus.NOT_FOUND))); | |
| 204 }); | |
| 205 | |
| 206 test('relative-parent-link', () { | |
| 207 expect(HttpServer.bind('localhost', 0).then((server) { | |
| 208 var dir = new Directory('').createTempSync(); | |
| 209 var name = new Path(dir.path).filename; | |
| 210 var link = new Link('${dir.path}/dir3') | |
| 211 ..createSync('../$name/file'); | |
| 212 var file = new File('${dir.path}/file')..createSync(); | |
| 213 var virDir = new VirtualDirectory(dir.path); | |
| 214 virDir.followLinks = true; | |
| 215 | |
| 216 virDir.serve(server); | |
| 217 | |
| 218 return new HttpClient().get('localhost', server.port, '/dir3/file') | |
| 219 .then((request) => request.close()) | |
| 220 .then((response) => response.drain().then( | |
| 221 (_) => response.statusCode)) | |
| 222 .whenComplete(() { | |
| 223 server.close(); | |
| 224 dir.deleteSync(recursive: true); | |
| 225 }); | |
| 226 }), completion(equals(HttpStatus.NOT_FOUND))); | |
| 227 }); | |
| 228 }); | |
| 229 }); | |
| 230 | |
| 231 group('not-follow-links', () { | |
| 232 test('dir-link', () { | |
| 233 expect(HttpServer.bind('localhost', 0).then((server) { | |
| 234 var dir = new Directory('').createTempSync(); | |
| 235 var dir2 = new Directory('${dir.path}/dir2')..createSync(); | |
| 236 var link = new Link('${dir.path}/dir3')..createSync('dir2'); | |
| 237 var file = new File('${dir2.path}/file')..createSync(); | |
| 238 var virDir = new VirtualDirectory(dir.path); | |
| 239 virDir.followLinks = false; | |
| 240 | |
| 241 virDir.serve(server); | |
| 242 | |
| 243 return new HttpClient().get('localhost', server.port, '/dir3/file') | |
| 244 .then((request) => request.close()) | |
| 245 .then((response) => response.drain().then( | |
| 246 (_) => response.statusCode)) | |
| 247 .whenComplete(() { | |
| 248 server.close(); | |
| 249 dir.deleteSync(recursive: true); | |
| 250 }); | |
| 251 }), completion(equals(HttpStatus.NOT_FOUND))); | |
| 252 }); | |
| 253 }); | |
| 254 }); | |
| 137 } | 255 } |
| 138 | 256 |
| OLD | NEW |