test_preferences.js (6610B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 const OLD_PREFERENCES_TESTS = [ 7 { 8 policies: { 9 Preferences: { 10 "network.IDN_show_punycode": true, 11 "accessibility.force_disabled": 1, 12 "security.default_personal_cert": "Select Automatically", 13 "geo.enabled": 1, 14 "extensions.getAddons.showPane": 0, 15 }, 16 }, 17 lockedPrefs: { 18 "network.IDN_show_punycode": true, 19 "accessibility.force_disabled": 1, 20 "security.default_personal_cert": "Select Automatically", 21 "geo.enabled": true, 22 "extensions.getAddons.showPane": false, 23 }, 24 }, 25 ]; 26 27 const NEW_PREFERENCES_TESTS = [ 28 { 29 policies: { 30 Preferences: { 31 "browser.policies.test.default.boolean": { 32 Value: true, 33 Status: "default", 34 }, 35 "browser.policies.test.default.string": { 36 Value: "string", 37 Status: "default", 38 }, 39 "browser.policies.test.default.number": { 40 Value: 11, 41 Status: "default", 42 }, 43 "browser.policies.test.locked.boolean": { 44 Value: true, 45 Status: "locked", 46 }, 47 "browser.policies.test.locked.string": { 48 Value: "string", 49 Status: "locked", 50 }, 51 "browser.policies.test.locked.number": { 52 Value: 11, 53 Status: "locked", 54 }, 55 "browser.policies.test.user.boolean": { 56 Value: true, 57 Status: "user", 58 }, 59 "browser.policies.test.user.string": { 60 Value: "string", 61 Status: "user", 62 }, 63 "browser.policies.test.user.number": { 64 Value: 11, 65 Status: "user", 66 }, 67 "browser.policies.test.default.number.implicit": { 68 Value: 0, 69 Status: "default", 70 }, 71 "browser.policies.test.default.number.explicit": { 72 Value: 0, 73 Status: "default", 74 Type: "number", 75 }, 76 }, 77 }, 78 defaultPrefs: { 79 "browser.policies.test.default.boolean": true, 80 "browser.policies.test.default.string": "string", 81 "browser.policies.test.default.number": 11, 82 "browser.policies.test.default.number.implicit": false, 83 "browser.policies.test.default.number.explicit": 0, 84 }, 85 lockedPrefs: { 86 "browser.policies.test.locked.boolean": true, 87 "browser.policies.test.locked.string": "string", 88 "browser.policies.test.locked.number": 11, 89 }, 90 userPrefs: { 91 "browser.policies.test.user.boolean": true, 92 "browser.policies.test.user.string": "string", 93 "browser.policies.test.user.number": 11, 94 }, 95 }, 96 { 97 policies: { 98 Preferences: { 99 "browser.policies.test.user.boolean": { 100 Status: "clear", 101 }, 102 "browser.policies.test.user.string": { 103 Status: "clear", 104 }, 105 "browser.policies.test.user.number": { 106 Status: "clear", 107 }, 108 }, 109 }, 110 111 clearPrefs: { 112 "browser.policies.test.user.boolean": true, 113 "browser.policies.test.user.string": "string", 114 "browser.policies.test.user.number": 11, 115 }, 116 }, 117 ]; 118 119 const BAD_PREFERENCES_TESTS = [ 120 { 121 policies: { 122 Preferences: { 123 "not.a.valid.branch": { 124 Value: true, 125 Status: "default", 126 }, 127 "security.turn_off_all_security_so_that_viruses_can_take_over_this_computer": 128 { 129 Value: true, 130 Status: "default", 131 }, 132 }, 133 }, 134 defaultPrefs: { 135 "not.a.valid.branch": true, 136 "security.turn_off_all_security_so_that_viruses_can_take_over_this_computer": true, 137 }, 138 }, 139 ]; 140 141 add_task(async function test_old_preferences() { 142 for (let test of OLD_PREFERENCES_TESTS) { 143 await setupPolicyEngineWithJson({ 144 policies: test.policies, 145 }); 146 147 info("Checking policy: " + Object.keys(test.policies)[0]); 148 149 for (let [prefName, prefValue] of Object.entries(test.lockedPrefs || {})) { 150 checkLockedPref(prefName, prefValue); 151 } 152 } 153 }); 154 155 add_task(async function test_new_preferences() { 156 for (let test of NEW_PREFERENCES_TESTS) { 157 await setupPolicyEngineWithJson({ 158 policies: test.policies, 159 }); 160 161 info("Checking policy: " + Object.keys(test.policies)[0]); 162 163 for (let [prefName, prefValue] of Object.entries(test.lockedPrefs || {})) { 164 checkLockedPref(prefName, prefValue); 165 } 166 167 for (let [prefName, prefValue] of Object.entries(test.defaultPrefs || {})) { 168 checkDefaultPref(prefName, prefValue); 169 } 170 171 for (let [prefName, prefValue] of Object.entries(test.userPrefs || {})) { 172 checkUserPref(prefName, prefValue); 173 } 174 175 for (let [prefName, prefValue] of Object.entries(test.clearPrefs || {})) { 176 checkClearPref(prefName, prefValue); 177 } 178 } 179 }); 180 181 add_task(async function test_bad_preferences() { 182 for (let test of BAD_PREFERENCES_TESTS) { 183 await setupPolicyEngineWithJson({ 184 policies: test.policies, 185 }); 186 187 info("Checking policy: " + Object.keys(test.policies)[0]); 188 189 for (let prefName of Object.entries(test.defaultPrefs || {})) { 190 checkUnsetPref(prefName); 191 } 192 } 193 }); 194 195 add_task(async function test_user_default_preference() { 196 Services.prefs 197 .getDefaultBranch("") 198 .setBoolPref("browser.policies.test.override", true); 199 200 await setupPolicyEngineWithJson({ 201 policies: { 202 Preferences: { 203 "browser.policies.test.override": { 204 Value: true, 205 Status: "user", 206 }, 207 }, 208 }, 209 }); 210 211 checkUserPref("browser.policies.test.override", true); 212 }); 213 214 add_task(async function test_security_preference() { 215 await setupPolicyEngineWithJson({ 216 policies: { 217 Preferences: { 218 "security.this.should.not.work": { 219 Value: true, 220 Status: "default", 221 }, 222 }, 223 }, 224 }); 225 226 checkUnsetPref("security.this.should.not.work"); 227 }); 228 229 add_task(async function test_JSON_preferences() { 230 await setupPolicyEngineWithJson({ 231 policies: { 232 Preferences: 233 '{"browser.policies.test.default.boolean.json": {"Value": true,"Status": "default"}}', 234 }, 235 }); 236 237 checkDefaultPref("browser.policies.test.default.boolean.json", true); 238 }); 239 240 add_task(async function test_bug_1666836() { 241 await setupPolicyEngineWithJson({ 242 policies: { 243 Preferences: { 244 "browser.tabs.warnOnClose": { 245 Value: 0, 246 Status: "default", 247 }, 248 }, 249 }, 250 }); 251 252 equal( 253 Preferences.get("browser.tabs.warnOnClose"), 254 false, 255 `browser.tabs.warnOnClose should be false` 256 ); 257 });