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

Unified Diff: tests/standalone/io/secure_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/secure_bad_certificate_test.dart
diff --git a/tests/standalone/io/secure_bad_certificate_test.dart b/tests/standalone/io/secure_bad_certificate_test.dart
index 3388a8d48945edf7ec62dcf0fef96626ac1bea52..6a7e93a7f07b9b10aef5ffb89a77f4b42957c32b 100644
--- a/tests/standalone/io/secure_bad_certificate_test.dart
+++ b/tests/standalone/io/secure_bad_certificate_test.dart
@@ -4,59 +4,81 @@
// This test verifies that the bad certificate callback works.
-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();
+SecurityContext serverContext = new SecurityContext()
+ ..useCertificateChain(localFile('certificates/server_chain.pem'))
+ ..usePrivateKey(localFile('certificates/server_key.pem'),
+ password: 'dartdart');
-String certificateDatabase() => Platform.script.resolve('pkcert').toFilePath();
+class CustomException {}
-Future<SecureServerSocket> runServer() {
- SecureSocket.initialize(database: certificateDatabase(),
- password: 'dartdart');
+main() async {
+ var HOST = (await InternetAddress.lookup(HOST_NAME)).first;
+ var server = await SecureServerSocket.bind(HOST_NAME, 0, serverContext);
+ server.listen((SecureSocket socket) {
+ socket.listen((_) {}, onDone: () {
+ socket.close();
+ });
+ }, onError: (e) { if (e is! HandshakeException) throw e; });
- return SecureServerSocket.bind(HOST_NAME, 0, CERTIFICATE)
- .then((SecureServerSocket server) {
- server.listen((SecureSocket socket) {
- socket.listen((_) { },
- onDone: () {
- socket.close();
- });
- }, onError: (e) => Expect.isTrue(e is HandshakeException));
- return server;
- });
+ SecurityContext goodContext = new SecurityContext()
+ ..setTrustedCertificates(file: localFile('certificates/trusted_certs.pem'));
+ SecurityContext badContext = new SecurityContext();
+ SecurityContext defaultContext = SecurityContext.defaultContext;
+
+ 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();
}
-void main() {
- var clientScript = Platform.script
- .resolve('secure_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) {
- print("Client failed, stdout:");
- print(result.stdout);
- print(" stderr:");
- print(result.stderr);
- Expect.fail('Client subprocess exit code: ${result.exitCode}');
- }
- });
+Future runClient(int port,
+ SecurityContext context,
+ callbackReturns,
+ result) async {
+ badCertificateCallback(X509Certificate certificate) {
+ 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;
}
- runServer().then((server) {
- Future.wait([clientProcess(server.port, 'true'),
- clientProcess(server.port, 'false'),
- clientProcess(server.port, 'fisk'),
- clientProcess(server.port, 'exception')]).then((_) {
- server.close();
- });
- });
-}
+ try {
+ var socket = await SecureSocket.connect(
+ HOST_NAME,
+ port,
+ context: context,
+ onBadCertificate: badCertificateCallback);
+ Expect.equals('pass', result); // Is rethrown below
+ await socket.close();
+ } catch (error) {
+ if (error is ExpectException) rethrow;
+ Expect.notEquals(result, 'pass');
+ if (result == 'fail') {
+ Expect.isTrue(error is HandshakeException || error is ArgumentError);
+ } else if (result == 'throw') {
+ Expect.isTrue(error is CustomException);
+ } else {
+ Expect.fail('Unknown expectation $result');
+ }
+ }
+}
« no previous file with comments | « tests/standalone/io/secure_bad_certificate_client.dart ('k') | tests/standalone/io/secure_builtin_roots_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698