Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
-
CI results over the last 21 days
- This test runs only with pattern: (os != 'android') && (os == 'mac')
- Manifest: browser/components/enterprisepolicies/tests/xpcshell/xpcshell.toml
/* Any copyright is dedicated to the Public Domain.
"use strict";
const { macOSPoliciesParser } = ChromeUtils.importESModule(
"resource://gre/modules/policies/macOSPoliciesParser.sys.mjs"
);
function read({ managed = {}, system = {}, user = {} }, options) {
return macOSPoliciesParser.readPolicies(
{ readPolicySources: () => ({ managed, system, user }) },
options
);
}
add_task(function test_user_only() {
deepEqual(
read({ user: { EnterprisePoliciesEnabled: true, DisableFormHistory: 1 } }),
{ policies: {}, userPolicies: { DisableFormHistory: 1 } },
"User policies are returned separately"
);
});
add_task(function test_disabled_returns_null() {
equal(
read({ user: { DisableFormHistory: 1 } }),
null,
"Policies are ignored without EnterprisePoliciesEnabled"
);
equal(
read({ user: { EnterprisePoliciesEnabled: false, DisableFormHistory: 1 } }),
null,
"Policies are ignored when EnterprisePoliciesEnabled is false"
);
});
add_task(function test_sources_kept_apart() {
deepEqual(
read({
managed: { EnterprisePoliciesEnabled: true, DontCheckDefaultBrowser: 1 },
system: { DisableFormHistory: 1 },
user: { DontCheckDefaultBrowser: 0, DisablePocket: 1 },
}),
{
policies: { DontCheckDefaultBrowser: 1, DisableFormHistory: 1 },
userPolicies: { DontCheckDefaultBrowser: 0, DisablePocket: 1 },
},
"Managed and system policies are combined, user policies kept apart"
);
});
add_task(function test_user_cannot_disable_privileged_policies() {
equal(
read({
system: { EnterprisePoliciesEnabled: false, DontCheckDefaultBrowser: 1 },
user: { EnterprisePoliciesEnabled: true, DisableFormHistory: 1 },
}),
null,
"A privileged EnterprisePoliciesEnabled value wins over the user's"
);
deepEqual(
read({
managed: { EnterprisePoliciesEnabled: true, DontCheckDefaultBrowser: 1 },
user: { EnterprisePoliciesEnabled: false },
}),
{ policies: { DontCheckDefaultBrowser: 1 }, userPolicies: {} },
"The user can't turn off privileged policies"
);
});
add_task(function test_managed_beats_system() {
deepEqual(
read({
managed: { EnterprisePoliciesEnabled: true, DontCheckDefaultBrowser: 1 },
system: {
EnterprisePoliciesEnabled: false,
DontCheckDefaultBrowser: 0,
DisableFormHistory: 1,
},
}).policies,
{ DontCheckDefaultBrowser: 1, DisableFormHistory: 1 },
"Managed values win over system values on collision"
);
});
add_task(function test_user_disable_user_policies_dropped() {
deepEqual(
read({
user: {
EnterprisePoliciesEnabled: true,
DisableMacOSUserPolicies: 1,
DisableFormHistory: 1,
},
}).userPolicies,
{ DisableFormHistory: 1 },
"DisableMacOSUserPolicies is never taken from the user"
);
});
add_task(function test_flattened_keys_unflatten() {
deepEqual(
read({
managed: {
EnterprisePoliciesEnabled: true,
Homepage__Locked: 1,
},
user: { UserMessaging__SkipOnboarding: 1 },
}),
{
userPolicies: { UserMessaging: { SkipOnboarding: 1 } },
},
"Flattened keys unflatten and managed replaces the whole system policy"
);
});
add_task(function test_unparseable_source_skipped() {
// A flat key and a flattened key for the same policy make unflatten() throw.
deepEqual(
read({
system: { EnterprisePoliciesEnabled: true, DontCheckDefaultBrowser: 1 },
}),
{ policies: { DontCheckDefaultBrowser: 1 }, userPolicies: {} },
"A user source that can't be parsed is skipped"
);
});
add_task(function test_disallowed_user_only() {
equal(
read(
{ user: { EnterprisePoliciesEnabled: true, DisableFormHistory: 1 } },
{ allowUserPolicies: false }
),
null,
"User policies are never used when user policies aren't allowed"
);
});
add_task(function test_disallowed_system_and_user() {
deepEqual(
read(
{
system: { EnterprisePoliciesEnabled: true, DontCheckDefaultBrowser: 1 },
user: { DontCheckDefaultBrowser: 0, DisableFormHistory: 1 },
},
{ allowUserPolicies: false }
),
{ policies: { DontCheckDefaultBrowser: 1 }, userPolicies: null },
"Only system policies apply when user policies aren't allowed"
);
equal(
read(
{
system: { DontCheckDefaultBrowser: 1 },
user: { EnterprisePoliciesEnabled: true },
},
{ allowUserPolicies: false }
),
null,
"EnterprisePoliciesEnabled from the user is ignored when user policies aren't allowed"
);
});
add_task(function test_explicitly_allowed_user_only() {
deepEqual(
read(
{ user: { EnterprisePoliciesEnabled: true, DisableFormHistory: 1 } },
{ allowUserPolicies: true }
),
{ policies: {}, userPolicies: { DisableFormHistory: 1 } },
"User policies are returned when allowed"
);
});