Files
sdk/tests/standalone/io/http_parser_connect_method_test.dart
T
Robert Nystrom a323c55162 Format tests/standalone/ using 3.8 style.
Change-Id: I4d492a63a41880ef8cd69321372a4853825b9efd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/426321
Reviewed-by: Liam Appelbe <liama@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
Commit-Queue: Liam Appelbe <liama@google.com>
2025-05-04 17:45:09 -07:00

58 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:expect/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);
}