diff options
Diffstat (limited to 'dom/apps/tests/unit')
-rw-r--r-- | dom/apps/tests/unit/test_manifestHelper.js | 23 | ||||
-rw-r--r-- | dom/apps/tests/unit/test_manifestSanitizer.js | 63 | ||||
-rw-r--r-- | dom/apps/tests/unit/test_moziapplication.js | 64 | ||||
-rw-r--r-- | dom/apps/tests/unit/xpcshell.ini | 5 |
4 files changed, 155 insertions, 0 deletions
diff --git a/dom/apps/tests/unit/test_manifestHelper.js b/dom/apps/tests/unit/test_manifestHelper.js new file mode 100644 index 000000000..092287a7f --- /dev/null +++ b/dom/apps/tests/unit/test_manifestHelper.js @@ -0,0 +1,23 @@ +// Test that W3C start_url takes precedence over mozApps launch_path +function run_test() { + Components.utils.import("resource:///modules/AppsUtils.jsm"); + + let manifest1 = { + launch_path: "other.html" + }; + + let manifest2 = { + start_url: "start.html", + launch_path: "other.html" + }; + + var helper = new ManifestHelper(manifest1, "http://foo.com", + "http://foo.com/manifest.json"); + var path = helper.fullLaunchPath(); + do_check_true(path == "http://foo.com/other.html"); + + helper = new ManifestHelper(manifest2, "http://foo.com", + "http://foo.com/manifest.json"); + path = helper.fullLaunchPath(); + do_check_true(path == "http://foo.com/start.html"); +} diff --git a/dom/apps/tests/unit/test_manifestSanitizer.js b/dom/apps/tests/unit/test_manifestSanitizer.js new file mode 100644 index 000000000..4b0c999a7 --- /dev/null +++ b/dom/apps/tests/unit/test_manifestSanitizer.js @@ -0,0 +1,63 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +function testEntryPoint(aRoot) { + do_check_true(aRoot.name == "hello world"); + do_check_true(aRoot.description == "A bold name"); + do_check_true(aRoot.developer.name == "Blink Inc."); + + let permissions = aRoot.permissions; + do_check_true(permissions.contacts.description == "Required for autocompletion in the share screen"); + do_check_true(permissions.alarms.description == "Required to schedule notifications"); +} + +function run_test() { + Components.utils.import("resource:///modules/AppsUtils.jsm"); + + do_check_true(!!AppsUtils); + + // Test manifest, with one entry point. + let manifest = { + name: "hello <b>world</b>", + description: "A bold name", + developer: { + name: "<blink>Blink</blink> Inc.", + url: "http://blink.org" + }, + permissions : { + "contacts": { + "description": "Required for autocompletion in the <a href='http://shareme.com'>share</a> screen", + "access": "readcreate" + }, + "alarms": { + "description": "Required to schedule notifications" + } + }, + + entry_points: { + "subapp": { + name: "hello <b>world</b>", + description: "A bold name", + developer: { + name: "<blink>Blink</blink> Inc.", + url: "http://blink.org" + }, + permissions : { + "contacts": { + "description": "Required for autocompletion in the <a href='http://shareme.com'>share</a> screen", + "access": "readcreate" + }, + "alarms": { + "description": "Required to schedule notifications" + } + } + } + } + } + + AppsUtils.sanitizeManifest(manifest); + + // Check the main section and the subapp entry point. + testEntryPoint(manifest); + testEntryPoint(manifest.entry_points.subapp); +} diff --git a/dom/apps/tests/unit/test_moziapplication.js b/dom/apps/tests/unit/test_moziapplication.js new file mode 100644 index 000000000..dbcf2372a --- /dev/null +++ b/dom/apps/tests/unit/test_moziapplication.js @@ -0,0 +1,64 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +var {classes: Cc, interfaces: Ci, utils: Cu} = Components; + +Cu.import("resource:///modules/AppsUtils.jsm"); + +add_test(() => { + let app = { + name: "TestApp", + csp: "aCsp", + installOrigin: "http://installorigin.com", + origin: "http://www.example.com", + installTime: Date.now(), + manifestURL: "http://www.example.com/manifest.webapp", + appStatus: Ci.nsIPrincipal.APP_STATUS_NOT_INSTALLED, + removable: false, + id: 123, + localId: 123, + basePath: "/", + progress: 1.0, + installState: "installed", + downloadAvailable: false, + downloading: false, + lastUpdateCheck: Date.now(), + updateTime: Date.now(), + etag: "aEtag", + packageEtag: "aPackageEtag", + manifestHash: "aManifestHash", + packageHash: "aPackageHash", + staged: false, + installerAppId: 345, + installerIsBrowser: false, + storeId: "aStoreId", + storeVersion: 1, + role: "aRole", + kind: "aKind", + enabled: true, + sideloaded: false + }; + + let mozapp = new mozIApplication(app); + + Object.keys(app).forEach((key) => { + if (key == "principal") { + return; + } + Assert.equal(app[key], mozapp[key], + "app[" + key + "] should be equal to mozapp[" + key + "]"); + }); + + Assert.ok(mozapp.principal, "app principal should exist"); + let expectedPrincipalOrigin = app.origin + "^appId=" + app.localId; + Assert.equal(mozapp.principal.origin, expectedPrincipalOrigin, + "app principal origin ok"); + Assert.equal(mozapp.principal.appId, app.localId, "app principal appId ok"); + Assert.equal(mozapp.principal.isInIsolatedMozBrowserElement, false, + "app principal isInIsolatedMozBrowserElement ok"); + run_next_test(); +}); + +function run_test() { + run_next_test(); +} diff --git a/dom/apps/tests/unit/xpcshell.ini b/dom/apps/tests/unit/xpcshell.ini new file mode 100644 index 000000000..9745b198f --- /dev/null +++ b/dom/apps/tests/unit/xpcshell.ini @@ -0,0 +1,5 @@ +[DEFAULT] + +[test_manifestSanitizer.js] +[test_manifestHelper.js] +[test_moziapplication.js] |