Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test runs only with pattern: os != 'android'
- Manifest: browser/modules/test/unit/xpcshell.toml
/* Any copyright is dedicated to the Public Domain.
// Tests for policies that have parsing or validation logic
// This test uses this function from toolkit/components/enterprisepolicies/tests/xpcshell/head.js
/*global setupPolicyEngineWithJson */
"use strict";
const { PoliciesPrefTracker } = ChromeUtils.importESModule(
);
const UpdatePolicyEnforcer = ChromeUtils.importESModule(
"resource:///modules/UpdatePolicyEnforcer.sys.mjs"
);
const prefName = "app.update.compulsory_restart";
async function withUnsetPref(func) {
PoliciesPrefTracker.start();
try {
await func();
} finally {
PoliciesPrefTracker.stop();
}
}
add_task(async function test_RelaunchRequired_allValid() {
await withUnsetPref(async () => {
await setupPolicyEngineWithJson({
policies: {
RelaunchRequired: {
NotificationPeriodHours: 72,
RestartTimeOfDay: {
Hour: 18,
Minute: 30,
},
},
},
});
const prefStr = Services.prefs.getStringPref(prefName, null);
Assert.ok(prefStr);
const pref = JSON.parse(prefStr);
Assert.ok(pref);
Assert.equal(
pref.NotificationPeriodHours,
72,
"Expected notification period to be correct"
);
Assert.equal(
pref.RestartTimeOfDay.Hour,
18,
"Expected restart time of day hour to be correct"
);
Assert.equal(
pref.RestartTimeOfDay.Minute,
30,
"Expected restart time of day minute to be correct"
);
Assert.ok(Services.prefs.prefIsLocked(prefName));
});
});
add_task(async function test_RelaunchRequired_defaultNotificationPeriod() {
await withUnsetPref(async () => {
await setupPolicyEngineWithJson({
policies: {
RelaunchRequired: {
RestartTimeOfDay: {
Hour: 18,
Minute: 30,
},
},
},
});
const prefStr = Services.prefs.getStringPref(
"app.update.compulsory_restart",
null
);
Assert.ok(prefStr);
const pref = JSON.parse(prefStr);
Assert.ok(pref);
Assert.equal(
pref.NotificationPeriodHours,
24,
"Expected notification period to be correct"
);
Assert.equal(
pref.RestartTimeOfDay.Hour,
18,
"Expected restart time of day hour to be correct"
);
Assert.equal(
pref.RestartTimeOfDay.Minute,
30,
"Expected restart time of day minute to be correct"
);
Assert.ok(Services.prefs.prefIsLocked(prefName));
});
});
add_task(async function test_RelaunchRequired_defaultTimeOfDay() {
await withUnsetPref(async () => {
await setupPolicyEngineWithJson({
policies: {
RelaunchRequired: {
NotificationPeriodHours: 72,
},
},
});
const prefStr = Services.prefs.getStringPref(prefName, null);
Assert.ok(prefStr);
const pref = JSON.parse(prefStr);
Assert.ok(pref);
Assert.equal(
pref.NotificationPeriodHours,
72,
"Expected notification period to be correct"
);
Assert.equal(
pref.RestartTimeOfDay.Hour,
12,
"Expected restart time of day hour to be correct"
);
Assert.equal(
pref.RestartTimeOfDay.Minute,
0,
"Expected restart time of day minute to be correct"
);
Assert.ok(Services.prefs.prefIsLocked(prefName));
});
});
add_task(async function test_RelaunchRequired_defaultAll() {
await withUnsetPref(async () => {
await setupPolicyEngineWithJson({
policies: {
RelaunchRequired: {
what: "ever",
},
},
});
const prefStr = Services.prefs.getStringPref(prefName, null);
Assert.ok(prefStr);
const pref = JSON.parse(prefStr);
Assert.ok(pref);
Assert.equal(
pref.NotificationPeriodHours,
24,
"Expected notification period to be correct"
);
Assert.equal(
pref.RestartTimeOfDay.Hour,
12,
"Expected restart time of day hour to be correct"
);
Assert.equal(
pref.RestartTimeOfDay.Minute,
0,
"Expected restart time of day minute to be correct"
);
Assert.ok(Services.prefs.prefIsLocked(prefName));
});
});
add_task(async function test_RelaunchRequired_absent() {
await withUnsetPref(async () => {
await setupPolicyEngineWithJson({
policies: {},
});
const prefStr = Services.prefs.getStringPref(prefName, null);
Assert.equal(prefStr, null);
Assert.equal(Services.prefs.prefIsLocked(prefName), false);
});
});
add_task(async function test_RelaunchRequired_roundtrip() {
await withUnsetPref(async () => {
await setupPolicyEngineWithJson({
policies: {
RelaunchRequired: {
NotificationPeriodHours: 72,
what: "ever",
RestartTimeOfDay: {
Hour: 18,
Minute: 30,
},
},
},
});
const policy = UpdatePolicyEnforcer.getCompulsoryRestartPolicy();
Assert.equal(policy.NotificationPeriodHours, 72);
Assert.equal(
policy.RestartTimeOfDay.Hour,
18,
"Expected restart time of day hour to be correct"
);
Assert.equal(
policy.RestartTimeOfDay.Minute,
30,
"Expected restart time of day minute to be correct"
);
});
});