| Index: test/web_socket_test.dart
|
| diff --git a/test/web_socket_test.dart b/test/web_socket_test.dart
|
| index 95743d65bdfb950e14196407b509d73292675f4d..b061c04f57e834def80833666ac6ffc0acf069fe 100644
|
| --- a/test/web_socket_test.dart
|
| +++ b/test/web_socket_test.dart
|
| @@ -17,59 +17,62 @@ Map<String, String> get _handshakeHeaders => {
|
| };
|
|
|
| void main() {
|
| - test("can communicate with a dart:io WebSocket client", () {
|
| - return shelf_io.serve(webSocketHandler((webSocket) {
|
| - webSocket.add("hello!");
|
| - webSocket.first.then((request) {
|
| + test("can communicate with a dart:io WebSocket client", () async {
|
| + var server = await shelf_io.serve(webSocketHandler((webSocket) {
|
| + webSocket.sink.add("hello!");
|
| + webSocket.stream.first.then((request) {
|
| expect(request, equals("ping"));
|
| - webSocket.add("pong");
|
| - webSocket.close();
|
| + webSocket.sink.add("pong");
|
| + webSocket.sink.close();
|
| });
|
| - }), "localhost", 0).then((server) {
|
| - return WebSocket.connect('ws://localhost:${server.port}')
|
| - .then((webSocket) {
|
| - var n = 0;
|
| - return webSocket.listen((message) {
|
| - if (n == 0) {
|
| - expect(message, equals("hello!"));
|
| - webSocket.add("ping");
|
| - } else if (n == 1) {
|
| - expect(message, equals("pong"));
|
| - webSocket.close();
|
| - server.close();
|
| - } else {
|
| - fail("Only expected two messages.");
|
| - }
|
| - n++;
|
| - }).asFuture();
|
| - }).whenComplete(server.close);
|
| - });
|
| + }), "localhost", 0);
|
| +
|
| + try {
|
| + var webSocket = await WebSocket.connect('ws://localhost:${server.port}');
|
| + var n = 0;
|
| + await webSocket.listen((message) {
|
| + if (n == 0) {
|
| + expect(message, equals("hello!"));
|
| + webSocket.add("ping");
|
| + } else if (n == 1) {
|
| + expect(message, equals("pong"));
|
| + webSocket.close();
|
| + server.close();
|
| + } else {
|
| + fail("Only expected two messages.");
|
| + }
|
| + n++;
|
| + }).asFuture();
|
| + } finally {
|
| + await server.close();
|
| + }
|
| });
|
|
|
| - test("negotiates the sub-protocol", () {
|
| - return shelf_io.serve(webSocketHandler((webSocket, protocol) {
|
| + test("negotiates the sub-protocol", () async {
|
| + var server = await shelf_io.serve(webSocketHandler((webSocket, protocol) {
|
| expect(protocol, equals("two"));
|
| - webSocket.close();
|
| - }, protocols: ["three", "two", "x"]), "localhost", 0).then((server) {
|
| - return WebSocket.connect('ws://localhost:${server.port}',
|
| - protocols: ["one", "two", "three"]).then((webSocket) {
|
| - expect(webSocket.protocol, equals("two"));
|
| - return webSocket.close();
|
| - }).whenComplete(server.close);
|
| - });
|
| + webSocket.sink.close();
|
| + }, protocols: ["three", "two", "x"]), "localhost", 0);
|
| +
|
| + try {
|
| + var webSocket = await WebSocket.connect(
|
| + 'ws://localhost:${server.port}',
|
| + protocols: ["one", "two", "three"]);
|
| + expect(webSocket.protocol, equals("two"));
|
| + return webSocket.close();
|
| + } finally {
|
| + await server.close();
|
| + }
|
| });
|
|
|
| group("with a set of allowed origins", () {
|
| var server;
|
| var url;
|
| - setUp(() {
|
| - return shelf_io.serve(webSocketHandler((webSocket) {
|
| - webSocket.close();
|
| - }, allowedOrigins: ["pub.dartlang.org", "GoOgLe.CoM"]), "localhost", 0)
|
| - .then((server_) {
|
| - server = server_;
|
| - url = 'http://localhost:${server.port}/';
|
| - });
|
| + setUp(() async {
|
| + server = await shelf_io.serve(webSocketHandler((webSocket) {
|
| + webSocket.sink.close();
|
| + }, allowedOrigins: ["pub.dartlang.org", "GoOgLe.CoM"]), "localhost", 0);
|
| + url = 'http://localhost:${server.port}/';
|
| });
|
|
|
| tearDown(() => server.close());
|
| @@ -104,29 +107,26 @@ void main() {
|
| });
|
|
|
| // Regression test for issue 21894.
|
| - test("allows a Connection header with multiple values", () {
|
| - return shelf_io.serve(webSocketHandler((webSocket) {
|
| - webSocket.close();
|
| - }), "localhost", 0).then((server) {
|
| - var url = 'http://localhost:${server.port}/';
|
| -
|
| - var headers = _handshakeHeaders;
|
| - headers['Connection'] = 'Other-Token, Upgrade';
|
| - expect(http.get(url, headers: headers).whenComplete(server.close),
|
| - hasStatus(101));
|
| - });
|
| + test("allows a Connection header with multiple values", () async {
|
| + var server = await shelf_io.serve(webSocketHandler((webSocket) {
|
| + webSocket.sink.close();
|
| + }), "localhost", 0);
|
| +
|
| + var url = 'http://localhost:${server.port}/';
|
| + var headers = _handshakeHeaders;
|
| + headers['Connection'] = 'Other-Token, Upgrade';
|
| + expect(http.get(url, headers: headers).whenComplete(server.close),
|
| + hasStatus(101));
|
| });
|
|
|
| group("HTTP errors", () {
|
| var server;
|
| var url;
|
| - setUp(() {
|
| - return shelf_io.serve(webSocketHandler((_) {
|
| + setUp(() async {
|
| + server = await shelf_io.serve(webSocketHandler((_) {
|
| fail("should not create a WebSocket");
|
| - }), "localhost", 0).then((server_) {
|
| - server = server_;
|
| - url = 'http://localhost:${server.port}/';
|
| - });
|
| + }), "localhost", 0);
|
| + url = 'http://localhost:${server.port}/';
|
| });
|
|
|
| tearDown(() => server.close());
|
|
|