Chromium Code Reviews| 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..288a43afd5ec508e842eb158b701a318b0356684 |
| --- /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); |
| + }); |
| +} |
|
kevmoo
2014/05/07 19:28:22
End with a newline
nweiz
2014/05/19 20:10:29
Done.
|