@@ -162,6 +162,57 @@ void main() {
162
162
expect (await response.readAsString (), 'content' );
163
163
});
164
164
165
+ test ('serves package files for /packages/<package name>' , () async {
166
+ addSource ('a|lib/a.html' , 'content' );
167
+ var response = await serveHandler.handlerFor ('web' )(
168
+ Request ('GET' , Uri .parse ('http://server.com/packages/a/a.html' )),
169
+ );
170
+ expect (await response.readAsString (), 'content' );
171
+ });
172
+
173
+ test ('serves packages for /anywhere/packages/<package name>' , () async {
174
+ addSource ('a|lib/a.html' , 'content' );
175
+ var response = await serveHandler.handlerFor ('web' )(
176
+ Request ('GET' , Uri .parse ('http://server.com/anywhere/packages/a/a.html' )),
177
+ );
178
+ expect (await response.readAsString (), 'content' );
179
+ });
180
+
181
+ test ('servers actual files before from packages for /packages/...' , () async {
182
+ // Match in `web` takes precedence over match in packages.
183
+ addSource ('a|lib/a.html' , 'package_content' );
184
+ addSource ('a|web/packages/a/a.html' , 'web_content' );
185
+ var responseA = await serveHandler.handlerFor ('web' )(
186
+ Request ('GET' , Uri .parse ('http://server.com/packages/a/a.html' )),
187
+ );
188
+ expect (await responseA.readAsString (), 'web_content' );
189
+
190
+ // Fall back to match in packages.
191
+ addSource ('b|lib/b.html' , 'package_content' );
192
+ var responseB = await serveHandler.handlerFor ('web' )(
193
+ Request ('GET' , Uri .parse ('http://server.com/packages/b/b.html' )),
194
+ );
195
+ expect (await responseB.readAsString (), 'package_content' );
196
+ });
197
+
198
+ test (
199
+ 'serves index.html for actual folder called packages from /packages/`' ,
200
+ () async {
201
+ addSource ('a|web/packages/index.html' , 'content' );
202
+ var response = await serveHandler.handlerFor ('web' )(
203
+ Request ('GET' , Uri .parse ('http://server.com/packages/' )),
204
+ );
205
+ expect (await response.readAsString (), 'content' );
206
+ },
207
+ );
208
+
209
+ test ('serves nothing from /packages/` if missing' , () async {
210
+ var response = await serveHandler.handlerFor ('web' )(
211
+ Request ('GET' , Uri .parse ('http://server.com/packages/' )),
212
+ );
213
+ expect (response.statusCode, HttpStatus .notFound);
214
+ });
215
+
165
216
test ('caching with etags works' , () async {
166
217
addSource ('a|web/index.html' , 'content' );
167
218
var handler = serveHandler.handlerFor ('web' );
0 commit comments