| Index: pkg/shelf/test/hijack_test.dart
|
| diff --git a/pkg/shelf/test/hijack_test.dart b/pkg/shelf/test/hijack_test.dart
|
| index fa67a6d63113be887d36a2616f6bbaee02cf775b..ee4255a2bc19f57e6acaf451f815d0885aa251e5 100644
|
| --- a/pkg/shelf/test/hijack_test.dart
|
| +++ b/pkg/shelf/test/hijack_test.dart
|
| @@ -48,4 +48,50 @@ void main() {
|
|
|
| expect(() => request.hijack((_, __) => null), throwsStateError);
|
| });
|
| +
|
| + group('calling change', () {
|
| + test('hijacking a non-hijackable request throws a StateError', () {
|
| + var request = new Request('GET', LOCALHOST_URI);
|
| + var newRequest = request.change();
|
| + expect(() => newRequest.hijack((_, __) => null),
|
| + throwsStateError);
|
| + });
|
| +
|
| + test('hijacking a hijackable request throws a HijackException and calls '
|
| + 'onHijack', () {
|
| + var request = new Request('GET', LOCALHOST_URI,
|
| + onHijack: expectAsync((callback) {
|
| + var streamController = new StreamController();
|
| + streamController.add([1, 2, 3]);
|
| + streamController.close();
|
| +
|
| + var sinkController = new StreamController();
|
| + expect(sinkController.stream.first, completion(equals([4, 5, 6])));
|
| +
|
| + callback(streamController.stream, sinkController);
|
| + }));
|
| +
|
| + var newRequest = request.change();
|
| +
|
| + expect(() => newRequest.hijack(expectAsync((stream, sink) {
|
| + expect(stream.first, completion(equals([1, 2, 3])));
|
| + sink.add([4, 5, 6]);
|
| + sink.close();
|
| + })), throwsA(new isInstanceOf<HijackException>()));
|
| + });
|
| +
|
| + test('hijacking the original request after calling change throws a '
|
| + 'StateError', () {
|
| + // Assert that the [onHijack] callback is only called once.
|
| + var request = new Request('GET', LOCALHOST_URI,
|
| + onHijack: expectAsync((_) => null, count: 1));
|
| +
|
| + var newRequest = request.change();
|
| +
|
| + expect(() => newRequest.hijack((_, __) => null),
|
| + throwsA(new isInstanceOf<HijackException>()));
|
| +
|
| + expect(() => request.hijack((_, __) => null), throwsStateError);
|
| + });
|
| + });
|
| }
|
|
|