110 lines
3.1 KiB
JavaScript
110 lines
3.1 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
let { macOSPoliciesParser } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/policies/macOSPoliciesParser.sys.mjs"
|
|
);
|
|
|
|
add_task(async function test_object_unflatten() {
|
|
// Note: these policies are just examples and they won't actually
|
|
// run through the policy engine on this test. We're just testing
|
|
// that the unflattening algorithm produces the correct output.
|
|
let input = {
|
|
DisplayBookmarksToolbar: true,
|
|
|
|
Homepage__URL: "https://www.mozilla.org",
|
|
Homepage__Locked: "true",
|
|
Homepage__Additional__0: "https://extra-homepage-1.example.com",
|
|
Homepage__Additional__1: "https://extra-homepage-2.example.com",
|
|
|
|
WebsiteFilter__Block__0: "*://*.example.org/*",
|
|
WebsiteFilter__Block__1: "*://*.example.net/*",
|
|
WebsiteFilter__Exceptions__0: "*://*.example.org/*exception*",
|
|
|
|
Permissions__Camera__Allow__0: "https://www.example.com",
|
|
|
|
Permissions__Notifications__Allow__0: "https://www.example.com",
|
|
Permissions__Notifications__Allow__1: "https://www.example.org",
|
|
Permissions__Notifications__Block__0: "https://www.example.net",
|
|
|
|
Permissions__Notifications__BlockNewRequests: true,
|
|
Permissions__Notifications__Locked: true,
|
|
|
|
Bookmarks__0__Title: "Bookmark 1",
|
|
Bookmarks__0__URL: "https://bookmark1.example.com",
|
|
|
|
Bookmarks__1__Title: "Bookmark 2",
|
|
Bookmarks__1__URL: "https://bookmark2.example.com",
|
|
Bookmarks__1__Folder: "Folder",
|
|
};
|
|
|
|
let expected = {
|
|
DisplayBookmarksToolbar: true,
|
|
|
|
Homepage: {
|
|
URL: "https://www.mozilla.org",
|
|
Locked: "true",
|
|
Additional: [
|
|
"https://extra-homepage-1.example.com",
|
|
"https://extra-homepage-2.example.com",
|
|
],
|
|
},
|
|
|
|
WebsiteFilter: {
|
|
Block: ["*://*.example.org/*", "*://*.example.net/*"],
|
|
Exceptions: ["*://*.example.org/*exception*"],
|
|
},
|
|
|
|
Permissions: {
|
|
Camera: {
|
|
Allow: ["https://www.example.com"],
|
|
},
|
|
|
|
Notifications: {
|
|
Allow: ["https://www.example.com", "https://www.example.org"],
|
|
Block: ["https://www.example.net"],
|
|
BlockNewRequests: true,
|
|
Locked: true,
|
|
},
|
|
},
|
|
|
|
Bookmarks: [
|
|
{
|
|
Title: "Bookmark 1",
|
|
URL: "https://bookmark1.example.com",
|
|
},
|
|
{
|
|
Title: "Bookmark 2",
|
|
URL: "https://bookmark2.example.com",
|
|
Folder: "Folder",
|
|
},
|
|
],
|
|
};
|
|
|
|
let unflattened = macOSPoliciesParser.unflatten(input);
|
|
|
|
deepEqual(unflattened, expected, "Input was unflattened correctly.");
|
|
});
|
|
|
|
add_task(async function test_array_unflatten() {
|
|
let input = {
|
|
Foo__1: 1,
|
|
Foo__5: 5,
|
|
Foo__10: 10,
|
|
Foo__30: 30,
|
|
Foo__51: 51, // This one should not be included as the limit is 50
|
|
};
|
|
|
|
let unflattened = macOSPoliciesParser.unflatten(input);
|
|
equal(unflattened.Foo.length, 31, "Array size is correct");
|
|
|
|
let expected = {
|
|
Foo: [, 1, , , , 5], // eslint-disable-line no-sparse-arrays
|
|
};
|
|
expected.Foo[10] = 10;
|
|
expected.Foo[30] = 30;
|
|
|
|
deepEqual(unflattened, expected, "Array was unflattened correctly.");
|
|
});
|