summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/local/test/unit/test_fileName.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/local/test/unit/test_fileName.js')
-rw-r--r--comm/mailnews/local/test/unit/test_fileName.js112
1 files changed, 112 insertions, 0 deletions
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);
+ }
+}