OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| 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. |
| 4 |
| 5 import 'dart:io'; |
| 6 |
| 7 import 'package:package_resolver/package_resolver.dart'; |
| 8 import 'package:path/path.dart' as p; |
| 9 import 'package:shelf/shelf.dart'; |
| 10 import 'package:shelf_packages_handler/shelf_packages_handler.dart'; |
| 11 import 'package:test/test.dart'; |
| 12 |
| 13 void main() { |
| 14 var dir; |
| 15 setUp(() { |
| 16 dir = Directory.systemTemp |
| 17 .createTempSync("shelf_packages_handler_test") |
| 18 .path; |
| 19 new Directory(dir).createSync(); |
| 20 new Directory("$dir/foo").createSync(); |
| 21 new File("$dir/foo/foo.dart") |
| 22 .writeAsStringSync("void main() => print('in foo');"); |
| 23 }); |
| 24 |
| 25 tearDown(() { |
| 26 new Directory(dir).deleteSync(recursive: true); |
| 27 }); |
| 28 |
| 29 group("packagesHandler", () { |
| 30 test("defaults to the current method of package resolution", () async { |
| 31 var handler = packagesHandler(); |
| 32 var request = new Request( |
| 33 "GET", |
| 34 Uri.parse( |
| 35 "http://example.com/shelf_packages_handler/" |
| 36 "shelf_packages_handler.dart")); |
| 37 var response = await handler(request); |
| 38 expect(response.statusCode, equals(200)); |
| 39 expect(await response.readAsString(), |
| 40 contains("Handler packagesHandler")); |
| 41 }); |
| 42 |
| 43 group("with a package root", () { |
| 44 var resolver; |
| 45 setUp(() => resolver = new PackageResolver.root(p.toUri(dir))); |
| 46 |
| 47 test("looks up a real file", () async { |
| 48 var handler = packagesHandler(resolver: resolver); |
| 49 var request = new Request( |
| 50 "GET", Uri.parse("http://example.com/foo/foo.dart")); |
| 51 var response = await handler(request); |
| 52 expect(response.statusCode, equals(200)); |
| 53 expect(await response.readAsString(), contains("in foo")); |
| 54 }); |
| 55 |
| 56 test("404s for a nonexistent file", () async { |
| 57 var handler = packagesHandler(resolver: resolver); |
| 58 var request = new Request( |
| 59 "GET", Uri.parse("http://example.com/foo/bar.dart")); |
| 60 var response = await handler(request); |
| 61 expect(response.statusCode, equals(404)); |
| 62 }); |
| 63 }); |
| 64 |
| 65 group("with a package config", () { |
| 66 var resolver; |
| 67 setUp(() { |
| 68 resolver = new PackageResolver.config({"foo": p.toUri("$dir/foo")}); |
| 69 }); |
| 70 |
| 71 test("looks up a real file", () async { |
| 72 var handler = packagesHandler(resolver: resolver); |
| 73 var request = new Request( |
| 74 "GET", Uri.parse("http://example.com/foo/foo.dart")); |
| 75 var response = await handler(request); |
| 76 expect(response.statusCode, equals(200)); |
| 77 expect(await response.readAsString(), contains("in foo")); |
| 78 }); |
| 79 |
| 80 test("404s for a nonexistent package", () async { |
| 81 var handler = packagesHandler(resolver: resolver); |
| 82 var request = new Request( |
| 83 "GET", Uri.parse("http://example.com/bar/foo.dart")); |
| 84 var response = await handler(request); |
| 85 expect(response.statusCode, equals(404)); |
| 86 }); |
| 87 |
| 88 test("404s for a nonexistent file", () async { |
| 89 var handler = packagesHandler(resolver: resolver); |
| 90 var request = new Request( |
| 91 "GET", Uri.parse("http://example.com/foo/bar.dart")); |
| 92 var response = await handler(request); |
| 93 expect(response.statusCode, equals(404)); |
| 94 }); |
| 95 }); |
| 96 }); |
| 97 |
| 98 group("packagesDirHandler", () { |
| 99 test("supports a directory at the root of the URL", () async { |
| 100 var handler = packagesDirHandler(); |
| 101 var request = new Request( |
| 102 "GET", |
| 103 Uri.parse( |
| 104 "http://example.com/packages/shelf_packages_handler/" |
| 105 "shelf_packages_handler.dart")); |
| 106 var response = await handler(request); |
| 107 expect(response.statusCode, equals(200)); |
| 108 expect(await response.readAsString(), |
| 109 contains("Handler packagesHandler")); |
| 110 }); |
| 111 |
| 112 test("supports a directory deep in the URL", () async { |
| 113 var handler = packagesDirHandler(); |
| 114 var request = new Request( |
| 115 "GET", |
| 116 Uri.parse( |
| 117 "http://example.com/foo/bar/very/deep/packages/" |
| 118 "shelf_packages_handler/shelf_packages_handler.dart")); |
| 119 var response = await handler(request); |
| 120 expect(response.statusCode, equals(200)); |
| 121 expect(await response.readAsString(), |
| 122 contains("Handler packagesHandler")); |
| 123 }); |
| 124 |
| 125 test("404s for a URL without a packages directory", () async { |
| 126 var handler = packagesDirHandler(); |
| 127 var request = new Request( |
| 128 "GET", |
| 129 Uri.parse( |
| 130 "http://example.com/shelf_packages_handler/" |
| 131 "shelf_packages_handler.dart")); |
| 132 var response = await handler(request); |
| 133 expect(response.statusCode, equals(404)); |
| 134 }); |
| 135 |
| 136 test("404s for a non-existent file within a packages directory", () async { |
| 137 var handler = packagesDirHandler(); |
| 138 var request = new Request( |
| 139 "GET", |
| 140 Uri.parse( |
| 141 "http://example.com/packages/shelf_packages_handler/" |
| 142 "non_existent.dart")); |
| 143 var response = await handler(request); |
| 144 expect(response.statusCode, equals(404)); |
| 145 }); |
| 146 }); |
| 147 } |
OLD | NEW |