208 lines
5.3 KiB
JavaScript
208 lines
5.3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// 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(
|
|
"resource://testing-common/EnterprisePolicyTesting.sys.mjs"
|
|
);
|
|
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"
|
|
);
|
|
});
|
|
});
|