Skip to content

Commit

Permalink
Bug 1682069 - Add test ensuring policies engine works for background …
Browse files Browse the repository at this point in the history
…tasks. r=mossop,mkaply

I've tested this explicitly with `AppUpdateURL` because that's the
policy-controlled value we care about for the first use case for
background tasks, namely the background update agent.

Differential Revision: https://phabricator.services.mozilla.com/D99846
  • Loading branch information
ncalexan committed Jan 27, 2021
1 parent 3148225 commit 84441f9
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 0 deletions.
1 change: 1 addition & 0 deletions toolkit/components/backgroundtasks/moz.build
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ XPCSHELL_TESTS_MANIFESTS += ["tests/xpcshell/xpcshell.ini"]
TESTING_JS_MODULES.backgroundtasks += [
"tests/BackgroundTask_backgroundtask_specific_pref.jsm",
"tests/BackgroundTask_crash.jsm",
"tests/BackgroundTask_policies.jsm",
"tests/BackgroundTask_wait.jsm",
]

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

var EXPORTED_SYMBOLS = ["runBackgroundTask"];

const { Checker } = ChromeUtils.import(
"resource://gre/modules/UpdateService.jsm"
);
const { EnterprisePolicyTesting } = ChromeUtils.import(
"resource://testing-common/EnterprisePolicyTesting.jsm"
);

async function runBackgroundTask(commandLine) {
let filePath = commandLine.getArgument(0);
await EnterprisePolicyTesting.setupPolicyEngineWithJson(filePath);

let checker = new Checker();
let actual = await checker.getUpdateURL();
let expected = commandLine.getArgument(1);

// 0, 1, 2, 3 are all meaningful exit codes already.
let exitCode = expected == actual ? 0 : 4;
console.error(
`runBackgroundTask: policies read AppUpdateURL '${actual}',
expected '${expected}', exiting with exitCode ${exitCode}`
);

return exitCode;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
* vim: sw=4 ts=4 sts=4 et
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

// In order to use the policy engine inside the xpcshell harness, we need to set
// up a dummy app info. In the backgroundtask itself, the application under
// test will configure real app info. This opens a possibility for some
// incompatibility, but there doesn't appear to be such an issue at this time.
const { updateAppInfo } = ChromeUtils.import(
"resource://testing-common/AppInfo.jsm"
);
updateAppInfo({
name: "XPCShell",
ID: "[email protected]",
version: "48",
platformVersion: "48",
});

const { EnterprisePolicyTesting } = ChromeUtils.import(
"resource://testing-common/EnterprisePolicyTesting.jsm"
);

// This initializes the policy engine for xpcshell tests
let policies = Cc["@mozilla.org/enterprisepolicies;1"].getService(
Ci.nsIObserver
);
policies.observe(null, "policies-startup", null);

add_task(async function test_backgroundtask_policies() {
let url = "https://www.example.com/";
await EnterprisePolicyTesting.setupPolicyEngineWithJson({
policies: {
AppUpdateURL: url,
},
});

let filePath = Services.prefs.getStringPref("browser.policies.alternatePath");

let exitCode = await do_backgroundtask("policies", {
extraArgs: [filePath, url],
});
Assert.equal(0, exitCode);
});
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

[DEFAULT]
firefox-appdir = browser
skip-if = toolkit == 'android'
head = head.js
support-files =
CatBackgroundTaskRegistrationComponents.manifest

[test_backgroundtask_exitcodes.js]
[test_backgroundtask_policies.js]
[test_backgroundtask_specific_pref.js]
[test_manifest_with_backgroundtask.js]
[test_manifest_without_backgroundtask.js]

0 comments on commit 84441f9

Please sign in to comment.