summaryrefslogtreecommitdiffstats
path: root/extensions/permissions/test/unit/test_permmanager_getPermissionObject.js
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/permissions/test/unit/test_permmanager_getPermissionObject.js')
-rw-r--r--extensions/permissions/test/unit/test_permmanager_getPermissionObject.js98
1 files changed, 98 insertions, 0 deletions
diff --git a/extensions/permissions/test/unit/test_permmanager_getPermissionObject.js b/extensions/permissions/test/unit/test_permmanager_getPermissionObject.js
new file mode 100644
index 0000000000..78ef9ab08a
--- /dev/null
+++ b/extensions/permissions/test/unit/test_permmanager_getPermissionObject.js
@@ -0,0 +1,98 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+function getPrincipalFromURI(aURI) {
+ let ssm = Services.scriptSecurityManager;
+ let uri = NetUtil.newURI(aURI);
+ return ssm.createContentPrincipal(uri, {});
+}
+
+function getSystemPrincipal() {
+ return Services.scriptSecurityManager.getSystemPrincipal();
+}
+
+function run_test() {
+ var pm = Services.perms;
+
+ Assert.equal(
+ null,
+ pm.getPermissionObject(getSystemPrincipal(), "test/pobject", false)
+ );
+
+ let principal = getPrincipalFromURI("http://example.com");
+ let subPrincipal = getPrincipalFromURI("http://sub.example.com");
+ let subSubPrincipal = getPrincipalFromURI("http://sub.sub.example.com");
+
+ Assert.equal(null, pm.getPermissionObject(principal, "test/pobject", false));
+ Assert.equal(null, pm.getPermissionObject(principal, "test/pobject", true));
+
+ pm.addFromPrincipal(principal, "test/pobject", pm.ALLOW_ACTION);
+ var rootPerm = pm.getPermissionObject(principal, "test/pobject", false);
+ Assert.ok(rootPerm != null);
+ Assert.equal(rootPerm.principal.origin, "http://example.com");
+ Assert.equal(rootPerm.type, "test/pobject");
+ Assert.equal(rootPerm.capability, pm.ALLOW_ACTION);
+ Assert.equal(rootPerm.expireType, pm.EXPIRE_NEVER);
+
+ Assert.ok(rootPerm != null);
+ Assert.equal(rootPerm.principal.origin, "http://example.com");
+
+ var subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", true);
+ Assert.equal(null, subPerm);
+ subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", false);
+ Assert.ok(subPerm != null);
+ Assert.equal(subPerm.principal.origin, "http://example.com");
+ Assert.equal(subPerm.type, "test/pobject");
+ Assert.equal(subPerm.capability, pm.ALLOW_ACTION);
+
+ subPerm = pm.getPermissionObject(subSubPrincipal, "test/pobject", true);
+ Assert.equal(null, subPerm);
+ subPerm = pm.getPermissionObject(subSubPrincipal, "test/pobject", false);
+ Assert.ok(subPerm != null);
+ Assert.equal(subPerm.principal.origin, "http://example.com");
+
+ pm.addFromPrincipal(
+ principal,
+ "test/pobject",
+ pm.DENY_ACTION,
+ pm.EXPIRE_SESSION
+ );
+
+ // make sure permission objects are not dynamic
+ Assert.equal(rootPerm.capability, pm.ALLOW_ACTION);
+
+ // but do update on change
+ rootPerm = pm.getPermissionObject(principal, "test/pobject", true);
+ Assert.equal(rootPerm.capability, pm.DENY_ACTION);
+ Assert.equal(rootPerm.expireType, pm.EXPIRE_SESSION);
+
+ subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", false);
+ Assert.equal(subPerm.principal.origin, "http://example.com");
+ Assert.equal(subPerm.capability, pm.DENY_ACTION);
+ Assert.equal(subPerm.expireType, pm.EXPIRE_SESSION);
+
+ pm.addFromPrincipal(subPrincipal, "test/pobject", pm.PROMPT_ACTION);
+ rootPerm = pm.getPermissionObject(principal, "test/pobject", true);
+ Assert.equal(rootPerm.principal.origin, "http://example.com");
+ Assert.equal(rootPerm.capability, pm.DENY_ACTION);
+
+ subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", true);
+ Assert.equal(subPerm.principal.origin, "http://sub.example.com");
+ Assert.equal(subPerm.capability, pm.PROMPT_ACTION);
+
+ subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", false);
+ Assert.equal(subPerm.principal.origin, "http://sub.example.com");
+ Assert.equal(subPerm.capability, pm.PROMPT_ACTION);
+
+ subPerm = pm.getPermissionObject(subSubPrincipal, "test/pobject", true);
+ Assert.equal(null, subPerm);
+
+ subPerm = pm.getPermissionObject(subSubPrincipal, "test/pobject", false);
+ Assert.equal(subPerm.principal.origin, "http://sub.example.com");
+ Assert.equal(subPerm.capability, pm.PROMPT_ACTION);
+
+ pm.removeFromPrincipal(principal, "test/pobject");
+
+ rootPerm = pm.getPermissionObject(principal, "test/pobject", true);
+ Assert.equal(null, rootPerm);
+}