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

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

Issue 17582007: Add support for following links, in VirtualDirectory. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 6 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
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: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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698