/* 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" ); }); });