From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../services/sync/test/unit/test_identity_store.js | 222 +++++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 comm/mail/services/sync/test/unit/test_identity_store.js (limited to 'comm/mail/services/sync/test/unit/test_identity_store.js') diff --git a/comm/mail/services/sync/test/unit/test_identity_store.js b/comm/mail/services/sync/test/unit/test_identity_store.js new file mode 100644 index 0000000000..42d4a0f356 --- /dev/null +++ b/comm/mail/services/sync/test/unit/test_identity_store.js @@ -0,0 +1,222 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at http://mozilla.org/MPL/2.0/. */ + +do_get_profile(); + +const { MailServices } = ChromeUtils.import( + "resource:///modules/MailServices.jsm" +); +const { IdentitiesEngine, IdentityRecord } = ChromeUtils.importESModule( + "resource://services-sync/engines/identities.sys.mjs" +); +const { Service } = ChromeUtils.importESModule( + "resource://services-sync/service.sys.mjs" +); +const { TestUtils } = ChromeUtils.import( + "resource://testing-common/TestUtils.jsm" +); + +let engine, store, tracker; +let accountA, smtpServerA, identityA; +let accountB, identityB; + +add_setup(async function () { + engine = new IdentitiesEngine(Service); + await engine.initialize(); + store = engine._store; + + try { + // Ensure there is a local mail account... + MailServices.accounts.localFoldersServer; + } catch { + // ... if not, make one. + MailServices.accounts.createLocalMailAccount(); + } + + // Mail account and identity. + + accountA = MailServices.accounts.createAccount(); + accountA.incomingServer = MailServices.accounts.createIncomingServer( + "username", + "hostname", + "imap" + ); + smtpServerA = MailServices.smtp.createServer(); + + identityA = MailServices.accounts.createIdentity(); + identityA.email = "username@hostname"; + identityA.fullName = "User"; + identityA.smtpServerKey = smtpServerA.key; + accountA.addIdentity(identityA); + + Assert.ok(identityA.UID); + Assert.equal( + Services.prefs.getStringPref(`mail.identity.${identityA.key}.uid`), + identityA.UID + ); + + // NNTP account and identity. NNTP isn't currently supported, so this test + // will prove the identity isn't synced. + + accountB = MailServices.accounts.createAccount(); + accountB.incomingServer = MailServices.accounts.createIncomingServer( + "username", + "hostname", + "nntp" + ); + + identityB = MailServices.accounts.createIdentity(); + identityB.email = "username@hostname"; + identityB.fullName = "user"; + accountB.addIdentity(identityB); + + // Sanity check. + + Assert.equal(MailServices.accounts.allIdentities.length, 2); + Assert.equal(accountA.identities.length, 1); + Assert.equal(accountA.defaultIdentity.key, identityA.key); + Assert.equal(accountB.identities.length, 1); + Assert.equal(accountB.defaultIdentity.key, identityB.key); +}); + +add_task(async function testGetAllIDs() { + Assert.deepEqual(await store.getAllIDs(), { + [identityA.UID]: true, + }); +}); + +add_task(async function testItemExists() { + Assert.equal(await store.itemExists(identityA.UID), true); +}); + +add_task(async function testCreateRecord() { + let record = await store.createRecord(identityA.UID); + Assert.ok(record instanceof IdentityRecord); + Assert.equal(record.id, identityA.UID); + Assert.deepEqual(record.accounts, [ + { + id: accountA.incomingServer.UID, + isDefault: true, + }, + ]); + Assert.deepEqual(record.prefs, { + attachSignature: false, + attachVCard: false, + autoQuote: true, + catchAll: false, + catchAllHint: null, + composeHtml: true, + email: "username@hostname", + escapedVCard: null, + fullName: "User", + htmlSigFormat: false, + htmlSigText: "", + label: "", + organization: "", + replyOnTop: 0, + replyTo: null, + sigBottom: true, + sigOnForward: false, + sigOnReply: true, + }); + Assert.equal(record.smtpID, smtpServerA.UID); +}); + +add_task(async function testCreateDeletedRecord() { + let fakeID = "12345678-1234-1234-1234-123456789012"; + let record = await store.createRecord(fakeID); + Assert.ok(record instanceof IdentityRecord); + Assert.equal(record.id, fakeID); + Assert.equal(record.deleted, true); +}); + +add_task(async function testSyncRecords() { + let newIdentityID = newUID(); + await store.applyIncoming({ + id: newIdentityID, + accounts: [ + { + id: accountA.incomingServer.UID, + isDefault: false, + }, + ], + prefs: { + attachSignature: false, + attachVCard: false, + autoQuote: true, + catchAll: false, + catchAllHint: null, + composeHtml: true, + email: "username@hostname", + escapedVCard: null, + fullName: "User", + htmlSigFormat: false, + htmlSigText: "", + label: "", + organization: "", + replyOnTop: 0, + replyTo: null, + sigBottom: true, + sigOnForward: false, + sigOnReply: true, + }, + smtpID: smtpServerA.UID, + }); + + Assert.equal(MailServices.accounts.allIdentities.length, 3); + Assert.equal(accountA.identities.length, 2); + + let newIdentity = MailServices.accounts.allIdentities.find( + i => i.UID == newIdentityID + ); + Assert.equal(newIdentity.email, "username@hostname"); + Assert.equal(newIdentity.fullName, "User"); + Assert.equal(newIdentity.smtpServerKey, smtpServerA.key); + Assert.equal(accountA.defaultIdentity.key, identityA.key); + + await store.applyIncoming({ + id: newIdentityID, + accounts: [ + { + id: accountA.incomingServer.UID, + isDefault: true, + }, + ], + prefs: { + attachSignature: false, + attachVCard: false, + autoQuote: true, + catchAll: false, + catchAllHint: null, + composeHtml: true, + email: "username@hostname", + escapedVCard: null, + fullName: "User (changed)", + htmlSigFormat: false, + htmlSigText: "", + label: "", + organization: "", + replyOnTop: 0, + replyTo: null, + sigBottom: true, + sigOnForward: false, + sigOnReply: true, + }, + smtpID: smtpServerA.UID, + }); + + Assert.equal(newIdentity.fullName, "User (changed)"); + Assert.equal(accountA.defaultIdentity.key, newIdentity.key); + + await store.applyIncoming({ + id: newIdentityID, + deleted: true, + }); + + Assert.equal(MailServices.accounts.allIdentities.length, 2); + Assert.equal(accountA.identities.length, 1); + Assert.equal(accountA.defaultIdentity.key, identityA.key); + Assert.equal(accountB.identities.length, 1); + Assert.equal(accountB.defaultIdentity.key, identityB.key); +}); -- cgit v1.2.3