| Index: pkg/shelf/test/hijack_test.dart
|
| diff --git a/pkg/shelf/test/hijack_test.dart b/pkg/shelf/test/hijack_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fa67a6d63113be887d36a2616f6bbaee02cf775b
|
| --- /dev/null
|
| +++ b/pkg/shelf/test/hijack_test.dart
|
| @@ -0,0 +1,51 @@
|
| +// Copyright (c) 2014, 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.
|
| +
|
| +library shelf.hijack_test;
|
| +
|
| +import 'dart:async';
|
| +
|
| +import 'package:unittest/unittest.dart';
|
| +import 'package:shelf/shelf.dart';
|
| +
|
| +import 'test_util.dart';
|
| +
|
| +void main() {
|
| + test('hijacking a non-hijackable request throws a StateError', () {
|
| + expect(() => new Request('GET', LOCALHOST_URI).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);
|
| + }));
|
| +
|
| + expect(() => request.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 a hijackable request twice throws a StateError', () {
|
| + // Assert that the [onHijack] callback is only called once.
|
| + var request = new Request('GET', LOCALHOST_URI,
|
| + onHijack: expectAsync((_) => null, count: 1));
|
| +
|
| + expect(() => request.hijack((_, __) => null),
|
| + throwsA(new isInstanceOf<HijackException>()));
|
| +
|
| + expect(() => request.hijack((_, __) => null), throwsStateError);
|
| + });
|
| +}
|
|
|