mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-21 03:43:16 +09:00
196 lines
7.7 KiB
JavaScript
196 lines
7.7 KiB
JavaScript
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
|
/* vim: set ts=2 et sw=2 tw=80: */
|
|
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/**
|
|
* Tests getLoginSavingEnabled, setLoginSavingEnabled, and getAllDisabledHosts.
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
// Tests
|
|
|
|
/**
|
|
* Tests setLoginSavingEnabled and getAllDisabledHosts.
|
|
*/
|
|
add_task(function test_setLoginSavingEnabled_getAllDisabledHosts()
|
|
{
|
|
// Add some disabled hosts, and verify that different schemes for the same
|
|
// domain are considered different hosts.
|
|
let hostname1 = "http://disabled1.example.com";
|
|
let hostname2 = "http://disabled2.example.com";
|
|
let hostname3 = "https://disabled2.example.com";
|
|
Services.logins.setLoginSavingEnabled(hostname1, false);
|
|
Services.logins.setLoginSavingEnabled(hostname2, false);
|
|
Services.logins.setLoginSavingEnabled(hostname3, false);
|
|
|
|
LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(),
|
|
[hostname1, hostname2, hostname3]);
|
|
|
|
// Adding the same host twice should not result in an error.
|
|
Services.logins.setLoginSavingEnabled(hostname2, false);
|
|
LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(),
|
|
[hostname1, hostname2, hostname3]);
|
|
|
|
// Removing a disabled host should work.
|
|
Services.logins.setLoginSavingEnabled(hostname2, true);
|
|
LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(),
|
|
[hostname1, hostname3]);
|
|
|
|
// Removing the last disabled host should work.
|
|
Services.logins.setLoginSavingEnabled(hostname1, true);
|
|
Services.logins.setLoginSavingEnabled(hostname3, true);
|
|
LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(),
|
|
[]);
|
|
});
|
|
|
|
/**
|
|
* Tests setLoginSavingEnabled and getLoginSavingEnabled.
|
|
*/
|
|
add_task(function test_setLoginSavingEnabled_getLoginSavingEnabled()
|
|
{
|
|
let hostname1 = "http://disabled.example.com";
|
|
let hostname2 = "https://disabled.example.com";
|
|
|
|
// Hosts should not be disabled by default.
|
|
do_check_true(Services.logins.getLoginSavingEnabled(hostname1));
|
|
do_check_true(Services.logins.getLoginSavingEnabled(hostname2));
|
|
|
|
// Test setting initial values.
|
|
Services.logins.setLoginSavingEnabled(hostname1, false);
|
|
Services.logins.setLoginSavingEnabled(hostname2, true);
|
|
do_check_false(Services.logins.getLoginSavingEnabled(hostname1));
|
|
do_check_true(Services.logins.getLoginSavingEnabled(hostname2));
|
|
|
|
// Test changing values.
|
|
Services.logins.setLoginSavingEnabled(hostname1, true);
|
|
Services.logins.setLoginSavingEnabled(hostname2, false);
|
|
do_check_true(Services.logins.getLoginSavingEnabled(hostname1));
|
|
do_check_false(Services.logins.getLoginSavingEnabled(hostname2));
|
|
|
|
// Clean up.
|
|
Services.logins.setLoginSavingEnabled(hostname2, true);
|
|
});
|
|
|
|
/**
|
|
* Tests setLoginSavingEnabled with invalid NUL characters in the hostname.
|
|
*/
|
|
add_task(function test_setLoginSavingEnabled_invalid_characters()
|
|
{
|
|
let hostname = "http://null\0X.example.com";
|
|
Assert.throws(() => Services.logins.setLoginSavingEnabled(hostname, false),
|
|
/Invalid hostname/);
|
|
|
|
// Verify that no data was stored by the previous call.
|
|
LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(),
|
|
[]);
|
|
});
|
|
|
|
/**
|
|
* Tests different values of the "signon.rememberSignons" property.
|
|
*/
|
|
add_task(function test_rememberSignons()
|
|
{
|
|
let hostname1 = "http://example.com";
|
|
let hostname2 = "http://localhost";
|
|
|
|
// The default value for the preference should be true.
|
|
do_check_true(Services.prefs.getBoolPref("signon.rememberSignons"));
|
|
|
|
// Hosts should not be disabled by default.
|
|
Services.logins.setLoginSavingEnabled(hostname1, false);
|
|
do_check_false(Services.logins.getLoginSavingEnabled(hostname1));
|
|
do_check_true(Services.logins.getLoginSavingEnabled(hostname2));
|
|
|
|
// Disable storage of saved passwords globally.
|
|
Services.prefs.setBoolPref("signon.rememberSignons", false);
|
|
do_register_cleanup(
|
|
() => Services.prefs.clearUserPref("signon.rememberSignons"));
|
|
|
|
// All hosts should now appear disabled.
|
|
do_check_false(Services.logins.getLoginSavingEnabled(hostname1));
|
|
do_check_false(Services.logins.getLoginSavingEnabled(hostname2));
|
|
|
|
// The list of disabled hosts should be unaltered.
|
|
LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(),
|
|
[hostname1]);
|
|
|
|
// Changing values with the preference set should work.
|
|
Services.logins.setLoginSavingEnabled(hostname1, true);
|
|
Services.logins.setLoginSavingEnabled(hostname2, false);
|
|
|
|
// All hosts should still appear disabled.
|
|
do_check_false(Services.logins.getLoginSavingEnabled(hostname1));
|
|
do_check_false(Services.logins.getLoginSavingEnabled(hostname2));
|
|
|
|
// The list of disabled hosts should have been changed.
|
|
LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(),
|
|
[hostname2]);
|
|
|
|
// Enable storage of saved passwords again.
|
|
Services.prefs.setBoolPref("signon.rememberSignons", true);
|
|
|
|
// Hosts should now appear enabled as requested.
|
|
do_check_true(Services.logins.getLoginSavingEnabled(hostname1));
|
|
do_check_false(Services.logins.getLoginSavingEnabled(hostname2));
|
|
|
|
// Clean up.
|
|
Services.logins.setLoginSavingEnabled(hostname2, true);
|
|
LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(),
|
|
[]);
|
|
});
|
|
|
|
/**
|
|
* Tests storing disabled hosts with non-ASCII characters where IDN is supported.
|
|
*/
|
|
add_task(function* test_storage_setLoginSavingEnabled_nonascii_IDN_is_supported()
|
|
{
|
|
let hostname = "http://大.net";
|
|
let encoding = "http://xn--pss.net";
|
|
|
|
// Test adding disabled host with nonascii URL (http://大.net).
|
|
Services.logins.setLoginSavingEnabled(hostname, false);
|
|
yield* LoginTestUtils.reloadData();
|
|
Assert.equal(Services.logins.getLoginSavingEnabled(hostname), false);
|
|
Assert.equal(Services.logins.getLoginSavingEnabled(encoding), false);
|
|
LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(), [hostname]);
|
|
|
|
LoginTestUtils.clearData();
|
|
|
|
// Test adding disabled host with IDN ("http://xn--pss.net").
|
|
Services.logins.setLoginSavingEnabled(encoding, false);
|
|
yield* LoginTestUtils.reloadData();
|
|
Assert.equal(Services.logins.getLoginSavingEnabled(hostname), false);
|
|
Assert.equal(Services.logins.getLoginSavingEnabled(encoding), false);
|
|
LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(), [hostname]);
|
|
|
|
LoginTestUtils.clearData();
|
|
});
|
|
|
|
/**
|
|
* Tests storing disabled hosts with non-ASCII characters where IDN is not supported.
|
|
*/
|
|
add_task(function* test_storage_setLoginSavingEnabled_nonascii_IDN_not_supported()
|
|
{
|
|
let hostname = "http://√.com";
|
|
let encoding = "http://xn--19g.com";
|
|
|
|
// Test adding disabled host with nonascii URL (http://√.com).
|
|
Services.logins.setLoginSavingEnabled(hostname, false);
|
|
yield* LoginTestUtils.reloadData();
|
|
Assert.equal(Services.logins.getLoginSavingEnabled(hostname), false);
|
|
Assert.equal(Services.logins.getLoginSavingEnabled(encoding), false);
|
|
LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(), [encoding]);
|
|
|
|
LoginTestUtils.clearData();
|
|
|
|
// Test adding disabled host with IDN ("http://xn--19g.com").
|
|
Services.logins.setLoginSavingEnabled(encoding, false);
|
|
yield* LoginTestUtils.reloadData();
|
|
Assert.equal(Services.logins.getLoginSavingEnabled(hostname), false);
|
|
Assert.equal(Services.logins.getLoginSavingEnabled(encoding), false);
|
|
LoginTestUtils.assertDisabledHostsEqual(Services.logins.getAllDisabledHosts(), [encoding]);
|
|
|
|
LoginTestUtils.clearData();
|
|
});
|