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 --- comm/mailnews/local/test/unit/test_fileName.js | 112 +++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 comm/mailnews/local/test/unit/test_fileName.js (limited to 'comm/mailnews/local/test/unit/test_fileName.js') diff --git a/comm/mailnews/local/test/unit/test_fileName.js b/comm/mailnews/local/test/unit/test_fileName.js new file mode 100644 index 0000000000..e69b1b45a4 --- /dev/null +++ b/comm/mailnews/local/test/unit/test_fileName.js @@ -0,0 +1,112 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/** + * Test handling of special chars in folder names + */ + +function run_test() { + let testFolderName = ""; + let OSname = Services.sysinfo.getProperty("name"); + if (OSname == "Windows_NT") { + // On Windows test file with ' ' in the name. + testFolderName = "bugmail 1"; + } else if (OSname == "Linux") { + // On Linux test file with '`' in the name. + testFolderName = "bugmail`1"; + } else if (OSname == "Darwin") { + // On Mac test file with ':' in the name (generated from Mozilla 1.8 branch). + testFolderName = "bugmail:1"; + } else { + // Not sure what this OS is so just use a safe name. + testFolderName = "bugmail1"; + } + + let bugmail = do_get_file("../../../data/bugmail-1"); + let bugmailmsf = do_get_file("../../../data/bugmail-1.msf"); + let localMailDir = do_get_profile().clone(); + localMailDir.append("Mail"); + localMailDir.append("Local Folders"); + let pop3dir = do_get_profile().clone(); + pop3dir.append("Mail"); + pop3dir.append("poptest"); + // Copy the file to the local mail directory + bugmail.copyTo(localMailDir, testFolderName); + bugmailmsf.copyTo(localMailDir, testFolderName + ".msf"); + + // Copy the file to the pop3 server mail directory + bugmail.copyTo(pop3dir, testFolderName); + bugmailmsf.copyTo(pop3dir, testFolderName + ".msf"); + + // These preferences set up a local folders account so we'll use the + // contents of the Local Folders dir we've already pre-populated. + Services.prefs.setCharPref("mail.account.account1.server", "server1"); + Services.prefs.setCharPref("mail.account.account2.server", "server2"); + Services.prefs.setCharPref( + "mail.accountmanager.accounts", + "account1,account2" + ); + Services.prefs.setCharPref( + "mail.accountmanager.localfoldersserver", + "server1" + ); + Services.prefs.setCharPref("mail.accountmanager.defaultaccount", "account1"); + Services.prefs.setCharPref( + "mail.server.server1.directory-rel", + "[ProfD]Mail/Local Folders" + ); + Services.prefs.setCharPref("mail.server.server1.hostname", "Local Folders"); + Services.prefs.setCharPref("mail.server.server1.name", "Local Folders"); + Services.prefs.setCharPref("mail.server.server1.type", "none"); + Services.prefs.setCharPref("mail.server.server1.userName", "nobody"); + Services.prefs.setCharPref( + "mail.server.server2.directory-rel", + "[ProfD]Mail/poptest" + ); + Services.prefs.setCharPref("mail.server.server2.hostname", "poptest"); + Services.prefs.setCharPref("mail.server.server2.name", "poptest"); + Services.prefs.setCharPref("mail.server.server2.type", "pop3"); + Services.prefs.setCharPref("mail.server.server2.userName", "user"); + // This basically says to ignore the time stamp in the .msf file + Services.prefs.setIntPref("mail.db_timestamp_leeway", 0x7fffffff); + + localAccountUtils.incomingServer = MailServices.accounts.localFoldersServer; + // force load of accounts. + MailServices.accounts.defaultAccount; + + let pop3Server = MailServices.accounts.findServer("user", "poptest", "pop3"); + let rootFolder = + localAccountUtils.incomingServer.rootMsgFolder.QueryInterface( + Ci.nsIMsgLocalMailFolder + ); + let pop3Root = pop3Server.rootMsgFolder; + + // Note: Inbox is not created automatically when there is no deferred server, + // so we need to create it. + localAccountUtils.inboxFolder = rootFolder.createLocalSubfolder("Inbox"); + // a local inbox should have a Mail flag! + localAccountUtils.inboxFolder.setFlag(Ci.nsMsgFolderFlags.Mail); + + rootFolder = localAccountUtils.incomingServer.rootMsgFolder; + bugmail = rootFolder.getChildNamed(testFolderName); + Assert.equal(bugmail.getTotalMessages(false), 1); + bugmail = pop3Root.getChildNamed(testFolderName); + Assert.equal(bugmail.getTotalMessages(false), 1); + + // Check if creating an empty folder returns a proper error + // instead of crash (bug 831190). + try { + rootFolder.createSubfolder("", null); + do_throw("createSubfolder() should have failed on empty folder name."); + } catch (e) { + // NS_MSG_ERROR_INVALID_FOLDER_NAME + Assert.equal(e.result, 2153054242); + } + + // And try to create an existing folder again. + try { + rootFolder.createSubfolder(testFolderName, null); + do_throw("createSubfolder() should have failed on existing folder."); + } catch (e) { + // NS_MSG_FOLDER_EXISTS + Assert.equal(e.result, 2153054227); + } +} -- cgit v1.2.3