Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
Services.scriptloader.loadSubScript(
this
);
const TEST_URL_PATH = `https://example.org${DIRECTORY_PATH}form_basic_signup.html`;
add_task(
async function test_site_on_denyList_does_not_show_Relay_to_signed_in_browser() {
const sandbox = stubFxAccountsToSimulateSignedIn();
// Set up denylist for "example.org"
const rsSandbox = await stubRemoteSettingsDenyList([
{ domain: "example.org" },
]);
for (const scenario of ["available", "offered", "enabled", "disabled"]) {
await setupRelayScenario(scenario);
await BrowserTestUtils.withNewTab(
{
gBrowser,
url: TEST_URL_PATH,
},
async function (browser) {
const popup = document.getElementById("PopupAutoComplete");
await openACPopup(popup, browser, "#form-basic-username");
const relayItem = getRelayItemFromACPopup(popup);
Assert.ok(
!relayItem,
"Relay item SHOULD NOT be present in the autocomplete popup when the site is on the deny-list, even if the user is signed into the browser."
);
}
);
}
sandbox.restore();
rsSandbox.restore();
}
);
add_task(async function test_domain_allow_denylist_across_scenarios() {
const scenarios = [
{
desc: "On denylist, not on allowlist",
denylist: ["example.org"],
allowlist: [],
url: "https://example.org",
expectRelayByScenario: {
available: false,
offered: false,
enabled: false,
disabled: false,
},
},
{
desc: "On allowlist, not on denylist",
denylist: [],
allowlist: ["example.org"],
url: "https://example.org",
expectRelayByScenario: {
available: true,
offered: true,
enabled: true,
disabled: false,
},
},
{
desc: "Not on allowlist or denylist",
denylist: [],
allowlist: [],
url: "https://test1.example.com",
expectRelayByScenario: {
available: false,
offered: false,
enabled: true,
disabled: false,
},
},
{
desc: "Subdomain on denylist, parent on allowlist",
denylist: ["test2.example.com"],
allowlist: ["example.com"],
url: "https://test2.example.com",
expectRelayByScenario: {
available: false,
offered: false,
enabled: false,
disabled: false,
},
},
{
desc: "Country TLD on denylist, .com on allowlist",
denylist: ["example.com.ar"],
allowlist: ["example.com"],
url: "https://accounts.example.com.ar",
expectRelayByScenario: {
available: false,
offered: false,
enabled: false,
disabled: false,
},
},
{
desc: ".com on denylist, .com.ar on allowlist",
denylist: ["example.com"],
allowlist: ["example.com.ar"],
url: "https://accounts.example.com.ar",
expectRelayByScenario: {
available: true,
offered: true,
enabled: true,
disabled: false,
},
},
];
for (const scenario of scenarios) {
info(`Test: ${scenario.desc}`);
const sandbox = stubFxAccountsToSimulateSignedIn();
const rsSandboxDeny = await stubRemoteSettingsDenyList(
scenario.denylist.map(domain => ({ domain }))
);
const rsSandboxAllow = await stubRemoteSettingsAllowList(
scenario.allowlist.map(domain => ({ domain }))
);
for (const relayScenario of [
"available",
"offered",
"enabled",
"disabled",
]) {
await setupRelayScenario(relayScenario);
await BrowserTestUtils.withNewTab(
{
gBrowser,
url: `${scenario.url}${DIRECTORY_PATH}form_basic_signup.html`,
},
async function (browser) {
const popup = document.getElementById("PopupAutoComplete");
await openACPopup(popup, browser, "#form-basic-username");
const relayItem = getRelayItemFromACPopup(popup);
const expected = scenario.expectRelayByScenario[relayScenario];
Assert.equal(
!!relayItem,
expected,
`Relay item should${expected ? "" : " NOT"} be present (${scenario.desc}, relayScenario=${relayScenario})`
);
}
);
}
sandbox.restore();
rsSandboxDeny && rsSandboxDeny.restore();
rsSandboxAllow && rsSandboxAllow.restore();
}
});