tag | b2befb7e5e56501e63b887ffa775c16cc3b78e8f | |
---|---|---|
tagger | Natalie Weizenbaum <nweiz@google.com> | Wed Jun 07 16:59:06 2017 -0700 |
object | 1c352a06539db8ba396b4fab6c5ee36bfd7c07f1 |
Initial stable release.
commit | 1c352a06539db8ba396b4fab6c5ee36bfd7c07f1 | [log] [tgz] |
---|---|---|
author | Natalie Weizenbaum <nweiz@google.com> | Wed Jun 07 16:51:33 2017 -0700 |
committer | GitHub <noreply@github.com> | Wed Jun 07 16:51:33 2017 -0700 |
tree | 311d62b179c875a0662db24be5776b86f97c44b2 | |
parent | 29700cdf8a021db376993504a02e639bd284ba56 [diff] |
Release a stable version. (#2)
A shelf handler that makes it easy to test HTTP interactions, especially when multiple different HTTP requests are expected in a particular sequence.
You can construct a ShelfTestHandler directly, but most users will probably want to use the ShelfTestServer instead. This wraps the handler in a simple HTTP server, whose URL can be passed to client code.
import 'package:shelf/shelf.dart' as shelf; import 'package:shelf_test_handler/shelf_test_handler.dart'; import 'package:test/test.dart'; import 'package:my_package/my_package.dart'; void main() { test("client performs protocol handshake", () async { // This is just a utility class that starts a server for a ShelfTestHandler. var server = new ShelfTestServer(); // Asserts that the client will make a GET request to /token. server.handler.expect("GET", "/token", (request) async { // This handles the GET /token request. var body = JSON.parse(await request.readAsString()); // Any failures in this handler will cause the test to fail, so it's safe // to make assertions. expect(body, containsPair("id", "my_package_id")); expect(body, containsPair("secret", "123abc")); return new shelf.Response.ok(JSON.encode({"token": "a1b2c3"}), headers: {"content-type": "application/json"}); }); // Requests made against `server.url` will be handled by the handlers we // declare. var myPackage = new MyPackage(server.url); // If the client makes any unexpected requests, the test will fail. await myPackage.performHandshake(); }); }