| 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..5df2ea0e9cc5c47cc920261a6f3a324dbf147265
|
| --- /dev/null
|
| +++ b/dart/pkg/http_base/test/http_base_io_test.dart
|
| @@ -0,0 +1,48 @@
|
| +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));
|
| + // NOTE: dart:io joins multiple values with ", ".
|
| + expect(response.headers['foo'], equals('foo, bar'));
|
| + expect(response.headers.getMultiple('foo').toList(),
|
| + equals(['foo','bar']));
|
| +
|
| + response.read()
|
| + .transform(UTF8.decoder).join('').then(expectAsync((data) {
|
| + expect(data, equals('my-data'));
|
| + }));
|
| + }));
|
| + }));
|
| + });
|
| +}
|
|
|