| 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:async'; | 5 import 'dart:async'; |
| 6 import 'dart:io'; | 6 import 'dart:io'; |
| 7 | 7 |
| 8 import "package:http_server/http_server.dart"; | 8 import "package:http_server/http_server.dart"; |
| 9 import 'package:path/path.dart' as pathos; | 9 import 'package:path/path.dart' as pathos; |
| 10 import "package:unittest/unittest.dart"; | 10 import "package:unittest/unittest.dart"; |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 new File('${dir.path}/$i').createSync(); | 109 new File('${dir.path}/$i').createSync(); |
| 110 } | 110 } |
| 111 virDir.allowDirectoryListing = true; | 111 virDir.allowDirectoryListing = true; |
| 112 | 112 |
| 113 return getAsString(virDir, '/') | 113 return getAsString(virDir, '/') |
| 114 .then((result) { | 114 .then((result) { |
| 115 expect(result, contains('Index of /')); | 115 expect(result, contains('Index of /')); |
| 116 }); | 116 }); |
| 117 }); | 117 }); |
| 118 | 118 |
| 119 testVirtualDir('dir-href', (dir) { |
| 120 var virDir = new VirtualDirectory(dir.path); |
| 121 new Directory('${dir.path}/dir').createSync(); |
| 122 virDir.allowDirectoryListing = true; |
| 123 |
| 124 return getAsString(virDir, '/') |
| 125 .then((result) { |
| 126 expect(result, contains('<a href="dir/">')); |
| 127 }); |
| 128 }); |
| 129 |
| 119 testVirtualDir('dirs', (dir) { | 130 testVirtualDir('dirs', (dir) { |
| 120 var virDir = new VirtualDirectory(dir.path); | 131 var virDir = new VirtualDirectory(dir.path); |
| 121 for (int i = 0; i < 10; i++) { | 132 for (int i = 0; i < 10; i++) { |
| 122 new Directory('${dir.path}/$i').createSync(); | 133 new Directory('${dir.path}/$i').createSync(); |
| 123 } | 134 } |
| 124 virDir.allowDirectoryListing = true; | 135 virDir.allowDirectoryListing = true; |
| 125 | 136 |
| 126 return getAsString(virDir, '/') | 137 return getAsString(virDir, '/') |
| 127 .then((result) { | 138 .then((result) { |
| 128 expect(result, contains('Index of /')); | 139 expect(result, contains('Index of /')); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 }); | 198 }); |
| 188 | 199 |
| 189 testVirtualDir('encoded-path', (dir) { | 200 testVirtualDir('encoded-path', (dir) { |
| 190 var virDir = new VirtualDirectory(dir.path); | 201 var virDir = new VirtualDirectory(dir.path); |
| 191 new Directory('${dir.path}/javascript:alert(document);"') | 202 new Directory('${dir.path}/javascript:alert(document);"') |
| 192 .createSync(); | 203 .createSync(); |
| 193 virDir.allowDirectoryListing = true; | 204 virDir.allowDirectoryListing = true; |
| 194 | 205 |
| 195 return getAsString(virDir, '/') | 206 return getAsString(virDir, '/') |
| 196 .then((result) { | 207 .then((result) { |
| 197 expect(result, contains('%2Fjavascript%3Aalert(document)%3B%22')); | 208 expect(result, contains('javascript%3Aalert(document)%3B%22/')); |
| 198 }); | 209 }); |
| 199 }); | 210 }); |
| 200 | 211 |
| 201 testVirtualDir('encoded-special', (dir) { | 212 testVirtualDir('encoded-special', (dir) { |
| 202 var virDir = new VirtualDirectory(dir.path); | 213 var virDir = new VirtualDirectory(dir.path); |
| 203 new Directory('${dir.path}/<>&"').createSync(); | 214 new Directory('${dir.path}/<>&"').createSync(); |
| 204 virDir.allowDirectoryListing = true; | 215 virDir.allowDirectoryListing = true; |
| 205 | 216 |
| 206 return getAsString(virDir, '/') | 217 return getAsString(virDir, '/') |
| 207 .then((result) { | 218 .then((result) { |
| 208 expect(result, contains('<>&"/')); | 219 expect(result, contains('<>&"/')); |
| 209 expect(result, contains('href="%2F%3C%3E%26%22"')); | 220 expect(result, contains('href="%3C%3E%26%22/"')); |
| 210 }); | 221 }); |
| 211 }); | 222 }); |
| 212 } | 223 } |
| 213 }); | 224 }); |
| 214 | 225 |
| 215 group('custom', () { | 226 group('custom', () { |
| 216 testVirtualDir('simple', (dir) { | 227 testVirtualDir('simple', (dir) { |
| 217 var virDir = new VirtualDirectory(dir.path); | 228 var virDir = new VirtualDirectory(dir.path); |
| 218 virDir.allowDirectoryListing = true; | 229 virDir.allowDirectoryListing = true; |
| 219 virDir.directoryHandler = (dir2, request) { | 230 virDir.directoryHandler = (dir2, request) { |
| (...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 return virDir.serveFile(new File('${d.path}/file'), request); | 598 return virDir.serveFile(new File('${d.path}/file'), request); |
| 588 }; | 599 }; |
| 589 | 600 |
| 590 return getAsString(virDir, '/') | 601 return getAsString(virDir, '/') |
| 591 .then((result) { | 602 .then((result) { |
| 592 expect(result, 'file contents'); | 603 expect(result, 'file contents'); |
| 593 }); | 604 }); |
| 594 }); | 605 }); |
| 595 }); | 606 }); |
| 596 } | 607 } |
| OLD | NEW |