dart-sdk/tests/standalone_2/io/http_client_request_test.dart
Siva Annamalai bd2a8e1d60 Reland migrate most of the tests in standalone to be strong mode clean and move them to standalone_2 directory.
Bug:
Change-Id: I4ca50f315361422db1d4356055862463bfe1d6f3
Reviewed-on: https://dart-review.googlesource.com/12240
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
2017-10-07 01:29:36 +00:00

110 lines
2.6 KiB
Dart

// Copyright (c) 2013, 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.
import "dart:async";
import "dart:io";
import "dart:typed_data";
import "package:async_helper/async_helper.dart";
import "package:expect/expect.dart";
void testClientRequest(Future handler(request)) {
HttpServer.bind("127.0.0.1", 0).then((server) {
server.listen((request) {
request.drain().then((_) => request.response.close()).catchError((_) {});
});
var client = new HttpClient();
client
.get("127.0.0.1", server.port, "/")
.then((request) {
return handler(request);
})
.then((response) => response.drain())
.catchError((_) {})
.whenComplete(() {
client.close();
server.close();
});
});
}
void testResponseDone() {
testClientRequest((request) {
request.close().then((res1) {
request.done.then((res2) {
Expect.equals(res1, res2);
});
});
return request.done;
});
}
void testBadResponseAdd() {
asyncStart();
testClientRequest((request) {
request.contentLength = 0;
request.add([0]);
request.close();
request.done.catchError((error) {
asyncEnd();
}, test: (e) => e is HttpException);
return request.done;
});
asyncStart();
testClientRequest((request) {
request.contentLength = 5;
request.add([0, 0, 0]);
request.add([0, 0, 0]);
request.close();
request.done.catchError((error) {
asyncEnd();
}, test: (e) => e is HttpException);
return request.done;
});
asyncStart();
testClientRequest((request) {
request.contentLength = 0;
request.add(new Uint8List(64 * 1024));
request.add(new Uint8List(64 * 1024));
request.add(new Uint8List(64 * 1024));
request.close();
request.done.catchError((error) {
asyncEnd();
}, test: (e) => e is HttpException);
return request.done;
});
}
void testBadResponseClose() {
asyncStart();
testClientRequest((request) {
request.contentLength = 5;
request.close();
request.done.catchError((error) {
asyncEnd();
}, test: (e) => e is HttpException);
return request.done;
});
asyncStart();
testClientRequest((request) {
request.contentLength = 5;
request.add([0]);
request.close();
request.done.catchError((error) {
asyncEnd();
}, test: (e) => e is HttpException);
return request.done;
});
}
void main() {
testResponseDone();
testBadResponseAdd();
testBadResponseClose();
}