summaryrefslogtreecommitdiffstats
path: root/comm/mail/services/sync/test/unit/test_identity_store.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/services/sync/test/unit/test_identity_store.js')
-rw-r--r--comm/mail/services/sync/test/unit/test_identity_store.js222
1 files changed, 222 insertions, 0 deletions
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);
+});