summaryrefslogtreecommitdiffstats
path: root/toolkit/components/extensions/test/xpcshell/test_ext_unknown_permissions.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--toolkit/components/extensions/test/xpcshell/test_ext_unknown_permissions.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_unknown_permissions.js b/toolkit/components/extensions/test/xpcshell/test_ext_unknown_permissions.js
new file mode 100644
index 0000000000..aa4a309a52
--- /dev/null
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_unknown_permissions.js
@@ -0,0 +1,60 @@
+"use strict";
+
+// This test expects and checks warnings for unknown permissions.
+ExtensionTestUtils.failOnSchemaWarnings(false);
+
+add_task(async function test_unknown_permissions() {
+ let extension = ExtensionTestUtils.loadExtension({
+ manifest: {
+ permissions: [
+ "activeTab",
+ "fooUnknownPermission",
+ "http://*/",
+ "chrome://favicon/",
+ ],
+ optional_permissions: ["chrome://favicon/", "https://example.com/"],
+ },
+ });
+
+ let { messages } = await promiseConsoleOutput(() => extension.startup());
+
+ const { WebExtensionPolicy } = Cu.getGlobalForObject(
+ ChromeUtils.importESModule("resource://gre/modules/Extension.sys.mjs")
+ );
+
+ let policy = WebExtensionPolicy.getByID(extension.id);
+ Assert.deepEqual(Array.from(policy.permissions).sort(), ["activeTab"]);
+
+ Assert.deepEqual(extension.extension.manifest.optional_permissions, [
+ "https://example.com/",
+ ]);
+
+ ok(
+ messages.some(message =>
+ /Error processing permissions\.1: Value "fooUnknownPermission" must/.test(
+ message
+ )
+ ),
+ 'Got expected error for "fooUnknownPermission"'
+ );
+
+ ok(
+ messages.some(message =>
+ /Error processing permissions\.3: Value "chrome:\/\/favicon\/" must/.test(
+ message
+ )
+ ),
+ 'Got expected error for "chrome://favicon/"'
+ );
+
+ ok(
+ messages.some(message =>
+ /Error processing optional_permissions\.0: Value "chrome:\/\/favicon\/" must/.test(
+ message
+ )
+ ),
+ "Got expected error from optional_permissions"
+ );
+
+ await extension.unload();
+});