tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 });