| // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| @TestOn('vm') |
| import 'dart:io'; |
| |
| import 'package:http/http.dart' as http; |
| import 'package:shelf/shelf.dart'; |
| import 'package:shelf_test_handler/shelf_test_handler.dart'; |
| import 'package:shelf_web_socket/shelf_web_socket.dart'; |
| import 'package:test/test.dart'; |
| import 'package:web_socket_channel/web_socket_channel.dart'; |
| |
| void main() { |
| test('serves a ShelfTestHandler', () async { |
| var server = await ShelfTestServer.create(); |
| addTearDown(server.close); |
| |
| server.handler.expect('GET', '/', expectAsync1((_) => Response.ok(''))); |
| var response = await http.get(server.url); |
| expect(response.statusCode, equals(200)); |
| }); |
| |
| test('supports request hijacking', () async { |
| var server = await ShelfTestServer.create(); |
| addTearDown(server.close); |
| |
| server.handler.expect('GET', '/', |
| webSocketHandler((WebSocketChannel webSocket) { |
| webSocket.sink.add('hello!'); |
| webSocket.sink.close(); |
| })); |
| |
| var webSocket = |
| await WebSocket.connect('ws://localhost:${server.url.port}'); |
| expect(webSocket, emits('hello!')); |
| }); |
| } |