Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Unified Diff: tests/standalone/io/https_bad_certificate_test.dart

Issue 1319703002: Breaking Change: merge BoringSSL branch into master (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tests/standalone/io/https_bad_certificate_test.dart
diff --git a/tests/standalone/io/https_bad_certificate_test.dart b/tests/standalone/io/https_bad_certificate_test.dart
index d07961a80a0912e70331f3666d5eed9c02a26d68..fdd83e316d972217060dd8a5c9ac7c2dc93c8701 100644
--- a/tests/standalone/io/https_bad_certificate_test.dart
+++ b/tests/standalone/io/https_bad_certificate_test.dart
@@ -4,52 +4,78 @@
// This test verifies that the bad certificate callback works in HttpClient.
-import "package:expect/expect.dart";
-import "package:path/path.dart";
import "dart:async";
import "dart:io";
-const HOST_NAME = "localhost";
-const CERTIFICATE = "localhost_cert";
+import "package:expect/expect.dart";
+
+final HOST_NAME = 'localhost';
+
+String localFile(path) => Platform.script.resolve(path).toFilePath();
-Future<SecureServerSocket> runServer() {
- SecureSocket.initialize(
- database: Platform.script.resolve('pkcert').toFilePath(),
+SecurityContext serverContext = new SecurityContext()
+ ..useCertificateChain(localFile('certificates/server_chain.pem'))
+ ..usePrivateKey(localFile('certificates/server_key.pem'),
password: 'dartdart');
- return HttpServer.bindSecure(
- HOST_NAME, 0, backlog: 5, certificateName: 'localhost_cert')
- .then((server) {
- server.listen((HttpRequest request) {
- request.listen((_) { }, onDone: () { request.response.close(); });
- }, onError: (e) { if (e is! HandshakeException) throw e; });
- return server;
- });
-}
+class CustomException {}
main() async {
- var clientScript = Platform.script
- .resolve('https_bad_certificate_client.dart')
- .toFilePath();
- Future clientProcess(int port, String acceptCertificate) {
- return Process.run(Platform.executable,
- [clientScript, port.toString(), acceptCertificate])
- .then((ProcessResult result) {
- if (result.exitCode != 0 || !result.stdout.contains('SUCCESS')) {
- print("Client failed, acceptCertificate: $acceptCertificate");
- print(" stdout:");
- print(result.stdout);
- print(" stderr:");
- print(result.stderr);
- Expect.fail('Client subprocess exit code: ${result.exitCode}');
- }
+ var HOST = (await InternetAddress.lookup(HOST_NAME)).first;
+ var server = await HttpServer.bindSecure(HOST, 0, serverContext, backlog: 5);
+ server.listen((request) {
+ request.listen((_) {
+ }, onDone: () {
+ request.response.close();
});
- }
+ });
+
+ SecurityContext goodContext = new SecurityContext()
+ ..setTrustedCertificates(file: localFile('certificates/trusted_certs.pem'));
+ SecurityContext badContext = new SecurityContext();
+ SecurityContext defaultContext = SecurityContext.defaultContext;
- var server = await runServer();
- await clientProcess(server.port, 'true');
- await clientProcess(server.port, 'false');
- await clientProcess(server.port, 'fisk');
- await clientProcess(server.port, 'exception');
+ await runClient(server.port, goodContext, true, 'pass');
+ await runClient(server.port, goodContext, false, 'pass');
+ await runClient(server.port, goodContext, 'fisk', 'pass');
+ await runClient(server.port, goodContext, 'exception', 'pass');
+ await runClient(server.port, badContext, true, 'pass');
+ await runClient(server.port, badContext, false, 'fail');
+ await runClient(server.port, badContext, 'fisk', 'fail');
+ await runClient(server.port, badContext, 'exception', 'throw');
+ await runClient(server.port, defaultContext, true, 'pass');
+ await runClient(server.port, defaultContext, false, 'fail');
+ await runClient(server.port, defaultContext, 'fisk', 'fail');
+ await runClient(server.port, defaultContext, 'exception', 'throw');
server.close();
}
+
+
+Future runClient(int port,
+ SecurityContext context,
+ callbackReturns,
+ result) async {
+ HttpClient client = new HttpClient(context: context);
+ client.badCertificateCallback = (X509Certificate certificate, host, port) {
+ Expect.equals('/CN=rootauthority', certificate.subject);
+ Expect.equals('/CN=rootauthority', certificate.issuer);
+ // Throw exception if one is requested.
+ if (callbackReturns == 'exception') throw new CustomException();
+ return callbackReturns;
+ };
+
+ try {
+ var request = await client.getUrl(Uri.parse('https://$HOST_NAME:$port/'));
+ Expect.equals('pass', result);
+ await request.close();
+ } catch (error) {
+ Expect.notEquals(result, 'pass');
+ if (result == 'fail') {
+ Expect.isTrue(error is HandshakeException);
+ } else if (result == 'throw') {
+ Expect.isTrue(error is CustomException);
+ } else {
+ Expect.fail('Unknown expectation $result');
+ }
+ }
+}
« no previous file with comments | « tests/standalone/io/https_bad_certificate_client.dart ('k') | tests/standalone/io/https_client_certificate_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698