diff options
Diffstat (limited to 'comm/mailnews/compose/test/unit/test_smtpServer.js')
-rw-r--r-- | comm/mailnews/compose/test/unit/test_smtpServer.js | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/comm/mailnews/compose/test/unit/test_smtpServer.js b/comm/mailnews/compose/test/unit/test_smtpServer.js new file mode 100644 index 0000000000..5e252a44f0 --- /dev/null +++ b/comm/mailnews/compose/test/unit/test_smtpServer.js @@ -0,0 +1,104 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + * Tests for nsISmtpServer implementation. + */ + +/** + * Test that cached server password is cleared when password storage changed. + */ +add_task(async function test_passwordmgr_change() { + // Create an nsISmtpServer instance and set a password. + let server = Cc["@mozilla.org/messenger/smtp/server;1"].createInstance( + Ci.nsISmtpServer + ); + server.password = "smtp-pass"; + equal(server.password, "smtp-pass", "Password should be cached."); + + // Trigger the change event of password manager. + Services.logins.setLoginSavingEnabled("smtp://localhost", false); + equal(server.password, "", "Password should be cleared."); +}); + +/** + * Test getter/setter of attributes. + */ +add_task(async function test_attributes() { + // Create an nsISmtpServer instance and set a password. + let server = Cc["@mozilla.org/messenger/smtp/server;1"].createInstance( + Ci.nsISmtpServer + ); + + server.description = "アイウ"; + equal(server.description, "アイウ", "Description should be correctly set."); + + server.hostname = "サービス.jp"; + equal(server.hostname, "サービス.jp", "Hostname should be correctly set."); +}); + +/** + * Tests the UID attribute of servers. + */ +add_task(async function testUID() { + 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. + + let serverA = MailServices.smtp.createServer(); + Assert.stringMatches( + serverA.UID, + UUID_REGEXP, + "server A's UID should exist and be a UUID" + ); + Assert.equal( + Services.prefs.getStringPref(`mail.smtpserver.${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. + + let serverB = MailServices.smtp.createServer(); + Assert.stringMatches( + serverB.UID, + UUID_REGEXP, + "server B's UID should exist and be a UUID" + ); + Assert.equal( + Services.prefs.getStringPref(`mail.smtpserver.${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. + + let serverC = MailServices.smtp.createServer(); + 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.smtpserver.${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" + ); +}); |