summaryrefslogtreecommitdiffstats
path: root/toolkit/components/backgroundtasks/tests/BackgroundTask_targeting.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/backgroundtasks/tests/BackgroundTask_targeting.sys.mjs')
-rw-r--r--toolkit/components/backgroundtasks/tests/BackgroundTask_targeting.sys.mjs49
1 files changed, 49 insertions, 0 deletions
diff --git a/toolkit/components/backgroundtasks/tests/BackgroundTask_targeting.sys.mjs b/toolkit/components/backgroundtasks/tests/BackgroundTask_targeting.sys.mjs
new file mode 100644
index 0000000000..fd47d18470
--- /dev/null
+++ b/toolkit/components/backgroundtasks/tests/BackgroundTask_targeting.sys.mjs
@@ -0,0 +1,49 @@
+/* -*- 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/. */
+
+import { EXIT_CODE } from "resource://gre/modules/BackgroundTasksManager.sys.mjs";
+
+import { ASRouterTargeting } from "resource:///modules/asrouter/ASRouterTargeting.sys.mjs";
+
+// Background tasks are "live" with a temporary profile that doesn't map common
+// network preferences to https://mochi.test in the way that regular testing
+// profiles do. Therefore, certain targeting getters will fail due to non-local
+// network connections. Exclude these.
+const EXCLUDED_NAMES = [
+ "region", // Queries Mozilla Location Services.
+ "needsUpdate", // Queries Balrog update server.
+];
+
+/**
+ * Return 0 (success) if all targeting getters succeed, 11 (failure)
+ * otherwise.
+ */
+export async function runBackgroundTask(commandLine) {
+ let exitCode = EXIT_CODE.SUCCESS;
+
+ // Can't use `ASRouterTargeting.getEnvironmentSnapshot`, since that
+ // ignores errors, and this is testing that every getter succeeds.
+ let target = ASRouterTargeting.Environment;
+ let environment = {};
+ for (let name of Object.keys(target)) {
+ if (EXCLUDED_NAMES.includes(name)) {
+ continue;
+ }
+
+ try {
+ console.debug(`Fetching property ${name}`);
+ environment[name] = await target[name];
+ } catch (e) {
+ exitCode = 11;
+ console.error(`Caught exception for property ${name}:`, e);
+ }
+ }
+
+ console.log(`ASRouterTargeting.Environment:`, environment);
+
+ console.error(`runBackgroundTask: exiting with status ${exitCode}`);
+
+ return exitCode;
+}