| OLD | NEW | 
|---|
| 1 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 import 'dart:async'; | 5 import 'dart:async'; | 
| 6 | 6 | 
| 7 import 'package:test/test.dart'; | 7 import 'package:test/test.dart'; | 
| 8 import 'package:shelf/shelf.dart'; | 8 import 'package:shelf/shelf.dart'; | 
| 9 | 9 | 
| 10 import 'test_util.dart'; | 10 import 'test_util.dart'; | 
| 11 | 11 | 
| 12 void main() { | 12 void main() { | 
| 13   test('hijacking a non-hijackable request throws a StateError', () { | 13   test('hijacking a non-hijackable request throws a StateError', () { | 
| 14     expect(() => new Request('GET', LOCALHOST_URI).hijack((_, __) => null), | 14     expect(() => new Request('GET', LOCALHOST_URI).hijack((_) => null), | 
| 15         throwsStateError); | 15         throwsStateError); | 
| 16   }); | 16   }); | 
| 17 | 17 | 
| 18   test('hijacking a hijackable request throws a HijackException and calls ' | 18   test('hijacking a hijackable request throws a HijackException and calls ' | 
| 19       'onHijack', () { | 19       'onHijack', () { | 
| 20     var request = new Request('GET', LOCALHOST_URI, | 20     var request = new Request('GET', LOCALHOST_URI, | 
| 21         onHijack: expectAsync((callback) { | 21         onHijack: expectAsync((callback) { | 
| 22       var streamController = new StreamController(); | 22       var streamController = new StreamController(); | 
| 23       streamController.add([1, 2, 3]); | 23       streamController.add([1, 2, 3]); | 
| 24       streamController.close(); | 24       streamController.close(); | 
| 25 | 25 | 
| 26       var sinkController = new StreamController(); | 26       var sinkController = new StreamController(); | 
| 27       expect(sinkController.stream.first, completion(equals([4, 5, 6]))); | 27       expect(sinkController.stream.first, completion(equals([4, 5, 6]))); | 
| 28 | 28 | 
| 29       callback(streamController.stream, sinkController); | 29       callback(streamController.stream, sinkController); | 
| 30     })); | 30     })); | 
| 31 | 31 | 
| 32     expect(() => request.hijack(expectAsync((stream, sink) { | 32     expect(() => request.hijack(expectAsync((channel) { | 
| 33       expect(stream.first, completion(equals([1, 2, 3]))); | 33       expect(channel.stream.first, completion(equals([1, 2, 3]))); | 
| 34       sink.add([4, 5, 6]); | 34       channel.sink.add([4, 5, 6]); | 
| 35       sink.close(); | 35       channel.sink.close(); | 
| 36     })), throwsA(new isInstanceOf<HijackException>())); | 36     })), throwsA(new isInstanceOf<HijackException>())); | 
| 37   }); | 37   }); | 
| 38 | 38 | 
| 39   test('hijacking a hijackable request twice throws a StateError', () { | 39   test('hijacking a hijackable request twice throws a StateError', () { | 
| 40     // Assert that the [onHijack] callback is only called once. | 40     // Assert that the [onHijack] callback is only called once. | 
| 41     var request = new Request('GET', LOCALHOST_URI, | 41     var request = new Request('GET', LOCALHOST_URI, | 
| 42         onHijack: expectAsync((_) => null, count: 1)); | 42         onHijack: expectAsync((_) => null, count: 1)); | 
| 43 | 43 | 
| 44     expect(() => request.hijack((_, __) => null), | 44     expect(() => request.hijack((_) => null), | 
| 45         throwsA(new isInstanceOf<HijackException>())); | 45         throwsA(new isInstanceOf<HijackException>())); | 
| 46 | 46 | 
| 47     expect(() => request.hijack((_, __) => null), throwsStateError); | 47     expect(() => request.hijack((_) => null), throwsStateError); | 
| 48   }); | 48   }); | 
| 49 | 49 | 
| 50   group('calling change', () { | 50   group('calling change', () { | 
| 51     test('hijacking a non-hijackable request throws a StateError', () { | 51     test('hijacking a non-hijackable request throws a StateError', () { | 
| 52       var request = new Request('GET', LOCALHOST_URI); | 52       var request = new Request('GET', LOCALHOST_URI); | 
| 53       var newRequest = request.change(); | 53       var newRequest = request.change(); | 
| 54       expect(() => newRequest.hijack((_, __) => null), throwsStateError); | 54       expect(() => newRequest.hijack((_) => null), throwsStateError); | 
| 55     }); | 55     }); | 
| 56 | 56 | 
| 57     test('hijacking a hijackable request throws a HijackException and calls ' | 57     test('hijacking a hijackable request throws a HijackException and calls ' | 
| 58         'onHijack', () { | 58         'onHijack', () { | 
| 59       var request = new Request('GET', LOCALHOST_URI, | 59       var request = new Request('GET', LOCALHOST_URI, | 
| 60           onHijack: expectAsync((callback) { | 60           onHijack: expectAsync((callback) { | 
| 61         var streamController = new StreamController(); | 61         var streamController = new StreamController(); | 
| 62         streamController.add([1, 2, 3]); | 62         streamController.add([1, 2, 3]); | 
| 63         streamController.close(); | 63         streamController.close(); | 
| 64 | 64 | 
| 65         var sinkController = new StreamController(); | 65         var sinkController = new StreamController(); | 
| 66         expect(sinkController.stream.first, completion(equals([4, 5, 6]))); | 66         expect(sinkController.stream.first, completion(equals([4, 5, 6]))); | 
| 67 | 67 | 
| 68         callback(streamController.stream, sinkController); | 68         callback(streamController.stream, sinkController); | 
| 69       })); | 69       })); | 
| 70 | 70 | 
| 71       var newRequest = request.change(); | 71       var newRequest = request.change(); | 
| 72 | 72 | 
| 73       expect(() => newRequest.hijack(expectAsync((stream, sink) { | 73       expect(() => newRequest.hijack(expectAsync((channel) { | 
| 74         expect(stream.first, completion(equals([1, 2, 3]))); | 74         expect(channel.stream.first, completion(equals([1, 2, 3]))); | 
| 75         sink.add([4, 5, 6]); | 75         channel.sink.add([4, 5, 6]); | 
| 76         sink.close(); | 76         channel.sink.close(); | 
| 77       })), throwsA(new isInstanceOf<HijackException>())); | 77       })), throwsA(new isInstanceOf<HijackException>())); | 
| 78     }); | 78     }); | 
| 79 | 79 | 
| 80     test('hijacking the original request after calling change throws a ' | 80     test('hijacking the original request after calling change throws a ' | 
| 81         'StateError', () { | 81         'StateError', () { | 
| 82       // Assert that the [onHijack] callback is only called once. | 82       // Assert that the [onHijack] callback is only called once. | 
| 83       var request = new Request('GET', LOCALHOST_URI, | 83       var request = new Request('GET', LOCALHOST_URI, | 
| 84           onHijack: expectAsync((_) => null, count: 1)); | 84           onHijack: expectAsync((_) => null, count: 1)); | 
| 85 | 85 | 
| 86       var newRequest = request.change(); | 86       var newRequest = request.change(); | 
| 87 | 87 | 
| 88       expect(() => newRequest.hijack((_, __) => null), | 88       expect(() => newRequest.hijack((_) => null), | 
| 89           throwsA(new isInstanceOf<HijackException>())); | 89           throwsA(new isInstanceOf<HijackException>())); | 
| 90 | 90 | 
| 91       expect(() => request.hijack((_, __) => null), throwsStateError); | 91       expect(() => request.hijack((_) => null), throwsStateError); | 
| 92     }); | 92     }); | 
| 93   }); | 93   }); | 
| 94 } | 94 } | 
| OLD | NEW | 
|---|