| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import "package:expect/expect.dart"; | |
| 6 import "package:path/path.dart"; | |
| 7 import "dart:async"; | 5 import "dart:async"; |
| 8 import "dart:io"; | 6 import "dart:io"; |
| 9 import "dart:isolate"; | 7 import "dart:isolate"; |
| 10 | 8 |
| 11 const HOST_NAME = "localhost"; | 9 import "package:expect/expect.dart"; |
| 10 |
| 11 InternetAddress HOST; |
| 12 const CERTIFICATE = "localhost_cert"; |
| 12 | 13 |
| 13 void testListenOn() { | 14 void testListenOn() { |
| 14 void test(void onDone()) { | 15 void test(void onDone()) { |
| 15 HttpServer.bindSecure(HOST_NAME, | 16 HttpServer.bindSecure(HOST, |
| 16 0, | 17 0, |
| 17 backlog: 5, | 18 backlog: 5, |
| 18 certificateName: 'localhost_cert').then((server) { | 19 certificateName: CERTIFICATE).then((server) { |
| 19 ReceivePort serverPort = new ReceivePort(); | 20 ReceivePort serverPort = new ReceivePort(); |
| 20 server.listen((HttpRequest request) { | 21 server.listen((HttpRequest request) { |
| 21 request.listen( | 22 request.listen( |
| 22 (_) { }, | 23 (_) { }, |
| 23 onDone: () { | 24 onDone: () { |
| 24 request.response.close(); | 25 request.response.close(); |
| 25 serverPort.close(); | 26 serverPort.close(); |
| 26 }); | 27 }); |
| 27 }); | 28 }); |
| 28 | 29 |
| 29 HttpClient client = new HttpClient(); | 30 HttpClient client = new HttpClient(); |
| 30 ReceivePort clientPort = new ReceivePort(); | 31 ReceivePort clientPort = new ReceivePort(); |
| 31 client.getUrl(Uri.parse("https://$HOST_NAME:${server.port}/")) | 32 client.getUrl(Uri.parse("https://${HOST.host}:${server.port}/")) |
| 32 .then((HttpClientRequest request) { | 33 .then((HttpClientRequest request) { |
| 33 return request.close(); | 34 return request.close(); |
| 34 }) | 35 }) |
| 35 .then((HttpClientResponse response) { | 36 .then((HttpClientResponse response) { |
| 36 response.listen( | 37 response.listen( |
| 37 (_) { }, | 38 (_) { }, |
| 38 onDone: () { | 39 onDone: () { |
| 39 client.close(); | 40 client.close(); |
| 40 clientPort.close(); | 41 clientPort.close(); |
| 41 server.close(); | 42 server.close(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 57 }); | 58 }); |
| 58 } | 59 } |
| 59 | 60 |
| 60 void InitializeSSL() { | 61 void InitializeSSL() { |
| 61 var testPkcertDatabase = Platform.script.resolve('pkcert').toFilePath(); | 62 var testPkcertDatabase = Platform.script.resolve('pkcert').toFilePath(); |
| 62 SecureSocket.initialize(database: testPkcertDatabase, | 63 SecureSocket.initialize(database: testPkcertDatabase, |
| 63 password: 'dartdart'); | 64 password: 'dartdart'); |
| 64 } | 65 } |
| 65 | 66 |
| 66 void testEarlyClientClose() { | 67 void testEarlyClientClose() { |
| 67 HttpServer.bindSecure(HOST_NAME, | 68 HttpServer.bindSecure(HOST, |
| 68 0, | 69 0, |
| 69 certificateName: 'localhost_cert').then((server) { | 70 certificateName: 'localhost_cert').then((server) { |
| 70 server.listen( | 71 server.listen( |
| 71 (request) { | 72 (request) { |
| 72 String name = Platform.script.toFilePath(); | 73 String name = Platform.script.toFilePath(); |
| 73 new File(name).openRead().pipe(request.response) | 74 new File(name).openRead().pipe(request.response) |
| 74 .catchError((e) { /* ignore */ }); | 75 .catchError((e) { /* ignore */ }); |
| 75 }); | 76 }); |
| 76 | 77 |
| 77 var count = 0; | 78 var count = 0; |
| 78 makeRequest() { | 79 makeRequest() { |
| 79 Socket.connect(HOST_NAME, server.port).then((socket) { | 80 Socket.connect(HOST, server.port).then((socket) { |
| 80 var data = "Invalid TLS handshake"; | 81 var data = "Invalid TLS handshake"; |
| 81 socket.write(data); | 82 socket.write(data); |
| 82 socket.close(); | 83 socket.close(); |
| 83 socket.done.then((_) { | 84 socket.done.then((_) { |
| 84 socket.destroy(); | 85 socket.destroy(); |
| 85 if (++count < 10) { | 86 if (++count < 10) { |
| 86 makeRequest(); | 87 makeRequest(); |
| 87 } else { | 88 } else { |
| 88 server.close(); | 89 server.close(); |
| 89 } | 90 } |
| 90 }); | 91 }); |
| 91 }); | 92 }); |
| 92 } | 93 } |
| 93 makeRequest(); | 94 makeRequest(); |
| 94 }); | 95 }); |
| 95 } | 96 } |
| 96 | 97 |
| 97 void main() { | 98 void main() { |
| 98 InitializeSSL(); | 99 InitializeSSL(); |
| 99 testListenOn(); | 100 InternetAddress.lookup("localhost").then((hosts) { |
| 100 testEarlyClientClose(); | 101 HOST = hosts.first; |
| 102 testListenOn(); |
| 103 testEarlyClientClose(); |
| 104 }); |
| 101 } | 105 } |
| OLD | NEW |