summaryrefslogtreecommitdiffstats
path: root/extensions/permissions/test/unit/test_permmanager_getAllForPrincipal.js
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/permissions/test/unit/test_permmanager_getAllForPrincipal.js')
-rw-r--r--extensions/permissions/test/unit/test_permmanager_getAllForPrincipal.js72
1 files changed, 72 insertions, 0 deletions
diff --git a/extensions/permissions/test/unit/test_permmanager_getAllForPrincipal.js b/extensions/permissions/test/unit/test_permmanager_getAllForPrincipal.js
new file mode 100644
index 0000000000..ad9db37c91
--- /dev/null
+++ b/extensions/permissions/test/unit/test_permmanager_getAllForPrincipal.js
@@ -0,0 +1,72 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+function check_enumerator(principal, permissions) {
+ let perms = Services.perms.getAllForPrincipal(principal);
+ for (let [type, capability] of permissions) {
+ let perm = perms.shift();
+ Assert.ok(perm != null);
+ Assert.equal(perm.type, type);
+ Assert.equal(perm.capability, capability);
+ Assert.equal(perm.expireType, Services.perms.EXPIRE_NEVER);
+ }
+ Assert.ok(!perms.length);
+}
+
+function run_test() {
+ let pm = Services.perms;
+
+ let principal =
+ Services.scriptSecurityManager.createContentPrincipalFromOrigin(
+ "http://example.com"
+ );
+ let subPrincipal =
+ Services.scriptSecurityManager.createContentPrincipalFromOrigin(
+ "http://sub.example.com"
+ );
+
+ check_enumerator(principal, []);
+
+ pm.addFromPrincipal(principal, "test/getallforuri", pm.ALLOW_ACTION);
+ check_enumerator(principal, [["test/getallforuri", pm.ALLOW_ACTION]]);
+
+ // check that uris are matched exactly
+ check_enumerator(subPrincipal, []);
+
+ pm.addFromPrincipal(subPrincipal, "test/getallforuri", pm.PROMPT_ACTION);
+ pm.addFromPrincipal(subPrincipal, "test/getallforuri2", pm.DENY_ACTION);
+
+ check_enumerator(subPrincipal, [
+ ["test/getallforuri", pm.PROMPT_ACTION],
+ ["test/getallforuri2", pm.DENY_ACTION],
+ ]);
+
+ // check that the original uri list has not changed
+ check_enumerator(principal, [["test/getallforuri", pm.ALLOW_ACTION]]);
+
+ // check that UNKNOWN_ACTION permissions are ignored
+ pm.addFromPrincipal(principal, "test/getallforuri2", pm.UNKNOWN_ACTION);
+ pm.addFromPrincipal(principal, "test/getallforuri3", pm.DENY_ACTION);
+
+ check_enumerator(principal, [
+ ["test/getallforuri", pm.ALLOW_ACTION],
+ ["test/getallforuri3", pm.DENY_ACTION],
+ ]);
+
+ // check that permission updates are reflected
+ pm.addFromPrincipal(principal, "test/getallforuri", pm.PROMPT_ACTION);
+
+ check_enumerator(principal, [
+ ["test/getallforuri", pm.PROMPT_ACTION],
+ ["test/getallforuri3", pm.DENY_ACTION],
+ ]);
+
+ // check that permission removals are reflected
+ pm.removeFromPrincipal(principal, "test/getallforuri");
+
+ check_enumerator(principal, [["test/getallforuri3", pm.DENY_ACTION]]);
+
+ pm.removeAll();
+ check_enumerator(principal, []);
+ check_enumerator(subPrincipal, []);
+}