Index: tests/standalone/io/raw_secure_socket_test.dart |
diff --git a/tests/standalone/io/raw_secure_socket_test.dart b/tests/standalone/io/raw_secure_socket_test.dart |
index cd327ec5a13fad8de1528833b1eb48ab833e644b..9cd54a1aa26b556d67686ab1b09e9de4a99c6eae 100644 |
--- a/tests/standalone/io/raw_secure_socket_test.dart |
+++ b/tests/standalone/io/raw_secure_socket_test.dart |
@@ -13,69 +13,61 @@ import "dart:async"; |
import "dart:io"; |
import "dart:isolate"; |
-Future<HttpServer> startServer() { |
- return HttpServer.bindSecure( |
- "localhost", |
- 0, |
- backlog: 5, |
- certificateName: 'localhost_cert').then((server) { |
- server.listen((HttpRequest request) { |
- request.listen( |
- (_) { }, |
- onDone: () { |
- request.response.contentLength = 100; |
- for (int i = 0; i < 10; i++) { |
- request.response.add([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); |
- } |
- request.response.close(); |
- }); |
- }); |
- return server; |
- }); |
-} |
+String localFile(path) => Platform.script.resolve(path).toFilePath(); |
-void InitializeSSL() { |
- var testPkcertDatabase = Platform.script.resolve('pkcert').toFilePath(); |
- SecureSocket.initialize(database: testPkcertDatabase, |
- password: 'dartdart'); |
-} |
+SecurityContext serverContext = new SecurityContext() |
+ ..useCertificateChain(localFile('certificates/server_chain.pem')) |
+ ..usePrivateKey(localFile('certificates/server_key.pem'), |
+ password: 'dartdart'); |
-void main() { |
+SecurityContext clientContext = new SecurityContext() |
+ ..setTrustedCertificates(file: localFile('certificates/trusted_certs.pem')); |
+ |
+main() async { |
List<int> message = "GET / HTTP/1.0\r\nHost: localhost\r\n\r\n".codeUnits; |
int written = 0; |
List<int> body = <int>[]; |
- InitializeSSL(); |
- startServer().then((server) { |
- RawSecureSocket.connect("localhost", server.port).then((socket) { |
- socket.listen( |
- (RawSocketEvent event) { |
- switch (event) { |
- case RawSocketEvent.READ: |
- body.addAll(socket.read()); |
- break; |
- case RawSocketEvent.WRITE: |
- written += |
- socket.write(message, written, message.length - written); |
- if (written < message.length) { |
- socket.writeEventsEnabled = true; |
- } else { |
- socket.shutdown(SocketDirection.SEND); |
- } |
- break; |
- case RawSocketEvent.READ_CLOSED: |
- Expect.isTrue(body.length > 100, "$body\n${body.length}"); |
- Expect.equals(72, body[0]); |
- Expect.equals(9, body[body.length - 1]); |
- server.close(); |
- break; |
- default: throw "Unexpected event $event"; |
- } |
- }, |
- onError: (e, trace) { |
- String msg = "onError handler of RawSecureSocket stream hit $e"; |
- if (trace != null) msg += "\nStackTrace: $trace"; |
- Expect.fail(msg); |
- }); |
- }); |
+ var server = await HttpServer.bindSecure( |
+ "localhost", |
+ 0, |
+ serverContext, |
+ backlog: 5); |
+ server.listen((HttpRequest request) async { |
+ await request.drain(); |
+ request.response.contentLength = 100; |
+ for (int i = 0; i < 10; i++) { |
+ request.response.add([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); |
+ } |
+ request.response.close(); |
+ }); |
+ var socket = await RawSecureSocket.connect("localhost", |
+ server.port, |
+ context: clientContext); |
+ socket.listen((RawSocketEvent event) { |
+ switch (event) { |
+ case RawSocketEvent.READ: |
+ body.addAll(socket.read()); |
+ break; |
+ case RawSocketEvent.WRITE: |
+ written += |
+ socket.write(message, written, message.length - written); |
+ if (written < message.length) { |
+ socket.writeEventsEnabled = true; |
+ } else { |
+ socket.shutdown(SocketDirection.SEND); |
+ } |
+ break; |
+ case RawSocketEvent.READ_CLOSED: |
+ Expect.isTrue(body.length > 100, "$body\n${body.length}"); |
+ Expect.equals(72, body[0]); |
+ Expect.equals(9, body[body.length - 1]); |
+ server.close(); |
+ break; |
+ default: throw "Unexpected event $event"; |
+ } |
+ }, onError: (e, trace) { |
+ String msg = "onError handler of RawSecureSocket stream hit $e"; |
+ if (trace != null) msg += "\nStackTrace: $trace"; |
+ Expect.fail(msg); |
}); |
} |