1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/permission/tests/unit/test_bug808734.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,62 @@ 1.4 +const Cu = Components.utils; 1.5 +const READWRITE = "readwrite"; 1.6 +const UNKNOWN = "foobar"; 1.7 + 1.8 +var gData = [ 1.9 +// test normal expansion 1.10 +{ 1.11 + permission: "contacts", 1.12 + access: READWRITE, 1.13 + expected: ["contacts-read", "contacts-create", 1.14 + "contacts-write"] 1.15 +}, 1.16 +// test additional expansion and access not having read+create+write 1.17 +{ 1.18 + permission: "settings", 1.19 + access: READWRITE, 1.20 + expected: ["settings-read", "settings-write", 1.21 + "indexedDB-chrome-settings-read", 1.22 + "indexedDB-chrome-settings-write"] 1.23 +}, 1.24 +// test substitute 1.25 +{ 1.26 + permission: "storage", 1.27 + expected: ["indexedDB-unlimited", 1.28 + "default-persistent-storage"] 1.29 +}, 1.30 +// test unknown access 1.31 +{ 1.32 + permission: "contacts", 1.33 + access: UNKNOWN, 1.34 + expected: [] 1.35 +}, 1.36 +// test unknown permission 1.37 +{ 1.38 + permission: UNKNOWN, 1.39 + access: READWRITE, 1.40 + expected: [] 1.41 +} 1.42 +]; 1.43 + 1.44 +// check if 2 arrays contain the same elements 1.45 +function do_check_set_eq(a1, a2) { 1.46 + do_check_eq(a1.length, a2.length) 1.47 + 1.48 + Array.sort(a1); 1.49 + Array.sort(a2); 1.50 + 1.51 + for (let i = 0; i < a1.length; ++i) { 1.52 + do_check_eq(a1[i], a2[i]) 1.53 + } 1.54 +} 1.55 + 1.56 +function run_test() { 1.57 + var scope = {}; 1.58 + Cu.import("resource://gre/modules/PermissionsTable.jsm", scope); 1.59 + 1.60 + for (var i = 0; i < gData.length; i++) { 1.61 + var perms = scope.expandPermissions(gData[i].permission, 1.62 + gData[i].access); 1.63 + do_check_set_eq(perms, gData[i].expected); 1.64 + } 1.65 +}