Chromium Code Reviews| Index: dart/pkg/http_base/test/http_base_io_test.dart |
| diff --git a/dart/pkg/http_base/test/http_base_io_test.dart b/dart/pkg/http_base/test/http_base_io_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7ef360fed5e76a8662a57ff367eb4b6eadbd3378 |
| --- /dev/null |
| +++ b/dart/pkg/http_base/test/http_base_io_test.dart |
| @@ -0,0 +1,46 @@ |
| +library http_base.http_base_io_test; |
| + |
| +import 'dart:async'; |
| +import 'dart:io'; |
| +import 'dart:convert'; |
| + |
| +import 'package:http_base/http_base_io.dart'; |
| +import 'package:unittest/unittest.dart'; |
| + |
| +main() { |
| + test('io-client', () { |
| + HttpServer.bind('127.0.0.1', 0).then(expectAsync((HttpServer server) { |
| + server.first.then(expectAsync((request) { |
| + expect(request.method, equals('POST')); |
| + expect(request.headers.value('foo'), equals('bar')); |
| + |
| + return request.fold([], (buf, data) => buf..addAll(data)).then((data) { |
| + request |
| + ..response.statusCode = 201 |
| + ..response.headers.set('foo', ['foo', 'bar']) |
| + ..response.add(data) |
| + ..response.close(); |
| + }); |
| + })).whenComplete(() => server.close()); |
| + |
| + var client = new Client(); |
| + var uri = Uri.parse('http://127.0.0.1:${server.port}/'); |
| + var headers = new HeadersImpl({'foo' : 'bar'}); |
| + var body = (new StreamController() |
| + ..add(UTF8.encode('my-data')) |
| + ..close()).stream; |
| + |
| + var request = new RequestImpl('POST', uri, headers: headers, body: body); |
| + client(request).then(expectAsync((response) { |
| + expect(response.statusCode, equals(201)); |
| + expect(response.headers.getMultiple('foo').toList(), |
| + equals(['foo','bar'])); |
|
Søren Gjesse
2014/08/07 12:16:22
Also test that response.headers['foo'] is 'foo,bar
kustermann
2014/08/07 12:50:38
This should be covered by the tests for HeaderImpl
|
| + |
| + response.read() |
| + .transform(UTF8.decoder).join('').then(expectAsync((data) { |
| + expect(data, equals('my-data')); |
| + })); |
| + })); |
| + })); |
| + }); |
| +} |