summaryrefslogtreecommitdiffstats
path: root/modules/libpref/test/unit/test_locked_file_prefs.js
diff options
context:
space:
mode:
Diffstat (limited to 'modules/libpref/test/unit/test_locked_file_prefs.js')
-rw-r--r--modules/libpref/test/unit/test_locked_file_prefs.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/modules/libpref/test/unit/test_locked_file_prefs.js b/modules/libpref/test/unit/test_locked_file_prefs.js
new file mode 100644
index 0000000000..29b5270df5
--- /dev/null
+++ b/modules/libpref/test/unit/test_locked_file_prefs.js
@@ -0,0 +1,51 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// This file tests the `locked` attribute in default pref files.
+
+const ps = Services.prefs;
+
+// It is necessary to manually disable `xpc::IsInAutomation` since
+// `resetPrefs` will flip the preference to re-enable `once`-synced
+// preference change assertions, and also change the value of those
+// preferences.
+Services.prefs.setBoolPref(
+ "security.turn_off_all_security_so_that_viruses_can_take_over_this_computer",
+ false
+);
+
+add_test(function notChangedFromAPI() {
+ ps.resetPrefs();
+ ps.readDefaultPrefsFromFile(do_get_file("data/testPrefLocked.js"));
+ Assert.strictEqual(ps.getIntPref("testPref.unlocked.int"), 333);
+ Assert.strictEqual(ps.getIntPref("testPref.locked.int"), 444);
+
+ // Unlocked pref: can set the user value, which is used upon reading.
+ ps.setIntPref("testPref.unlocked.int", 334);
+ Assert.ok(ps.prefHasUserValue("testPref.unlocked.int"), "has a user value");
+ Assert.strictEqual(ps.getIntPref("testPref.unlocked.int"), 334);
+
+ // Locked pref: can set the user value, but the default value is used upon
+ // reading.
+ ps.setIntPref("testPref.locked.int", 445);
+ Assert.ok(ps.prefHasUserValue("testPref.locked.int"), "has a user value");
+ Assert.strictEqual(ps.getIntPref("testPref.locked.int"), 444);
+
+ // After unlocking, the user value is used.
+ ps.unlockPref("testPref.locked.int");
+ Assert.ok(ps.prefHasUserValue("testPref.locked.int"), "has a user value");
+ Assert.strictEqual(ps.getIntPref("testPref.locked.int"), 445);
+
+ run_next_test();
+});
+
+add_test(function notChangedFromUserPrefs() {
+ ps.resetPrefs();
+ ps.readDefaultPrefsFromFile(do_get_file("data/testPrefLocked.js"));
+ ps.readUserPrefsFromFile(do_get_file("data/testPrefLockedUser.js"));
+
+ Assert.strictEqual(ps.getIntPref("testPref.unlocked.int"), 333);
+ Assert.strictEqual(ps.getIntPref("testPref.locked.int"), 444);
+
+ run_next_test();
+});