Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

/* Any copyright is dedicated to the Public Domain.
"use strict";
const { MegalistViewModel } = ChromeUtils.importESModule(
"resource://gre/modules/megalist/MegalistViewModel.sys.mjs"
);
const EXPECTED_SNAPSHOTS_DATA = [
// header data
{
lineIndex: 0,
value: { total: 3, alerts: 0, count: 3 },
field: undefined,
},
// first record
{ lineIndex: 1, value: "example1.com", field: "origin" },
{ lineIndex: 2, value: "bob", field: "username" },
{ lineIndex: 3, concealed: true, value: "••••••••", field: "password" },
// second record
{ lineIndex: 4, value: "example2.com", field: "origin" },
{ lineIndex: 5, value: "sally", field: "username" },
{ lineIndex: 6, value: "••••••••", field: "password" },
// third record
{ lineIndex: 7, value: "example3.com", field: "origin" },
{ lineIndex: 8, value: "ned", field: "username" },
{ lineIndex: 9, concealed: true, value: "••••••••", field: "password" },
];
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [
["browser.contextual-password-manager.enabled", true],
["signon.rememberSignons", true],
],
});
registerCleanupFunction(function () {
LoginTestUtils.clearData();
});
});
add_task(async function test_viewmodel_rebuildSnapshots() {
const view = new MockView();
const viewModel = new MegalistViewModel((message, args) =>
view.messageFromViewModel(message, args)
);
info(
"Check structure of snapshots received from view model after logins are added"
);
await addMockPasswords();
await BrowserTestUtils.waitForCondition(
() => view.snapshots.length === EXPECTED_SNAPSHOTS_DATA.length,
"Received expected number of snapshots"
);
for (let snapshot of view.snapshots) {
const { lineIndex } = snapshot;
const expected = EXPECTED_SNAPSHOTS_DATA[lineIndex];
is(snapshot.field, expected.field, "field property matches.");
Assert.deepEqual(snapshot.value, expected.value, "value property matches.");
if (snapshot.field === "password") {
ok(snapshot.concealed, "password is concealed.");
}
}
LoginTestUtils.clearData();
viewModel.willDestroy();
});