Revision control

Copy as Markdown

Other Tools

/* 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/. */
function subtestUID(type) {
const UUID_REGEXP =
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
// Create a server and check it the UID is set when accessed.
const serverA = MailServices.accounts.createIncomingServer(
"userA",
"hostA",
type
);
Assert.stringMatches(
serverA.UID,
UUID_REGEXP,
"server A's UID should exist and be a UUID"
);
Assert.equal(
Services.prefs.getStringPref(`mail.server.${serverA.key}.uid`),
serverA.UID,
"server A's UID should be saved to the preferences"
);
Assert.throws(
() => (serverA.UID = "00001111-2222-3333-4444-555566667777"),
/NS_ERROR_ABORT/,
"server A's UID should be unchangeable after it is set"
);
// Create a second server and check the two UIDs don't match.
const serverB = MailServices.accounts.createIncomingServer(
"userB",
"hostB",
type
);
Assert.stringMatches(
serverB.UID,
UUID_REGEXP,
"server B's UID should exist and be a UUID"
);
Assert.equal(
Services.prefs.getStringPref(`mail.server.${serverB.key}.uid`),
serverB.UID,
"server B's UID should be saved to the preferences"
);
Assert.notEqual(
serverB.UID,
serverA.UID,
"server B's UID should not be the same as server A's"
);
// Create a third server and set the UID before it is accessed.
const serverC = MailServices.accounts.createIncomingServer(
"userC",
"hostC",
type
);
serverC.UID = "11112222-3333-4444-5555-666677778888";
Assert.equal(
serverC.UID,
"11112222-3333-4444-5555-666677778888",
"server C's UID set correctly"
);
Assert.equal(
Services.prefs.getStringPref(`mail.server.${serverC.key}.uid`),
"11112222-3333-4444-5555-666677778888",
"server C's UID should be saved to the preferences"
);
Assert.throws(
() => (serverC.UID = "22223333-4444-5555-6666-777788889999"),
/NS_ERROR_ABORT/,
"server C's UID should be unchangeable after it is set"
);
}
/**
* Tests the UID attribute of IMAP servers.
*/
add_task(function testUID_IMAP() {
subtestUID("imap");
});
/**
* Tests the UID attribute of NNTP servers.
*/
add_task(function testUID_NNTP() {
subtestUID("nntp");
});
/**
* Tests the UID attribute of POP3 servers.
*/
add_task(function testUID_POP3() {
subtestUID("pop3");
});