diff options
Diffstat (limited to 'netwerk/test/unit/test_udpsocket_offline.js')
-rw-r--r-- | netwerk/test/unit/test_udpsocket_offline.js | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/netwerk/test/unit/test_udpsocket_offline.js b/netwerk/test/unit/test_udpsocket_offline.js new file mode 100644 index 0000000000..080f54281d --- /dev/null +++ b/netwerk/test/unit/test_udpsocket_offline.js @@ -0,0 +1,144 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +add_test(function test_ipv4_any() { + let socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( + Ci.nsIUDPSocket + ); + + Assert.throws(() => { + socket.init(-1, false, Services.scriptSecurityManager.getSystemPrincipal()); + }, /NS_ERROR_OFFLINE/); + + run_next_test(); +}); + +add_test(function test_ipv6_any() { + let socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( + Ci.nsIUDPSocket + ); + + Assert.throws(() => { + socket.init2("::", -1, Services.scriptSecurityManager.getSystemPrincipal()); + }, /NS_ERROR_OFFLINE/); + + run_next_test(); +}); + +add_test(function test_ipv4() { + let socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( + Ci.nsIUDPSocket + ); + + Assert.throws(() => { + socket.init2( + "240.0.0.1", + -1, + Services.scriptSecurityManager.getSystemPrincipal() + ); + }, /NS_ERROR_OFFLINE/); + + run_next_test(); +}); + +add_test(function test_ipv6() { + let socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( + Ci.nsIUDPSocket + ); + + Assert.throws(() => { + socket.init2( + "2001:db8::1", + -1, + Services.scriptSecurityManager.getSystemPrincipal() + ); + }, /NS_ERROR_OFFLINE/); + + run_next_test(); +}); + +add_test(function test_ipv4_loopback() { + let socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( + Ci.nsIUDPSocket + ); + + try { + socket.init2( + "127.0.0.1", + -1, + Services.scriptSecurityManager.getSystemPrincipal(), + true + ); + } catch (e) { + Assert.ok(false, "unexpected exception: " + e); + } + + // Now with localhost connections disabled in offline mode. + Services.prefs.setBoolPref("network.disable-localhost-when-offline", true); + socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( + Ci.nsIUDPSocket + ); + + Assert.throws(() => { + socket.init2( + "127.0.0.1", + -1, + Services.scriptSecurityManager.getSystemPrincipal(), + true + ); + }, /NS_ERROR_OFFLINE/); + + Services.prefs.setBoolPref("network.disable-localhost-when-offline", false); + + run_next_test(); +}); + +add_test(function test_ipv6_loopback() { + let socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( + Ci.nsIUDPSocket + ); + + try { + socket.init2( + "::1", + -1, + Services.scriptSecurityManager.getSystemPrincipal(), + true + ); + } catch (e) { + Assert.ok(false, "unexpected exception: " + e); + } + + // Now with localhost connections disabled in offline mode. + Services.prefs.setBoolPref("network.disable-localhost-when-offline", true); + socket = Cc["@mozilla.org/network/udp-socket;1"].createInstance( + Ci.nsIUDPSocket + ); + + Assert.throws(() => { + socket.init2( + "::1", + -1, + Services.scriptSecurityManager.getSystemPrincipal(), + true + ); + }, /NS_ERROR_OFFLINE/); + + Services.prefs.setBoolPref("network.disable-localhost-when-offline", false); + + run_next_test(); +}); + +function run_test() { + // jshint ignore:line + Services.io.offline = true; + Services.prefs.setBoolPref("network.disable-localhost-when-offline", false); + registerCleanupFunction(() => { + Services.io.offline = false; + Services.prefs.clearUserPref("network.disable-localhost-when-offline"); + }); + run_next_test(); +} |