Revision control
Copy as Markdown
Other Tools
/* Any copyright is dedicated to the Public Domain.
"use strict";
const OLD_PREFERENCES_TESTS = [
{
policies: {
Preferences: {
"network.IDN_show_punycode": true,
"accessibility.force_disabled": 1,
"security.default_personal_cert": "Select Automatically",
// "geo.enabled": 1,
"extensions.getAddons.showPane": 0,
},
},
lockedPrefs: {
"network.IDN_show_punycode": true,
"accessibility.force_disabled": 1,
"security.default_personal_cert": "Select Automatically",
// "geo.enabled": true,
"extensions.getAddons.showPane": false,
},
},
];
const NEW_PREFERENCES_TESTS = [
{
policies: {
Preferences: {
"browser.policies.test.default.boolean": {
Value: true,
Status: "default",
},
"browser.policies.test.default.string": {
Value: "string",
Status: "default",
},
"browser.policies.test.default.number": {
Value: 11,
Status: "default",
},
"browser.policies.test.locked.boolean": {
Value: true,
Status: "locked",
},
"browser.policies.test.locked.string": {
Value: "string",
Status: "locked",
},
"browser.policies.test.locked.number": {
Value: 11,
Status: "locked",
},
"browser.policies.test.user.boolean": {
Value: true,
Status: "user",
},
"browser.policies.test.user.string": {
Value: "string",
Status: "user",
},
"browser.policies.test.user.number": {
Value: 11,
Status: "user",
},
"mail.openMessageBehavior": {
Value: 1,
Status: "locked",
},
"mailnews.display.prefer_plaintext": {
Value: true,
Status: "locked",
},
"chat.enabled": {
Value: false,
Status: "locked",
},
"calendar.agenda.days": {
Value: 21,
Status: "locked",
},
},
},
defaultPrefs: {
"browser.policies.test.default.boolean": true,
"browser.policies.test.default.string": "string",
"browser.policies.test.default.number": 11,
},
lockedPrefs: {
"browser.policies.test.locked.boolean": true,
"browser.policies.test.locked.string": "string",
"browser.policies.test.locked.number": 11,
"mail.openMessageBehavior": 1,
"mailnews.display.prefer_plaintext": true,
"chat.enabled": false,
"calendar.agenda.days": 21,
},
userPrefs: {
"browser.policies.test.user.boolean": true,
"browser.policies.test.user.string": "string",
"browser.policies.test.user.number": 11,
},
},
{
policies: {
Preferences: {
"browser.policies.test.user.boolean": {
Status: "clear",
},
"browser.policies.test.user.string": {
Status: "clear",
},
"browser.policies.test.user.number": {
Status: "clear",
},
},
},
clearPrefs: {
"browser.policies.test.user.boolean": true,
"browser.policies.test.user.string": "string",
"browser.policies.test.user.number": 11,
},
},
];
const BAD_PREFERENCES_TESTS = [
{
policies: {
Preferences: {
"not.a.valid.branch": {
Value: true,
Status: "default",
},
"security.turn_off_all_security_so_that_viruses_can_take_over_this_computer":
{
Value: true,
Status: "default",
},
},
},
defaultPrefs: {
"not.a.valid.branch": true,
"security.turn_off_all_security_so_that_viruses_can_take_over_this_computer": true,
},
},
];
add_task(async function test_old_preferences() {
for (const test of OLD_PREFERENCES_TESTS) {
await setupPolicyEngineWithJson({
policies: test.policies,
});
info("Checking policy: " + Object.keys(test.policies)[0]);
for (const [prefName, prefValue] of Object.entries(
test.lockedPrefs || {}
)) {
checkLockedPref(prefName, prefValue);
}
}
});
add_task(async function test_new_preferences() {
for (const test of NEW_PREFERENCES_TESTS) {
await setupPolicyEngineWithJson({
policies: test.policies,
});
info("Checking policy: " + Object.keys(test.policies)[0]);
for (const [prefName, prefValue] of Object.entries(
test.lockedPrefs || {}
)) {
checkLockedPref(prefName, prefValue);
}
for (const [prefName, prefValue] of Object.entries(
test.defaultPrefs || {}
)) {
checkDefaultPref(prefName, prefValue);
}
for (const [prefName, prefValue] of Object.entries(test.userPrefs || {})) {
checkUserPref(prefName, prefValue);
}
for (const [prefName, prefValue] of Object.entries(test.clearPrefs || {})) {
checkClearPref(prefName, prefValue);
}
}
});
add_task(async function test_bad_preferences() {
for (const test of BAD_PREFERENCES_TESTS) {
await setupPolicyEngineWithJson({
policies: test.policies,
});
info("Checking policy: " + Object.keys(test.policies)[0]);
for (const prefName of Object.entries(test.defaultPrefs || {})) {
checkUnsetPref(prefName);
}
}
});
add_task(async function test_user_default_preference() {
Services.prefs
.getDefaultBranch("")
.setBoolPref("browser.policies.test.override", true);
await setupPolicyEngineWithJson({
policies: {
Preferences: {
"browser.policies.test.override": {
Value: true,
Status: "user",
},
},
},
});
checkUserPref("browser.policies.test.override", true);
});
add_task(async function test_security_preference() {
await setupPolicyEngineWithJson({
policies: {
Preferences: {
"security.this.should.not.work": {
Value: true,
Status: "default",
},
},
},
});
checkUnsetPref("security.this.should.not.work");
});
add_task(async function test_bug_1666836() {
await setupPolicyEngineWithJson({
policies: {
Preferences: {
"browser.tabs.warnOnClose": {
Value: 0,
Status: "default",
},
},
},
});
equal(
Preferences.get("browser.tabs.warnOnClose"),
false,
`browser.tabs.warnOnClose should be false`
);
});