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

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

Issue 25731003: Use Directory.systemTemp getter in pkg subdirectory of repository. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix formatting Created 7 years, 2 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/test/multipart_test.dart ('k') | pkg/scheduled_test/lib/descriptor.dart » ('j') | 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"; 9 import "package:path/path.dart";
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 14
15 void main() { 15 void main() {
16 group('serve-root', () { 16 group('serve-root', () {
17 test('dir-exists', () { 17 test('dir-exists', () {
18 expect(HttpServer.bind('localhost', 0).then((server) { 18 expect(HttpServer.bind('localhost', 0).then((server) {
19 var dir = new Directory('').createTempSync(); 19 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
20 var virDir = new VirtualDirectory(dir.path); 20 var virDir = new VirtualDirectory(dir.path);
21 21
22 virDir.serve(server); 22 virDir.serve(server);
23 23
24 return getStatusCode(server.port, '/') 24 return getStatusCode(server.port, '/')
25 .whenComplete(() { 25 .whenComplete(() {
26 server.close(); 26 server.close();
27 dir.deleteSync(); 27 dir.deleteSync();
28 }); 28 });
29 }), completion(equals(HttpStatus.NOT_FOUND))); 29 }), completion(equals(HttpStatus.NOT_FOUND)));
30 }); 30 });
31 31
32 test('dir-not-exists', () { 32 test('dir-not-exists', () {
33 expect(HttpServer.bind('localhost', 0).then((server) { 33 expect(HttpServer.bind('localhost', 0).then((server) {
34 var dir = new Directory('').createTempSync(); 34 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
35 dir.deleteSync(); 35 dir.deleteSync();
36 var virDir = new VirtualDirectory(dir.path); 36 var virDir = new VirtualDirectory(dir.path);
37 37
38 virDir.serve(server); 38 virDir.serve(server);
39 39
40 return getStatusCode(server.port, '/') 40 return getStatusCode(server.port, '/')
41 .whenComplete(() { 41 .whenComplete(() {
42 server.close(); 42 server.close();
43 }); 43 });
44 }), completion(equals(HttpStatus.NOT_FOUND))); 44 }), completion(equals(HttpStatus.NOT_FOUND)));
45 }); 45 });
46 }); 46 });
47 47
48 group('serve-file', () { 48 group('serve-file', () {
49 group('top-level', () { 49 group('top-level', () {
50 test('file-exists', () { 50 test('file-exists', () {
51 expect(HttpServer.bind('localhost', 0).then((server) { 51 expect(HttpServer.bind('localhost', 0).then((server) {
52 var dir = new Directory('').createTempSync(); 52 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
53 var file = new File('${dir.path}/file')..createSync(); 53 var file = new File('${dir.path}/file')..createSync();
54 var virDir = new VirtualDirectory(dir.path); 54 var virDir = new VirtualDirectory(dir.path);
55 55
56 virDir.serve(server); 56 virDir.serve(server);
57 57
58 return getStatusCode(server.port, '/file') 58 return getStatusCode(server.port, '/file')
59 .whenComplete(() { 59 .whenComplete(() {
60 server.close(); 60 server.close();
61 dir.deleteSync(recursive: true); 61 dir.deleteSync(recursive: true);
62 }); 62 });
63 }), completion(equals(HttpStatus.OK))); 63 }), completion(equals(HttpStatus.OK)));
64 }); 64 });
65 65
66 test('file-not-exists', () { 66 test('file-not-exists', () {
67 expect(HttpServer.bind('localhost', 0).then((server) { 67 expect(HttpServer.bind('localhost', 0).then((server) {
68 var dir = new Directory('').createTempSync(); 68 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
69 var virDir = new VirtualDirectory(dir.path); 69 var virDir = new VirtualDirectory(dir.path);
70 70
71 virDir.serve(server); 71 virDir.serve(server);
72 72
73 return getStatusCode(server.port, '/file') 73 return getStatusCode(server.port, '/file')
74 .whenComplete(() { 74 .whenComplete(() {
75 server.close(); 75 server.close();
76 dir.deleteSync(); 76 dir.deleteSync();
77 }); 77 });
78 }), completion(equals(HttpStatus.NOT_FOUND))); 78 }), completion(equals(HttpStatus.NOT_FOUND)));
79 }); 79 });
80 }); 80 });
81 81
82 group('in-dir', () { 82 group('in-dir', () {
83 test('file-exists', () { 83 test('file-exists', () {
84 expect(HttpServer.bind('localhost', 0).then((server) { 84 expect(HttpServer.bind('localhost', 0).then((server) {
85 var dir = new Directory('').createTempSync(); 85 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
86 var dir2 = new Directory('${dir.path}/dir')..createSync(); 86 var dir2 = new Directory('${dir.path}/dir')..createSync();
87 var file = new File('${dir2.path}/file')..createSync(); 87 var file = new File('${dir2.path}/file')..createSync();
88 var virDir = new VirtualDirectory(dir.path); 88 var virDir = new VirtualDirectory(dir.path);
89 89
90 virDir.serve(server); 90 virDir.serve(server);
91 91
92 return getStatusCode(server.port, '/dir/file') 92 return getStatusCode(server.port, '/dir/file')
93 .whenComplete(() { 93 .whenComplete(() {
94 server.close(); 94 server.close();
95 dir.deleteSync(recursive: true); 95 dir.deleteSync(recursive: true);
96 }); 96 });
97 }), completion(equals(HttpStatus.OK))); 97 }), completion(equals(HttpStatus.OK)));
98 }); 98 });
99 99
100 test('file-not-exists', () { 100 test('file-not-exists', () {
101 expect(HttpServer.bind('localhost', 0).then((server) { 101 expect(HttpServer.bind('localhost', 0).then((server) {
102 var dir = new Directory('').createTempSync(); 102 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
103 var dir2 = new Directory('${dir.path}/dir')..createSync(); 103 var dir2 = new Directory('${dir.path}/dir')..createSync();
104 var file = new File('${dir.path}/file')..createSync(); 104 var file = new File('${dir.path}/file')..createSync();
105 var virDir = new VirtualDirectory(dir.path); 105 var virDir = new VirtualDirectory(dir.path);
106 106
107 virDir.serve(server); 107 virDir.serve(server);
108 108
109 return getStatusCode(server.port, '/dir/file') 109 return getStatusCode(server.port, '/dir/file')
110 .whenComplete(() { 110 .whenComplete(() {
111 server.close(); 111 server.close();
112 dir.deleteSync(recursive: true); 112 dir.deleteSync(recursive: true);
113 }); 113 });
114 }), completion(equals(HttpStatus.NOT_FOUND))); 114 }), completion(equals(HttpStatus.NOT_FOUND)));
115 }); 115 });
116 }); 116 });
117 }); 117 });
118 118
119 group('serve-dir', () { 119 group('serve-dir', () {
120 group('top-level', () { 120 group('top-level', () {
121 test('simple', () { 121 test('simple', () {
122 expect(HttpServer.bind('localhost', 0).then((server) { 122 expect(HttpServer.bind('localhost', 0).then((server) {
123 var dir = new Directory('').createTempSync(); 123 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
124 var virDir = new VirtualDirectory(dir.path); 124 var virDir = new VirtualDirectory(dir.path);
125 virDir.allowDirectoryListing = true; 125 virDir.allowDirectoryListing = true;
126 126
127 virDir.serve(server); 127 virDir.serve(server);
128 128
129 return getAsString(server.port, '/') 129 return getAsString(server.port, '/')
130 .whenComplete(() { 130 .whenComplete(() {
131 server.close(); 131 server.close();
132 dir.deleteSync(); 132 dir.deleteSync();
133 }); 133 });
134 }), completion(contains('Index of /'))); 134 }), completion(contains('Index of /')));
135 }); 135 });
136 136
137 test('files', () { 137 test('files', () {
138 expect(HttpServer.bind('localhost', 0).then((server) { 138 expect(HttpServer.bind('localhost', 0).then((server) {
139 var dir = new Directory('').createTempSync(); 139 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
140 var virDir = new VirtualDirectory(dir.path); 140 var virDir = new VirtualDirectory(dir.path);
141 for (int i = 0; i < 10; i++) { 141 for (int i = 0; i < 10; i++) {
142 new File('${dir.path}/$i').createSync(); 142 new File('${dir.path}/$i').createSync();
143 } 143 }
144 virDir.allowDirectoryListing = true; 144 virDir.allowDirectoryListing = true;
145 145
146 virDir.serve(server); 146 virDir.serve(server);
147 147
148 return getAsString(server.port, '/') 148 return getAsString(server.port, '/')
149 .whenComplete(() { 149 .whenComplete(() {
150 server.close(); 150 server.close();
151 dir.deleteSync(recursive: true); 151 dir.deleteSync(recursive: true);
152 }); 152 });
153 }), completion(contains('Index of /'))); 153 }), completion(contains('Index of /')));
154 }); 154 });
155 155
156 test('dirs', () { 156 test('dirs', () {
157 expect(HttpServer.bind('localhost', 0).then((server) { 157 expect(HttpServer.bind('localhost', 0).then((server) {
158 var dir = new Directory('').createTempSync(); 158 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
159 var virDir = new VirtualDirectory(dir.path); 159 var virDir = new VirtualDirectory(dir.path);
160 for (int i = 0; i < 10; i++) { 160 for (int i = 0; i < 10; i++) {
161 new Directory('${dir.path}/$i').createSync(); 161 new Directory('${dir.path}/$i').createSync();
162 } 162 }
163 virDir.allowDirectoryListing = true; 163 virDir.allowDirectoryListing = true;
164 164
165 virDir.serve(server); 165 virDir.serve(server);
166 166
167 return getAsString(server.port, '/') 167 return getAsString(server.port, '/')
168 .whenComplete(() { 168 .whenComplete(() {
169 server.close(); 169 server.close();
170 dir.deleteSync(recursive: true); 170 dir.deleteSync(recursive: true);
171 }); 171 });
172 }), completion(contains('Index of /'))); 172 }), completion(contains('Index of /')));
173 }); 173 });
174 174
175 if (!Platform.isWindows) { 175 if (!Platform.isWindows) {
176 test('recursive-link', () { 176 test('recursive-link', () {
177 expect(HttpServer.bind('localhost', 0).then((server) { 177 expect(HttpServer.bind('localhost', 0).then((server) {
178 var dir = new Directory('').createTempSync(); 178 var dir =
179 Directory.systemTemp.createTempSync('http_server_virtual_');
179 var link = new Link('${dir.path}/recursive')..createSync('.'); 180 var link = new Link('${dir.path}/recursive')..createSync('.');
180 var virDir = new VirtualDirectory(dir.path); 181 var virDir = new VirtualDirectory(dir.path);
181 virDir.allowDirectoryListing = true; 182 virDir.allowDirectoryListing = true;
182 183
183 virDir.serve(server); 184 virDir.serve(server);
184 185
185 return Future.wait([ 186 return Future.wait([
186 getAsString(server.port, '/').then( 187 getAsString(server.port, '/').then(
187 (s) => s.contains('recursive/')), 188 (s) => s.contains('recursive/')),
188 getAsString(server.port, '/').then( 189 getAsString(server.port, '/').then(
(...skipping 11 matching lines...) Expand all
200 dir.deleteSync(recursive: true); 201 dir.deleteSync(recursive: true);
201 }); 202 });
202 }), completion(equals([true, true, true, true, true, true]))); 203 }), completion(equals([true, true, true, true, true, true])));
203 }); 204 });
204 } 205 }
205 }); 206 });
206 207
207 group('custom', () { 208 group('custom', () {
208 test('simple', () { 209 test('simple', () {
209 expect(HttpServer.bind('localhost', 0).then((server) { 210 expect(HttpServer.bind('localhost', 0).then((server) {
210 var dir = new Directory('').createTempSync(); 211 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
211 var virDir = new VirtualDirectory(dir.path); 212 var virDir = new VirtualDirectory(dir.path);
212 virDir.allowDirectoryListing = true; 213 virDir.allowDirectoryListing = true;
213 virDir.setDirectoryHandler((dir2, request) { 214 virDir.setDirectoryHandler((dir2, request) {
214 expect(dir2, isNotNull); 215 expect(dir2, isNotNull);
215 expect(FileSystemEntity.identicalSync(dir.path, dir2.path), isTrue); 216 expect(FileSystemEntity.identicalSync(dir.path, dir2.path), isTrue);
216 request.response.write('My handler ${request.uri.path}'); 217 request.response.write('My handler ${request.uri.path}');
217 request.response.close(); 218 request.response.close();
218 }); 219 });
219 220
220 virDir.serve(server); 221 virDir.serve(server);
221 222
222 return getAsString(server.port, '/') 223 return getAsString(server.port, '/')
223 .whenComplete(() { 224 .whenComplete(() {
224 server.close(); 225 server.close();
225 dir.deleteSync(); 226 dir.deleteSync();
226 }); 227 });
227 }), completion(contains('My handler /'))); 228 }), completion(contains('My handler /')));
228 }); 229 });
229 }); 230 });
230 }); 231 });
231 232
232 group('links', () { 233 group('links', () {
233 if (!Platform.isWindows) { 234 if (!Platform.isWindows) {
234 group('follow-links', () { 235 group('follow-links', () {
235 test('dir-link', () { 236 test('dir-link', () {
236 expect(HttpServer.bind('localhost', 0).then((server) { 237 expect(HttpServer.bind('localhost', 0).then((server) {
237 var dir = new Directory('').createTempSync(); 238 var dir =
239 Directory.systemTemp.createTempSync('http_server_virtual_');
238 var dir2 = new Directory('${dir.path}/dir2')..createSync(); 240 var dir2 = new Directory('${dir.path}/dir2')..createSync();
239 var link = new Link('${dir.path}/dir3')..createSync('dir2'); 241 var link = new Link('${dir.path}/dir3')..createSync('dir2');
240 var file = new File('${dir2.path}/file')..createSync(); 242 var file = new File('${dir2.path}/file')..createSync();
241 var virDir = new VirtualDirectory(dir.path); 243 var virDir = new VirtualDirectory(dir.path);
242 virDir.followLinks = true; 244 virDir.followLinks = true;
243 245
244 virDir.serve(server); 246 virDir.serve(server);
245 247
246 return getStatusCode(server.port, '/dir3/file') 248 return getStatusCode(server.port, '/dir3/file')
247 .whenComplete(() { 249 .whenComplete(() {
248 server.close(); 250 server.close();
249 dir.deleteSync(recursive: true); 251 dir.deleteSync(recursive: true);
250 }); 252 });
251 }), completion(equals(HttpStatus.OK))); 253 }), completion(equals(HttpStatus.OK)));
252 }); 254 });
253 255
254 test('root-link', () { 256 test('root-link', () {
255 expect(HttpServer.bind('localhost', 0).then((server) { 257 expect(HttpServer.bind('localhost', 0).then((server) {
256 var dir = new Directory('').createTempSync(); 258 var dir =
259 Directory.systemTemp.createTempSync('http_server_virtual_');
257 var link = new Link('${dir.path}/dir3')..createSync('.'); 260 var link = new Link('${dir.path}/dir3')..createSync('.');
258 var file = new File('${dir.path}/file')..createSync(); 261 var file = new File('${dir.path}/file')..createSync();
259 var virDir = new VirtualDirectory(dir.path); 262 var virDir = new VirtualDirectory(dir.path);
260 virDir.followLinks = true; 263 virDir.followLinks = true;
261 264
262 virDir.serve(server); 265 virDir.serve(server);
263 266
264 return getStatusCode(server.port, '/dir3/file') 267 return getStatusCode(server.port, '/dir3/file')
265 .whenComplete(() { 268 .whenComplete(() {
266 server.close(); 269 server.close();
267 dir.deleteSync(recursive: true); 270 dir.deleteSync(recursive: true);
268 }); 271 });
269 }), completion(equals(HttpStatus.OK))); 272 }), completion(equals(HttpStatus.OK)));
270 }); 273 });
271 274
272 group('bad-links', () { 275 group('bad-links', () {
273 test('absolute-link', () { 276 test('absolute-link', () {
274 expect(HttpServer.bind('localhost', 0).then((server) { 277 expect(HttpServer.bind('localhost', 0).then((server) {
275 var dir = new Directory('').createTempSync(); 278 var dir =
279 Directory.systemTemp.createTempSync('http_server_virtual_');
276 var file = new File('${dir.path}/file')..createSync(); 280 var file = new File('${dir.path}/file')..createSync();
277 var link = new Link('${dir.path}/dir3') 281 var link = new Link('${dir.path}/dir3')
278 ..createSync('${dir.path}/file'); 282 ..createSync('${dir.path}/file');
279 var virDir = new VirtualDirectory(dir.path); 283 var virDir = new VirtualDirectory(dir.path);
280 virDir.followLinks = true; 284 virDir.followLinks = true;
281 285
282 virDir.serve(server); 286 virDir.serve(server);
283 287
284 return new HttpClient().get('localhost', 288 return new HttpClient().get('localhost',
285 server.port, 289 server.port,
286 '/dir3/file') 290 '/dir3/file')
287 .then((request) => request.close()) 291 .then((request) => request.close())
288 .then((response) => response.drain().then( 292 .then((response) => response.drain().then(
289 (_) => response.statusCode)) 293 (_) => response.statusCode))
290 .whenComplete(() { 294 .whenComplete(() {
291 server.close(); 295 server.close();
292 dir.deleteSync(recursive: true); 296 dir.deleteSync(recursive: true);
293 }); 297 });
294 }), completion(equals(HttpStatus.NOT_FOUND))); 298 }), completion(equals(HttpStatus.NOT_FOUND)));
295 }); 299 });
296 300
297 test('relative-parent-link', () { 301 test('relative-parent-link', () {
298 expect(HttpServer.bind('localhost', 0).then((server) { 302 expect(HttpServer.bind('localhost', 0).then((server) {
299 var dir = new Directory('').createTempSync(); 303 var dir =
304 Directory.systemTemp.createTempSync('http_server_virtual_');
300 var name = basename(dir.path); 305 var name = basename(dir.path);
301 var file = new File('${dir.path}/file')..createSync(); 306 var file = new File('${dir.path}/file')..createSync();
302 var link = new Link('${dir.path}/dir3') 307 var link = new Link('${dir.path}/dir3')
303 ..createSync('../$name/file'); 308 ..createSync('../$name/file');
304 var virDir = new VirtualDirectory(dir.path); 309 var virDir = new VirtualDirectory(dir.path);
305 virDir.followLinks = true; 310 virDir.followLinks = true;
306 311
307 virDir.serve(server); 312 virDir.serve(server);
308 313
309 return new HttpClient().get('localhost', 314 return new HttpClient().get('localhost',
310 server.port, 315 server.port,
311 '/dir3/file') 316 '/dir3/file')
312 .then((request) => request.close()) 317 .then((request) => request.close())
313 .then((response) => response.drain().then( 318 .then((response) => response.drain().then(
314 (_) => response.statusCode)) 319 (_) => response.statusCode))
315 .whenComplete(() { 320 .whenComplete(() {
316 server.close(); 321 server.close();
317 dir.deleteSync(recursive: true); 322 dir.deleteSync(recursive: true);
318 }); 323 });
319 }), completion(equals(HttpStatus.NOT_FOUND))); 324 }), completion(equals(HttpStatus.NOT_FOUND)));
320 }); 325 });
321 }); 326 });
322 }); 327 });
323 328
324 group('not-follow-links', () { 329 group('not-follow-links', () {
325 test('dir-link', () { 330 test('dir-link', () {
326 expect(HttpServer.bind('localhost', 0).then((server) { 331 expect(HttpServer.bind('localhost', 0).then((server) {
327 var dir = new Directory('').createTempSync(); 332 var dir =
333 Directory.systemTemp.createTempSync('http_server_virtual_');
328 var dir2 = new Directory('${dir.path}/dir2')..createSync(); 334 var dir2 = new Directory('${dir.path}/dir2')..createSync();
329 var link = new Link('${dir.path}/dir3')..createSync('dir2'); 335 var link = new Link('${dir.path}/dir3')..createSync('dir2');
330 var file = new File('${dir2.path}/file')..createSync(); 336 var file = new File('${dir2.path}/file')..createSync();
331 var virDir = new VirtualDirectory(dir.path); 337 var virDir = new VirtualDirectory(dir.path);
332 virDir.followLinks = false; 338 virDir.followLinks = false;
333 339
334 virDir.serve(server); 340 virDir.serve(server);
335 341
336 return getStatusCode(server.port, '/dir3/file') 342 return getStatusCode(server.port, '/dir3/file')
337 .whenComplete(() { 343 .whenComplete(() {
338 server.close(); 344 server.close();
339 dir.deleteSync(recursive: true); 345 dir.deleteSync(recursive: true);
340 }); 346 });
341 }), completion(equals(HttpStatus.NOT_FOUND))); 347 }), completion(equals(HttpStatus.NOT_FOUND)));
342 }); 348 });
343 }); 349 });
344 } 350 }
345 }); 351 });
346 352
347 group('last-modified', () { 353 group('last-modified', () {
348 group('file', () { 354 group('file', () {
349 test('file-exists', () { 355 test('file-exists', () {
350 expect(HttpServer.bind('localhost', 0).then((server) { 356 expect(HttpServer.bind('localhost', 0).then((server) {
351 var dir = new Directory('').createTempSync(); 357 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
352 var file = new File('${dir.path}/file')..createSync(); 358 var file = new File('${dir.path}/file')..createSync();
353 var virDir = new VirtualDirectory(dir.path); 359 var virDir = new VirtualDirectory(dir.path);
354 360
355 virDir.serve(server); 361 virDir.serve(server);
356 362
357 return getHeaders(server.port, '/file') 363 return getHeaders(server.port, '/file')
358 .then((headers) { 364 .then((headers) {
359 expect(headers.value(HttpHeaders.LAST_MODIFIED), isNotNull); 365 expect(headers.value(HttpHeaders.LAST_MODIFIED), isNotNull);
360 return HttpDate.parse( 366 return HttpDate.parse(
361 headers.value(HttpHeaders.LAST_MODIFIED)); 367 headers.value(HttpHeaders.LAST_MODIFIED));
362 }) 368 })
363 .then((lastModified) { 369 .then((lastModified) {
364 return getStatusCode( 370 return getStatusCode(
365 server.port, '/file', ifModifiedSince: lastModified); 371 server.port, '/file', ifModifiedSince: lastModified);
366 }) 372 })
367 .whenComplete(() { 373 .whenComplete(() {
368 server.close(); 374 server.close();
369 dir.deleteSync(recursive: true); 375 dir.deleteSync(recursive: true);
370 }); 376 });
371 }), completion(equals(HttpStatus.NOT_MODIFIED))); 377 }), completion(equals(HttpStatus.NOT_MODIFIED)));
372 }); 378 });
373 379
374 test('file-changes', () { 380 test('file-changes', () {
375 expect(HttpServer.bind('localhost', 0).then((server) { 381 expect(HttpServer.bind('localhost', 0).then((server) {
376 var dir = new Directory('').createTempSync(); 382 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
377 var file = new File('${dir.path}/file')..createSync(); 383 var file = new File('${dir.path}/file')..createSync();
378 var virDir = new VirtualDirectory(dir.path); 384 var virDir = new VirtualDirectory(dir.path);
379 385
380 virDir.serve(server); 386 virDir.serve(server);
381 387
382 return getHeaders(server.port, '/file') 388 return getHeaders(server.port, '/file')
383 .then((headers) { 389 .then((headers) {
384 expect(headers.value(HttpHeaders.LAST_MODIFIED), isNotNull); 390 expect(headers.value(HttpHeaders.LAST_MODIFIED), isNotNull);
385 return HttpDate.parse( 391 return HttpDate.parse(
386 headers.value(HttpHeaders.LAST_MODIFIED)); 392 headers.value(HttpHeaders.LAST_MODIFIED));
(...skipping 11 matching lines...) Expand all
398 }); 404 });
399 }), completion(equals(HttpStatus.OK))); 405 }), completion(equals(HttpStatus.OK)));
400 }); 406 });
401 }); 407 });
402 }); 408 });
403 409
404 group('content-type', () { 410 group('content-type', () {
405 group('mime-type', () { 411 group('mime-type', () {
406 test('from-path', () { 412 test('from-path', () {
407 expect(HttpServer.bind('localhost', 0).then((server) { 413 expect(HttpServer.bind('localhost', 0).then((server) {
408 var dir = new Directory('').createTempSync(); 414 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
409 var file = new File('${dir.path}/file.jpg')..createSync(); 415 var file = new File('${dir.path}/file.jpg')..createSync();
410 var virDir = new VirtualDirectory(dir.path); 416 var virDir = new VirtualDirectory(dir.path);
411 417
412 virDir.serve(server); 418 virDir.serve(server);
413 419
414 return getHeaders(server.port, '/file.jpg') 420 return getHeaders(server.port, '/file.jpg')
415 .then((headers) => headers.contentType.toString()) 421 .then((headers) => headers.contentType.toString())
416 .whenComplete(() { 422 .whenComplete(() {
417 server.close(); 423 server.close();
418 dir.deleteSync(recursive: true); 424 dir.deleteSync(recursive: true);
419 }); 425 });
420 }), completion(equals('image/jpeg'))); 426 }), completion(equals('image/jpeg')));
421 }); 427 });
422 428
423 test('from-magic-number', () { 429 test('from-magic-number', () {
424 expect(HttpServer.bind('localhost', 0).then((server) { 430 expect(HttpServer.bind('localhost', 0).then((server) {
425 var dir = new Directory('').createTempSync(); 431 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
426 var file = new File('${dir.path}/file.jpg')..createSync(); 432 var file = new File('${dir.path}/file.jpg')..createSync();
427 file.writeAsBytesSync( 433 file.writeAsBytesSync(
428 [0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A]); 434 [0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A]);
429 var virDir = new VirtualDirectory(dir.path); 435 var virDir = new VirtualDirectory(dir.path);
430 436
431 virDir.serve(server); 437 virDir.serve(server);
432 438
433 return getHeaders(server.port, '/file.jpg') 439 return getHeaders(server.port, '/file.jpg')
434 .then((headers) => headers.contentType.toString()) 440 .then((headers) => headers.contentType.toString())
435 .whenComplete(() { 441 .whenComplete(() {
436 server.close(); 442 server.close();
437 dir.deleteSync(recursive: true); 443 dir.deleteSync(recursive: true);
438 }); 444 });
439 }), completion(equals('image/png'))); 445 }), completion(equals('image/png')));
440 }); 446 });
441 }); 447 });
442 }); 448 });
443 449
444 group('error-page', () { 450 group('error-page', () {
445 test('default', () { 451 test('default', () {
446 expect(HttpServer.bind('localhost', 0).then((server) { 452 expect(HttpServer.bind('localhost', 0).then((server) {
447 var dir = new Directory('').createTempSync(); 453 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
448 var virDir = new VirtualDirectory(dir.path); 454 var virDir = new VirtualDirectory(dir.path);
449 dir.deleteSync(); 455 dir.deleteSync();
450 456
451 virDir.serve(server); 457 virDir.serve(server);
452 458
453 return getAsString(server.port, '/') 459 return getAsString(server.port, '/')
454 .whenComplete(() { 460 .whenComplete(() {
455 server.close(); 461 server.close();
456 }); 462 });
457 }), completion(matches(new RegExp('404.*Not Found')))); 463 }), completion(matches(new RegExp('404.*Not Found'))));
458 }); 464 });
459 465
460 test('custom', () { 466 test('custom', () {
461 expect(HttpServer.bind('localhost', 0).then((server) { 467 expect(HttpServer.bind('localhost', 0).then((server) {
462 var dir = new Directory('').createTempSync(); 468 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
463 var virDir = new VirtualDirectory(dir.path); 469 var virDir = new VirtualDirectory(dir.path);
464 dir.deleteSync(); 470 dir.deleteSync();
465 471
466 virDir.setErrorPageHandler((request) { 472 virDir.setErrorPageHandler((request) {
467 request.response.write('my-page '); 473 request.response.write('my-page ');
468 request.response.write(request.response.statusCode); 474 request.response.write(request.response.statusCode);
469 request.response.close(); 475 request.response.close();
470 }); 476 });
471 virDir.serve(server); 477 virDir.serve(server);
472 478
473 return getAsString(server.port, '/') 479 return getAsString(server.port, '/')
474 .whenComplete(() { 480 .whenComplete(() {
475 server.close(); 481 server.close();
476 }); 482 });
477 }), completion(equals('my-page 404'))); 483 }), completion(equals('my-page 404')));
478 }); 484 });
479 }); 485 });
480 486
481 group('escape-root', () { 487 group('escape-root', () {
482 test('escape1', () { 488 test('escape1', () {
483 expect(HttpServer.bind('localhost', 0).then((server) { 489 expect(HttpServer.bind('localhost', 0).then((server) {
484 var dir = new Directory('').createTempSync(); 490 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
485 var virDir = new VirtualDirectory(dir.path); 491 var virDir = new VirtualDirectory(dir.path);
486 virDir.allowDirectoryListing = true; 492 virDir.allowDirectoryListing = true;
487 493
488 virDir.serve(server); 494 virDir.serve(server);
489 495
490 return getStatusCode(server.port, '/../') 496 return getStatusCode(server.port, '/../')
491 .whenComplete(() { 497 .whenComplete(() {
492 server.close(); 498 server.close();
493 dir.deleteSync(); 499 dir.deleteSync();
494 }); 500 });
495 }), completion(equals(HttpStatus.NOT_FOUND))); 501 }), completion(equals(HttpStatus.NOT_FOUND)));
496 }); 502 });
497 503
498 test('escape2', () { 504 test('escape2', () {
499 expect(HttpServer.bind('localhost', 0).then((server) { 505 expect(HttpServer.bind('localhost', 0).then((server) {
500 var dir = new Directory('').createTempSync(); 506 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
501 new Directory('${dir.path}/dir').createSync(); 507 new Directory('${dir.path}/dir').createSync();
502 var virDir = new VirtualDirectory(dir.path); 508 var virDir = new VirtualDirectory(dir.path);
503 virDir.allowDirectoryListing = true; 509 virDir.allowDirectoryListing = true;
504 510
505 virDir.serve(server); 511 virDir.serve(server);
506 512
507 return getStatusCode(server.port, '/dir/../../') 513 return getStatusCode(server.port, '/dir/../../')
508 .whenComplete(() { 514 .whenComplete(() {
509 server.close(); 515 server.close();
510 dir.deleteSync(recursive: true); 516 dir.deleteSync(recursive: true);
511 }); 517 });
512 }), completion(equals(HttpStatus.NOT_FOUND))); 518 }), completion(equals(HttpStatus.NOT_FOUND)));
513 }); 519 });
514 }); 520 });
515 521
516 group('url-decode', () { 522 group('url-decode', () {
517 test('with-space', () { 523 test('with-space', () {
518 expect(HttpServer.bind('localhost', 0).then((server) { 524 expect(HttpServer.bind('localhost', 0).then((server) {
519 var dir = new Directory('').createTempSync(); 525 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
520 var file = new File('${dir.path}/my file')..createSync(); 526 var file = new File('${dir.path}/my file')..createSync();
521 var virDir = new VirtualDirectory(dir.path); 527 var virDir = new VirtualDirectory(dir.path);
522 528
523 virDir.serve(server); 529 virDir.serve(server);
524 530
525 return getStatusCode(server.port, '/my file') 531 return getStatusCode(server.port, '/my file')
526 .whenComplete(() { 532 .whenComplete(() {
527 server.close(); 533 server.close();
528 dir.deleteSync(recursive: true); 534 dir.deleteSync(recursive: true);
529 }); 535 });
530 }), completion(equals(HttpStatus.OK))); 536 }), completion(equals(HttpStatus.OK)));
531 }); 537 });
532 538
533 test('encoded-space', () { 539 test('encoded-space', () {
534 expect(HttpServer.bind('localhost', 0).then((server) { 540 expect(HttpServer.bind('localhost', 0).then((server) {
535 var dir = new Directory('').createTempSync(); 541 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
536 var file = new File('${dir.path}/my file')..createSync(); 542 var file = new File('${dir.path}/my file')..createSync();
537 var virDir = new VirtualDirectory(dir.path); 543 var virDir = new VirtualDirectory(dir.path);
538 544
539 virDir.serve(server); 545 virDir.serve(server);
540 546
541 return getStatusCode(server.port, '/my%20file') 547 return getStatusCode(server.port, '/my%20file')
542 .whenComplete(() { 548 .whenComplete(() {
543 server.close(); 549 server.close();
544 dir.deleteSync(recursive: true); 550 dir.deleteSync(recursive: true);
545 }); 551 });
546 }), completion(equals(HttpStatus.NOT_FOUND))); 552 }), completion(equals(HttpStatus.NOT_FOUND)));
547 }); 553 });
548 554
549 test('encoded-path-separator', () { 555 test('encoded-path-separator', () {
550 expect(HttpServer.bind('localhost', 0).then((server) { 556 expect(HttpServer.bind('localhost', 0).then((server) {
551 var dir = new Directory('').createTempSync(); 557 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
552 new Directory('${dir.path}/a').createSync(); 558 new Directory('${dir.path}/a').createSync();
553 new Directory('${dir.path}/a/b').createSync(); 559 new Directory('${dir.path}/a/b').createSync();
554 new Directory('${dir.path}/a/b/c').createSync(); 560 new Directory('${dir.path}/a/b/c').createSync();
555 var virDir = new VirtualDirectory(dir.path); 561 var virDir = new VirtualDirectory(dir.path);
556 virDir.allowDirectoryListing = true; 562 virDir.allowDirectoryListing = true;
557 563
558 virDir.serve(server); 564 virDir.serve(server);
559 565
560 return getStatusCode(server.port, '/a%2fb/c', rawPath: true) 566 return getStatusCode(server.port, '/a%2fb/c', rawPath: true)
561 .whenComplete(() { 567 .whenComplete(() {
562 server.close(); 568 server.close();
563 dir.deleteSync(recursive: true); 569 dir.deleteSync(recursive: true);
564 }); 570 });
565 }), completion(equals(HttpStatus.NOT_FOUND))); 571 }), completion(equals(HttpStatus.NOT_FOUND)));
566 }); 572 });
567 573
568 test('encoded-null', () { 574 test('encoded-null', () {
569 expect(HttpServer.bind('localhost', 0).then((server) { 575 expect(HttpServer.bind('localhost', 0).then((server) {
570 var dir = new Directory('').createTempSync(); 576 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
571 var virDir = new VirtualDirectory(dir.path); 577 var virDir = new VirtualDirectory(dir.path);
572 virDir.allowDirectoryListing = true; 578 virDir.allowDirectoryListing = true;
573 579
574 virDir.serve(server); 580 virDir.serve(server);
575 581
576 return getStatusCode(server.port, '/%00', rawPath: true) 582 return getStatusCode(server.port, '/%00', rawPath: true)
577 .whenComplete(() { 583 .whenComplete(() {
578 server.close(); 584 server.close();
579 dir.deleteSync(recursive: true); 585 dir.deleteSync(recursive: true);
580 }); 586 });
581 }), completion(equals(HttpStatus.NOT_FOUND))); 587 }), completion(equals(HttpStatus.NOT_FOUND)));
582 }); 588 });
583 589
584 testEncoding(name, expected, [bool create = true]) { 590 testEncoding(name, expected, [bool create = true]) {
585 test('encode-$name', () { 591 test('encode-$name', () {
586 expect(HttpServer.bind('localhost', 0).then((server) { 592 expect(HttpServer.bind('localhost', 0).then((server) {
587 var dir = new Directory('').createTempSync(); 593 var dir = Directory.systemTemp.createTempSync('http_server_virtual_');
588 if (create) new File('${dir.path}/$name').createSync(); 594 if (create) new File('${dir.path}/$name').createSync();
589 var virDir = new VirtualDirectory(dir.path); 595 var virDir = new VirtualDirectory(dir.path);
590 virDir.allowDirectoryListing = true; 596 virDir.allowDirectoryListing = true;
591 597
592 virDir.serve(server); 598 virDir.serve(server);
593 599
594 return getStatusCode(server.port, '/$name') 600 return getStatusCode(server.port, '/$name')
595 .whenComplete(() { 601 .whenComplete(() {
596 server.close(); 602 server.close();
597 dir.deleteSync(recursive: true); 603 dir.deleteSync(recursive: true);
598 }); 604 });
599 }), completion(equals(expected))); 605 }), completion(equals(expected)));
600 }); 606 });
601 } 607 }
602 testEncoding('..', HttpStatus.NOT_FOUND, false); 608 testEncoding('..', HttpStatus.NOT_FOUND, false);
603 testEncoding('%2e%2e', HttpStatus.OK); 609 testEncoding('%2e%2e', HttpStatus.OK);
604 testEncoding('%252e%252e', HttpStatus.OK); 610 testEncoding('%252e%252e', HttpStatus.OK);
605 testEncoding('/', HttpStatus.OK, false); 611 testEncoding('/', HttpStatus.OK, false);
606 testEncoding('%2f', HttpStatus.NOT_FOUND, false); 612 testEncoding('%2f', HttpStatus.NOT_FOUND, false);
607 testEncoding('%2f', HttpStatus.OK, true); 613 testEncoding('%2f', HttpStatus.OK, true);
608 }); 614 });
609 } 615 }
610 616
OLDNEW
« no previous file with comments | « pkg/http/test/multipart_test.dart ('k') | pkg/scheduled_test/lib/descriptor.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698