dart-sdk/tests/standalone/io/http_parser_connect_method_test.dart
Alexander Aprelev 60bea3003d Reland "[tests] rewrite and format several tests on http"
This reverts commit af4330d382, relands original e35120cfd14ed09302596e9fa20d8e845e8e2668(in patchset 1) with fixes for the tests(in subsequent patchsets).

Change-Id: I025022d242a75ad94b3616ff78aef28b7b5f372b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/180603
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2021-01-22 23:49:17 +00:00

57 lines
1.7 KiB
Dart

// Copyright (c) 2021, 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 "package:async_helper/async_helper.dart";
import "package:expect/expect.dart";
Future<void> test(String header, value) async {
final connect = "CONNECT";
final server = await HttpServer.bind("127.0.0.1", 0);
server.listen((HttpRequest request) {
Expect.equals(connect, request.method);
request.response.statusCode = 200;
request.response.headers.add(header, value);
request.response.close();
});
final completer = Completer<void>();
HttpClient client = HttpClient();
client
.open(connect, "127.0.0.1", server.port, "/")
.then((HttpClientRequest request) {
return request.close();
}).then((HttpClientResponse response) {
Expect.equals(200, response.statusCode);
// Headers except Content-Length and Transfer-Encoding header will be read.
if (header == HttpHeaders.contentLengthHeader ||
header == HttpHeaders.transferEncodingHeader) {
Expect.isNull(response.headers[header]);
} else {
final list = response.headers[header];
Expect.isNotNull(list);
Expect.equals(1, list!.length);
Expect.equals(value, list[0]);
}
client.close(force: true);
server.close();
completer.complete();
});
await completer.future;
}
Future<void> runTests() async {
await test(HttpHeaders.contentLengthHeader, 0);
await test(HttpHeaders.transferEncodingHeader, 'chunked');
await test('testHeader', 'testValue');
}
main() {
asyncTest(runTests);
}