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

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

Issue 102743004: pkg/http_server: messed up one test, fixed whitespace (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 11 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 | « pkg/http_server/test/utils.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) 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";
11 11
12 import 'utils.dart'; 12 import 'utils.dart';
13 13
14 void _testVirDir(String name, dynamic func(HttpServer server, Directory dir)) { 14 void _testVirDir(String name, dynamic func(HttpServer server, Directory dir)) {
15 test(name, () { 15 test(name, () {
16 HttpServer server; 16 HttpServer server;
17 Directory dir; 17 Directory dir;
18 18
19 return HttpServer.bind('localhost', 0) 19 return HttpServer.bind('localhost', 0)
20 .then((value) { 20 .then((value) {
21 server = value; 21 server = value;
22 dir = Directory.systemTemp.createTempSync('http_server_virtual_'); 22 dir = Directory.systemTemp.createTempSync('http_server_virtual_');
23 return func(server, dir); 23 return func(server, dir);
24 }) 24 })
25 .whenComplete(() { 25 .whenComplete(() {
26 return Future.wait([server.close(), dir.delete(recursive: true)]); 26 return Future.wait([server.close(), dir.delete(recursive: true)]);
27 }); 27 });
28 }); 28 });
29 } 29 }
30 30
31 void _testEncoding(name, expected, [bool create = true]) { 31 void _testEncoding(name, expected, [bool create = true]) {
32 _testVirDir('encode-$name', (server, dir) { 32 _testVirDir('encode-$name', (server, dir) {
33 if (create) new File('${dir.path}/$name').createSync(); 33 if (create) new File('${dir.path}/$name').createSync();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 expect(result, HttpStatus.NOT_FOUND); 66 expect(result, HttpStatus.NOT_FOUND);
67 }); 67 });
68 }); 68 });
69 }); 69 });
70 70
71 group('serve-file', () { 71 group('serve-file', () {
72 group('top-level', () { 72 group('top-level', () {
73 _testVirDir('file-exists', (server, dir) { 73 _testVirDir('file-exists', (server, dir) {
74 var file = new File('${dir.path}/file')..createSync(); 74 var file = new File('${dir.path}/file')..createSync();
75 var virDir = new VirtualDirectory(dir.path); 75 var virDir = new VirtualDirectory(dir.path);
76 76
77 virDir.serve(server); 77 virDir.serve(server);
78 78
79 return getStatusCode(server.port, '/file') 79 return getStatusCode(server.port, '/file')
80 .then((result) { 80 .then((result) {
81 expect(result, HttpStatus.OK); 81 expect(result, HttpStatus.OK);
82 }); 82 });
83 }); 83 });
84 84
85 _testVirDir('file-not-exists', (server, dir) { 85 _testVirDir('file-not-exists', (server, dir) {
86 var virDir = new VirtualDirectory(dir.path); 86 var virDir = new VirtualDirectory(dir.path);
87 87
88 virDir.serve(server); 88 virDir.serve(server);
89 89
90 return getStatusCode(server.port, '/file') 90 return getStatusCode(server.port, '/file')
91 .then((result) { 91 .then((result) {
92 expect(result, HttpStatus.NOT_FOUND); 92 expect(result, HttpStatus.NOT_FOUND);
93 }); 93 });
94 }); 94 });
95 }); 95 });
96 96
97 group('in-dir', () { 97 group('in-dir', () {
98 _testVirDir('file-exists', (server, dir) { 98 _testVirDir('file-exists', (server, dir) {
99 var dir2 = new Directory('${dir.path}/dir')..createSync(); 99 var dir2 = new Directory('${dir.path}/dir')..createSync();
100 var file = new File('${dir2.path}/file')..createSync(); 100 var file = new File('${dir2.path}/file')..createSync();
101 var virDir = new VirtualDirectory(dir.path); 101 var virDir = new VirtualDirectory(dir.path);
102 102
103 virDir.serve(server); 103 virDir.serve(server);
104 104
105 return getStatusCode(server.port, '/dir/file') 105 return getStatusCode(server.port, '/dir/file')
106 .then((result) { 106 .then((result) {
107 expect(result, HttpStatus.OK); 107 expect(result, HttpStatus.OK);
108 }); 108 });
109 }); 109 });
110 110
111 _testVirDir('file-not-exists', (server, dir) { 111 _testVirDir('file-not-exists', (server, dir) {
112 var dir2 = new Directory('${dir.path}/dir')..createSync(); 112 var dir2 = new Directory('${dir.path}/dir')..createSync();
113 var file = new File('${dir.path}/file')..createSync(); 113 var file = new File('${dir.path}/file')..createSync();
114 var virDir = new VirtualDirectory(dir.path); 114 var virDir = new VirtualDirectory(dir.path);
115 115
116 virDir.serve(server); 116 virDir.serve(server);
117 117
118 return getStatusCode(server.port, '/dir/file') 118 return getStatusCode(server.port, '/dir/file')
119 .then((result) { 119 .then((result) {
120 expect(result, HttpStatus.NOT_FOUND); 120 expect(result, HttpStatus.NOT_FOUND);
121 }); 121 });
122 }); 122 });
123 }); 123 });
124 }); 124 });
125 125
126 group('serve-dir', () { 126 group('serve-dir', () {
127 group('top-level', () { 127 group('top-level', () {
128 _testVirDir('simple', (server, dir) { 128 _testVirDir('simple', (server, dir) {
129 var virDir = new VirtualDirectory(dir.path); 129 var virDir = new VirtualDirectory(dir.path);
130 virDir.allowDirectoryListing = true; 130 virDir.allowDirectoryListing = true;
131 131
132 virDir.serve(server); 132 virDir.serve(server);
133 133
134 return getAsString(server.port, '/') 134 return getAsString(server.port, '/')
135 .then((result) { 135 .then((result) {
136 expect(result, contains('Index of /')); 136 expect(result, contains('Index of /'));
137 }); 137 });
138 }); 138 });
139 139
140 _testVirDir('files', (server, dir) { 140 _testVirDir('files', (server, dir) {
141 var virDir = new VirtualDirectory(dir.path); 141 var virDir = new VirtualDirectory(dir.path);
142 for (int i = 0; i < 10; i++) { 142 for (int i = 0; i < 10; i++) {
143 new File('${dir.path}/$i').createSync(); 143 new File('${dir.path}/$i').createSync();
144 } 144 }
145 virDir.allowDirectoryListing = true; 145 virDir.allowDirectoryListing = true;
146 146
147 virDir.serve(server); 147 virDir.serve(server);
148 148
149 return getAsString(server.port, '/') 149 return getAsString(server.port, '/')
150 .then((result) { 150 .then((result) {
151 expect(result, contains('Index of /')); 151 expect(result, contains('Index of /'));
152 }); 152 });
153 }); 153 });
154 154
155 _testVirDir('dirs', (server, dir) { 155 _testVirDir('dirs', (server, dir) {
156 var virDir = new VirtualDirectory(dir.path); 156 var virDir = new VirtualDirectory(dir.path);
157 for (int i = 0; i < 10; i++) { 157 for (int i = 0; i < 10; i++) {
158 new Directory('${dir.path}/$i').createSync(); 158 new Directory('${dir.path}/$i').createSync();
159 } 159 }
160 virDir.allowDirectoryListing = true; 160 virDir.allowDirectoryListing = true;
161 161
162 virDir.serve(server); 162 virDir.serve(server);
163 163
164 return getAsString(server.port, '/') 164 return getAsString(server.port, '/')
165 .then((result) { 165 .then((result) {
166 expect(result, contains('Index of /')); 166 expect(result, contains('Index of /'));
167 }); 167 });
168 }); 168 });
169 169
170 if (!Platform.isWindows) { 170 if (!Platform.isWindows) {
171 _testVirDir('recursive-link', (server, dir) { 171 _testVirDir('recursive-link', (server, dir) {
172 var link = new Link('${dir.path}/recursive')..createSync('.'); 172 var link = new Link('${dir.path}/recursive')..createSync('.');
173 var virDir = new VirtualDirectory(dir.path); 173 var virDir = new VirtualDirectory(dir.path);
174 virDir.allowDirectoryListing = true; 174 virDir.allowDirectoryListing = true;
175 175
176 virDir.serve(server); 176 virDir.serve(server);
177 177
178 return Future.wait([ 178 return Future.wait([
179 getAsString(server.port, '/').then( 179 getAsString(server.port, '/').then(
180 (s) => s.contains('recursive/')), 180 (s) => s.contains('recursive/')),
181 getAsString(server.port, '/').then( 181 getAsString(server.port, '/').then(
182 (s) => !s.contains('../')), 182 (s) => !s.contains('../')),
183 getAsString(server.port, '/').then( 183 getAsString(server.port, '/').then(
184 (s) => s.contains('Index of /')), 184 (s) => s.contains('Index of /')),
185 getAsString(server.port, '/recursive').then( 185 getAsString(server.port, '/recursive').then(
186 (s) => s.contains('recursive/')), 186 (s) => s.contains('recursive/')),
187 getAsString(server.port, '/recursive').then( 187 getAsString(server.port, '/recursive').then(
(...skipping 10 matching lines...) Expand all
198 group('custom', () { 198 group('custom', () {
199 _testVirDir('simple', (server, dir) { 199 _testVirDir('simple', (server, dir) {
200 var virDir = new VirtualDirectory(dir.path); 200 var virDir = new VirtualDirectory(dir.path);
201 virDir.allowDirectoryListing = true; 201 virDir.allowDirectoryListing = true;
202 virDir.directoryHandler = (dir2, request) { 202 virDir.directoryHandler = (dir2, request) {
203 expect(dir2, isNotNull); 203 expect(dir2, isNotNull);
204 expect(FileSystemEntity.identicalSync(dir.path, dir2.path), isTrue); 204 expect(FileSystemEntity.identicalSync(dir.path, dir2.path), isTrue);
205 request.response.write('My handler ${request.uri.path}'); 205 request.response.write('My handler ${request.uri.path}');
206 request.response.close(); 206 request.response.close();
207 }; 207 };
208 208
209 virDir.serve(server); 209 virDir.serve(server);
210 210
211 return getAsString(server.port, '/') 211 return getAsString(server.port, '/')
212 .then((result) { 212 .then((result) {
213 expect(result, 'My handler /'); 213 expect(result, 'My handler /');
214 }); 214 });
215 }); 215 });
216 }); 216 });
217 }); 217 });
218 218
219 group('links', () { 219 group('links', () {
220 if (!Platform.isWindows) { 220 if (!Platform.isWindows) {
221 group('follow-links', () { 221 group('follow-links', () {
222 _testVirDir('dir-link', (server, dir) { 222 _testVirDir('dir-link', (server, dir) {
223 var dir2 = new Directory('${dir.path}/dir2')..createSync(); 223 var dir2 = new Directory('${dir.path}/dir2')..createSync();
224 var link = new Link('${dir.path}/dir3')..createSync('dir2'); 224 var link = new Link('${dir.path}/dir3')..createSync('dir2');
225 var file = new File('${dir2.path}/file')..createSync(); 225 var file = new File('${dir2.path}/file')..createSync();
226 var virDir = new VirtualDirectory(dir.path); 226 var virDir = new VirtualDirectory(dir.path);
227 virDir.followLinks = true; 227 virDir.followLinks = true;
228 228
229 virDir.serve(server); 229 virDir.serve(server);
230 230
231 return getStatusCode(server.port, '/dir3/file') 231 return getStatusCode(server.port, '/dir3/file')
232 .then((result) { 232 .then((result) {
233 expect(result, HttpStatus.OK); 233 expect(result, HttpStatus.OK);
234 }); 234 });
235 }); 235 });
236 236
237 _testVirDir('root-link', (server, dir) { 237 _testVirDir('root-link', (server, dir) {
238 var link = new Link('${dir.path}/dir3')..createSync('.'); 238 var link = new Link('${dir.path}/dir3')..createSync('.');
239 var file = new File('${dir.path}/file')..createSync(); 239 var file = new File('${dir.path}/file')..createSync();
240 var virDir = new VirtualDirectory(dir.path); 240 var virDir = new VirtualDirectory(dir.path);
241 virDir.followLinks = true; 241 virDir.followLinks = true;
242 242
243 virDir.serve(server); 243 virDir.serve(server);
244 244
245 return getStatusCode(server.port, '/dir3/file') 245 return getStatusCode(server.port, '/dir3/file')
246 .then((result) { 246 .then((result) {
247 expect(result, HttpStatus.OK); 247 expect(result, HttpStatus.OK);
248 }); 248 });
249 }); 249 });
250 250
251 group('bad-links', () { 251 group('bad-links', () {
252 _testVirDir('absolute-link', (server, dir) { 252 _testVirDir('absolute-link', (server, dir) {
253 var file = new File('${dir.path}/file')..createSync(); 253 var file = new File('${dir.path}/file')..createSync();
254 var link = new Link('${dir.path}/file2') 254 var link = new Link('${dir.path}/file2')
255 ..createSync('${dir.path}/file'); 255 ..createSync('${dir.path}/file');
256 var virDir = new VirtualDirectory(dir.path); 256 var virDir = new VirtualDirectory(dir.path);
257 virDir.followLinks = true; 257 virDir.followLinks = true;
258 258
259 virDir.serve(server); 259 virDir.serve(server);
260 260
261 return new HttpClient().get('localhost', 261 return new HttpClient().get('localhost',
262 server.port, 262 server.port,
263 '/file2') 263 '/file2')
264 .then((request) => request.close()) 264 .then((request) => request.close())
265 .then((response) => response.drain().then( 265 .then((response) => response.drain().then(
266 (_) => response.statusCode)) 266 (_) => response.statusCode))
267 .then((result) { 267 .then((result) {
268 expect(result, HttpStatus.NOT_FOUND); 268 expect(result, HttpStatus.NOT_FOUND);
269 }); 269 });
270 }); 270 });
(...skipping 16 matching lines...) Expand all
287 (_) => response.statusCode)) 287 (_) => response.statusCode))
288 .then((result) { 288 .then((result) {
289 expect(result, HttpStatus.NOT_FOUND); 289 expect(result, HttpStatus.NOT_FOUND);
290 }); 290 });
291 }); 291 });
292 }); 292 });
293 }); 293 });
294 294
295 group('not-follow-links', () { 295 group('not-follow-links', () {
296 _testVirDir('dir-link', (server, dir) { 296 _testVirDir('dir-link', (server, dir) {
297 return HttpServer.bind('localhost', 0).then((server) {
298 var dir =
299 Directory.systemTemp.createTempSync('http_server_virtual_');
300 var dir2 = new Directory('${dir.path}/dir2')..createSync(); 297 var dir2 = new Directory('${dir.path}/dir2')..createSync();
301 var link = new Link('${dir.path}/dir3')..createSync('dir2'); 298 var link = new Link('${dir.path}/dir3')..createSync('dir2');
302 var file = new File('${dir2.path}/file')..createSync(); 299 var file = new File('${dir2.path}/file')..createSync();
303 var virDir = new VirtualDirectory(dir.path); 300 var virDir = new VirtualDirectory(dir.path);
304 virDir.followLinks = false; 301 virDir.followLinks = false;
305 302
306 virDir.serve(server); 303 virDir.serve(server);
307 304
308 return getStatusCode(server.port, '/dir3/file') 305 return getStatusCode(server.port, '/dir3/file')
309 .whenComplete(() { 306 .then((result) {
310 server.close(); 307 expect(result, HttpStatus.NOT_FOUND);
311 dir.deleteSync(recursive: true);
312 }); 308 });
313 })
314 .then((result) {
315 expect(result, HttpStatus.NOT_FOUND);
316 });
317 }); 309 });
318 }); 310 });
319 311
320 group('follow-links', () { 312 group('follow-links', () {
321 group('no-root-jail', () { 313 group('no-root-jail', () {
322 _testVirDir('absolute-link', (server, dir) { 314 _testVirDir('absolute-link', (server, dir) {
323 var file = new File('${dir.path}/file')..createSync(); 315 var file = new File('${dir.path}/file')..createSync();
324 var link = new Link('${dir.path}/file2') 316 var link = new Link('${dir.path}/file2')
325 ..createSync('${dir.path}/file'); 317 ..createSync('${dir.path}/file');
326 var virDir = new VirtualDirectory(dir.path); 318 var virDir = new VirtualDirectory(dir.path);
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 567
576 virDir.serve(server); 568 virDir.serve(server);
577 569
578 return getAsString(server.port, '/') 570 return getAsString(server.port, '/')
579 .then((result) { 571 .then((result) {
580 expect(result, 'file contents'); 572 expect(result, 'file contents');
581 }); 573 });
582 }); 574 });
583 }); 575 });
584 } 576 }
OLDNEW
« no previous file with comments | « pkg/http_server/test/utils.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698