/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; add_task(async function test_proxy_modes_and_autoconfig() { // Directly test the proxy Mode and AutoconfigURL parameters through // the API instead of the policy engine, because the test harness // uses these prefs, and changing them interfere with the harness. // Checks that every Mode value translates correctly to the expected pref value let { ProxyPolicies, PROXY_TYPES_MAP } = ChromeUtils.importESModule( "resource:///modules/policies/ProxyPolicies.sys.mjs" ); for (let [mode, expectedValue] of PROXY_TYPES_MAP) { ProxyPolicies.configureProxySettings({ Mode: mode }, (_, value) => { equal(value, expectedValue, "Correct proxy mode"); }); } let autoconfigURL = new URL("data:text/plain,test"); ProxyPolicies.configureProxySettings( { AutoConfigURL: autoconfigURL }, (_, value) => { equal(value, autoconfigURL.href, "AutoconfigURL correctly set"); } ); }); add_task(async function test_proxy_boolean_settings() { // Tests that both false and true values are correctly set and locked await setupPolicyEngineWithJson({ policies: { Proxy: { UseProxyForDNS: false, AutoLogin: false, }, }, }); checkUnlockedPref("network.proxy.socks_remote_dns", false); checkUnlockedPref("signon.autologin.proxy", false); await setupPolicyEngineWithJson({ policies: { Proxy: { UseProxyForDNS: true, AutoLogin: true, }, }, }); checkUnlockedPref("network.proxy.socks_remote_dns", true); checkUnlockedPref("signon.autologin.proxy", true); }); add_task(async function test_proxy_socks_and_passthrough() { await setupPolicyEngineWithJson({ policies: { Proxy: { SOCKSVersion: 4, Passthrough: "a, b, c", }, }, }); checkUnlockedPref("network.proxy.socks_version", 4); checkUnlockedPref("network.proxy.no_proxies_on", "a, b, c"); }); add_task(async function test_proxy_addresses() { function checkProxyPref(proxytype, address, port) { checkUnlockedPref(`network.proxy.${proxytype}`, address); checkUnlockedPref(`network.proxy.${proxytype}_port`, port); } await setupPolicyEngineWithJson({ policies: { Proxy: { HTTPProxy: "http.proxy.example.com:10", SSLProxy: "ssl.proxy.example.com:30", SOCKSProxy: "socks.proxy.example.com:40", }, }, }); checkProxyPref("http", "http.proxy.example.com", 10); checkProxyPref("ssl", "ssl.proxy.example.com", 30); checkProxyPref("socks", "socks.proxy.example.com", 40); // Do the same, but now use the UseHTTPProxyForAllProtocols option // and check that it takes effect. await setupPolicyEngineWithJson({ policies: { Proxy: { HTTPProxy: "http.proxy.example.com:10", // FTP support was removed in bug 1574475 // Setting an FTPProxy should result in a warning but should not fail FTPProxy: "ftp.proxy.example.com:20", SSLProxy: "ssl.proxy.example.com:30", SOCKSProxy: "socks.proxy.example.com:40", UseHTTPProxyForAllProtocols: true, }, }, }); checkProxyPref("http", "http.proxy.example.com", 10); checkProxyPref("ssl", "http.proxy.example.com", 10); checkProxyPref("socks", "http.proxy.example.com", 10); // Make sure the FTPProxy setting did nothing Assert.equal( Preferences.has("network.proxy.ftp"), false, "network.proxy.ftp should not be set" ); Assert.equal( Preferences.has("network.proxy.ftp_port"), false, "network.proxy.ftp_port should not be set" ); });