forked from mirrors/gecko-dev
Differential Revision: https://phabricator.services.mozilla.com/D59443 --HG-- extra : moz-landing-system : lando
237 lines
6.3 KiB
JavaScript
237 lines
6.3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const { sinon } = ChromeUtils.import("resource://testing-common/Sinon.jsm");
|
|
|
|
var gTestTab;
|
|
var gContentAPI;
|
|
var gContentWindow;
|
|
|
|
add_task(setup_UITourTest);
|
|
|
|
add_UITour_task(async function test_no_user() {
|
|
const sandbox = sinon.createSandbox();
|
|
sandbox.stub(fxAccounts, "getSignedInUser").returns(null);
|
|
let result = await getConfigurationPromise("fxa");
|
|
Assert.deepEqual(result, { setup: false });
|
|
sandbox.restore();
|
|
});
|
|
|
|
add_UITour_task(async function test_no_sync_no_devices() {
|
|
const sandbox = sinon.createSandbox();
|
|
sandbox
|
|
.stub(fxAccounts, "getSignedInUser")
|
|
.returns({ email: "foo@example.com" });
|
|
sandbox.stub(fxAccounts.device, "recentDeviceList").get(() => {
|
|
return [
|
|
{
|
|
id: 1,
|
|
name: "This Device",
|
|
isCurrentDevice: true,
|
|
type: "desktop",
|
|
},
|
|
];
|
|
});
|
|
sandbox.stub(fxAccounts, "listAttachedOAuthClients").resolves([]);
|
|
sandbox.stub(fxAccounts, "hasLocalSession").resolves(true);
|
|
|
|
let result = await getConfigurationPromise("fxaConnections");
|
|
Assert.deepEqual(result, {
|
|
setup: true,
|
|
numOtherDevices: 0,
|
|
numDevicesByType: {},
|
|
accountServices: {},
|
|
});
|
|
sandbox.restore();
|
|
});
|
|
|
|
add_UITour_task(async function test_no_sync_many_devices() {
|
|
const sandbox = sinon.createSandbox();
|
|
sandbox
|
|
.stub(fxAccounts, "getSignedInUser")
|
|
.returns({ email: "foo@example.com" });
|
|
sandbox.stub(fxAccounts.device, "recentDeviceList").get(() => {
|
|
return [
|
|
{
|
|
id: 1,
|
|
name: "This Device",
|
|
isCurrentDevice: true,
|
|
type: "desktop",
|
|
},
|
|
{
|
|
id: 2,
|
|
name: "Other Device",
|
|
type: "mobile",
|
|
},
|
|
{
|
|
id: 3,
|
|
name: "My phone",
|
|
type: "phone",
|
|
},
|
|
{
|
|
id: 4,
|
|
name: "Who knows?",
|
|
},
|
|
{
|
|
id: 5,
|
|
name: "Another desktop",
|
|
type: "desktop",
|
|
},
|
|
{
|
|
id: 6,
|
|
name: "Yet Another desktop",
|
|
type: "desktop",
|
|
},
|
|
];
|
|
});
|
|
sandbox.stub(fxAccounts, "listAttachedOAuthClients").resolves([]);
|
|
sandbox.stub(fxAccounts, "hasLocalSession").resolves(true);
|
|
|
|
let result = await getConfigurationPromise("fxaConnections");
|
|
Assert.deepEqual(result, {
|
|
setup: true,
|
|
accountServices: {},
|
|
numOtherDevices: 5,
|
|
numDevicesByType: {
|
|
desktop: 2,
|
|
mobile: 1,
|
|
phone: 1,
|
|
unknown: 1,
|
|
},
|
|
});
|
|
sandbox.restore();
|
|
});
|
|
|
|
add_UITour_task(async function test_fxa_connections_no_cached_devices() {
|
|
const sandbox = sinon.createSandbox();
|
|
sandbox
|
|
.stub(fxAccounts, "getSignedInUser")
|
|
.returns({ email: "foo@example.com" });
|
|
let devicesStub = sandbox.stub(fxAccounts.device, "recentDeviceList");
|
|
devicesStub.get(() => {
|
|
// Sinon doesn't seem to support second `getters` returning a different
|
|
// value, so replace the getter here.
|
|
devicesStub.get(() => {
|
|
return [
|
|
{
|
|
id: 1,
|
|
name: "This Device",
|
|
isCurrentDevice: true,
|
|
type: "desktop",
|
|
},
|
|
{
|
|
id: 2,
|
|
name: "Other Device",
|
|
type: "mobile",
|
|
},
|
|
];
|
|
});
|
|
// and here we want to say "nothing is yet cached"
|
|
return null;
|
|
});
|
|
|
|
sandbox.stub(fxAccounts, "listAttachedOAuthClients").resolves([]);
|
|
sandbox.stub(fxAccounts, "hasLocalSession").resolves(true);
|
|
let rdlStub = sandbox.stub(fxAccounts.device, "refreshDeviceList").resolves();
|
|
|
|
let result = await getConfigurationPromise("fxaConnections");
|
|
Assert.deepEqual(result, {
|
|
setup: true,
|
|
accountServices: {},
|
|
numOtherDevices: 1,
|
|
numDevicesByType: {
|
|
mobile: 1,
|
|
},
|
|
});
|
|
Assert.ok(rdlStub.called);
|
|
sandbox.restore();
|
|
});
|
|
|
|
add_UITour_task(async function test_account_connections() {
|
|
const sandbox = sinon.createSandbox();
|
|
sandbox
|
|
.stub(fxAccounts, "getSignedInUser")
|
|
.returns({ email: "foo@example.com" });
|
|
sandbox.stub(fxAccounts.device, "recentDeviceList").get(() => []);
|
|
sandbox.stub(fxAccounts, "listAttachedOAuthClients").resolves([
|
|
{
|
|
id: "802d56ef2a9af9fa",
|
|
lastAccessedDaysAgo: 2,
|
|
},
|
|
{
|
|
id: "1f30e32975ae5112",
|
|
lastAccessedDaysAgo: 10,
|
|
},
|
|
{
|
|
id: null,
|
|
name: "Some browser",
|
|
lastAccessedDaysAgo: 10,
|
|
},
|
|
{
|
|
id: "null-last-accessed",
|
|
lastAccessedDaysAgo: null,
|
|
},
|
|
]);
|
|
Assert.deepEqual(await getConfigurationPromise("fxaConnections"), {
|
|
setup: true,
|
|
numOtherDevices: 0,
|
|
numDevicesByType: {},
|
|
accountServices: {
|
|
"802d56ef2a9af9fa": {
|
|
id: "802d56ef2a9af9fa",
|
|
lastAccessedWeeksAgo: 0,
|
|
},
|
|
"1f30e32975ae5112": {
|
|
id: "1f30e32975ae5112",
|
|
lastAccessedWeeksAgo: 1,
|
|
},
|
|
"null-last-accessed": {
|
|
id: "null-last-accessed",
|
|
lastAccessedWeeksAgo: null,
|
|
},
|
|
},
|
|
});
|
|
sandbox.restore();
|
|
});
|
|
|
|
add_UITour_task(async function test_sync() {
|
|
const sandbox = sinon.createSandbox();
|
|
sandbox
|
|
.stub(fxAccounts, "getSignedInUser")
|
|
.returns({ email: "foo@example.com" });
|
|
sandbox.stub(fxAccounts.device, "recentDeviceList").get(() => []);
|
|
sandbox.stub(fxAccounts, "listAttachedOAuthClients").resolves([]);
|
|
sandbox.stub(fxAccounts, "hasLocalSession").resolves(true);
|
|
Services.prefs.setCharPref("services.sync.username", "tests@mozilla.org");
|
|
Services.prefs.setIntPref("services.sync.clients.devices.desktop", 4);
|
|
Services.prefs.setIntPref("services.sync.clients.devices.mobile", 5);
|
|
Services.prefs.setIntPref("services.sync.numClients", 9);
|
|
|
|
Assert.deepEqual(await getConfigurationPromise("fxa"), {
|
|
setup: true,
|
|
accountStateOK: true,
|
|
browserServices: {
|
|
sync: {
|
|
setup: true,
|
|
mobileDevices: 5,
|
|
desktopDevices: 4,
|
|
totalDevices: 9,
|
|
},
|
|
},
|
|
});
|
|
Services.prefs.clearUserPref("services.sync.username");
|
|
Services.prefs.clearUserPref("services.sync.clients.devices.desktop");
|
|
Services.prefs.clearUserPref("services.sync.clients.devices.mobile");
|
|
Services.prefs.clearUserPref("services.sync.numClients");
|
|
sandbox.restore();
|
|
});
|
|
|
|
add_UITour_task(async function test_fxa_fails() {
|
|
const sandbox = sinon.createSandbox();
|
|
sandbox.stub(fxAccounts, "getSignedInUser").throws();
|
|
let result = await getConfigurationPromise("fxa");
|
|
Assert.deepEqual(result, {});
|
|
sandbox.restore();
|
|
});
|