From a757f6edcb31dfd8f2c0bb01356ca43de6c554ec Mon Sep 17 00:00:00 2001 From: "dwitte%stanford.edu" Date: Wed, 5 Dec 2007 07:23:14 +0000 Subject: [PATCH] add unit test for permission manager. git-svn-id: svn://10.0.0.236/trunk@240514 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/netwerk/test/unit/test_permmgr.js | 101 ++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 mozilla/netwerk/test/unit/test_permmgr.js diff --git a/mozilla/netwerk/test/unit/test_permmgr.js b/mozilla/netwerk/test/unit/test_permmgr.js new file mode 100644 index 00000000000..6b8a87a52d1 --- /dev/null +++ b/mozilla/netwerk/test/unit/test_permmgr.js @@ -0,0 +1,101 @@ +// tests nsIPermissionManager + +var hosts = [ + // format: [host, type, permission] + ["mozilla.org", "cookie", 1], + ["mozilla.org", "image", 2], + ["mozilla.org", "popup", 3], + ["mozilla.com", "cookie", 1], + ["www.mozilla.com", "cookie", 2], + ["dev.mozilla.com", "cookie", 3] +]; + +var results = [ + // format: [host, type, testPermission result, testExactPermission result] + // test defaults + ["localhost", "cookie", 0, 0], + ["spreadfirefox.com", "cookie", 0, 0], + // test different types + ["mozilla.org", "cookie", 1, 1], + ["mozilla.org", "image", 2, 2], + ["mozilla.org", "popup", 3, 3], + // test subdomains + ["www.mozilla.org", "cookie", 1, 0], + ["www.dev.mozilla.org", "cookie", 1, 0], + // test different permissions on subdomains + ["mozilla.com", "cookie", 1, 1], + ["www.mozilla.com", "cookie", 2, 2], + ["dev.mozilla.com", "cookie", 3, 3], + ["www.dev.mozilla.com", "cookie", 3, 0] +]; + +function run_test() { + var pm = Components.classes["@mozilla.org/permissionmanager;1"] + .getService(Components.interfaces.nsIPermissionManager); + + var ioService = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService); + + // nsIPermissionManager implementation is an extension; don't fail if it's not there + if (!pm) + return; + + // put a few hosts in + for (var i = 0; i < hosts.length; ++i) { + var uri = ioService.newURI("http://" + hosts[i][0], null, null); + pm.add(uri, hosts[i][1], hosts[i][2]); + } + + // test the result + for (var i = 0; i < results.length; ++i) { + var uri = ioService.newURI("http://" + results[i][0], null, null); + do_check_eq(pm.testPermission(uri, results[i][1]), results[i][2]); + do_check_eq(pm.testExactPermission(uri, results[i][1]), results[i][3]); + } + + // test the enumerator ... + var j = 0; + var perms = new Array(); + var enumerator = pm.enumerator; + while (enumerator.hasMoreElements()) { + perms[j] = enumerator.getNext().QueryInterface(Components.interfaces.nsIPermission); + ++j; + } + do_check_eq(perms.length, hosts.length); + + // ... remove all the hosts ... + for (var j = 0; j < perms.length; ++j) { + pm.remove(perms[j].host, perms[j].type); + } + + // ... ensure each and every element is equal ... + for (var i = 0; i < hosts.length; ++i) { + for (var j = 0; j < perms.length; ++j) { + if (hosts[i][0] == perms[j].host && + hosts[i][1] == perms[j].type && + hosts[i][2] == perms[j].capability) { + perms.splice(j, 1); + break; + } + } + } + do_check_eq(perms.length, 0); + + // ... and check the permmgr's empty + do_check_eq(pm.enumerator.hasMoreElements(), false); + + // test UTF8 normalization behavior: expect ASCII/ACE host encodings + var utf8 = "b\u00FCcher.dolske.org"; // "bücher.dolske.org" + var aceref = "xn--bcher-kva.dolske.org"; + var uri = ioService.newURI("http://" + utf8, null, null); + pm.add(uri, "utf8", 1); + var enumerator = pm.enumerator; + do_check_eq(enumerator.hasMoreElements(), true); + var ace = enumerator.getNext().QueryInterface(Components.interfaces.nsIPermission); + do_check_eq(ace.host, aceref); + do_check_eq(enumerator.hasMoreElements(), false); + + // test removeAll() + pm.removeAll(); + do_check_eq(pm.enumerator.hasMoreElements(), false); +}