diff options
Diffstat (limited to 'security/manager/ssl/tests/unit/test_logoutAndTeardown.js')
-rw-r--r-- | security/manager/ssl/tests/unit/test_logoutAndTeardown.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/security/manager/ssl/tests/unit/test_logoutAndTeardown.js b/security/manager/ssl/tests/unit/test_logoutAndTeardown.js new file mode 100644 index 000000000..2bf8855fe --- /dev/null +++ b/security/manager/ssl/tests/unit/test_logoutAndTeardown.js @@ -0,0 +1,55 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +do_get_profile(); + +function connect_and_teardown() { + let socketTransportService = + Cc["@mozilla.org/network/socket-transport-service;1"] + .getService(Ci.nsISocketTransportService); + + let tearDown = false; + + let reader = { + onInputStreamReady: function(stream) { + throws(() => stream.available(), /NS_ERROR_FAILURE/, + "stream should be in an error state"); + ok(tearDown, "A tear down attempt should have occurred"); + run_next_test(); + } + }; + + let sink = { + onTransportStatus: function(transport, status, progress, progressmax) { + if (status == Ci.nsISocketTransport.STATUS_CONNECTED_TO) { + // Try to logout and tear down the secure decoder ring. + // This should close and stream and notify the reader. + // The test will time out if this fails. + tearDown = true; + Cc["@mozilla.org/security/sdr;1"].getService(Ci.nsISecretDecoderRing) + .logoutAndTeardown(); + } + } + }; + + Services.prefs.setCharPref("network.dns.localDomains", + "ocsp-stapling-none.example.com"); + let transport = socketTransportService.createTransport( + ["ssl"], 1, "ocsp-stapling-none.example.com", 8443, null); + transport.setEventSink(sink, Services.tm.currentThread); + + let inStream = transport.openInputStream(0, 0, 0) + .QueryInterface(Ci.nsIAsyncInputStream); + inStream.asyncWait(reader, Ci.nsIAsyncInputStream.WAIT_CLOSURE_ONLY, 0, + Services.tm.currentThread); +} + +function run_test() { + add_tls_server_setup("OCSPStaplingServer", "ocsp_certs"); + add_test(connect_and_teardown); + run_next_test(); +} |