diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /comm/mail/test/browser/multiple-identities/browser_displayNames.js | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'comm/mail/test/browser/multiple-identities/browser_displayNames.js')
-rw-r--r-- | comm/mail/test/browser/multiple-identities/browser_displayNames.js | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/comm/mail/test/browser/multiple-identities/browser_displayNames.js b/comm/mail/test/browser/multiple-identities/browser_displayNames.js new file mode 100644 index 0000000000..66344d8147 --- /dev/null +++ b/comm/mail/test/browser/multiple-identities/browser_displayNames.js @@ -0,0 +1,224 @@ +/* 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/. */ + +/* + * Test that we can open and close a standalone message display window from the + * folder pane. + */ + +"use strict"; + +var { ensure_card_exists, ensure_no_card_exists } = ChromeUtils.import( + "resource://testing-common/mozmill/AddressBookHelpers.jsm" +); +var { + add_message_to_folder, + be_in_folder, + create_folder, + create_message, + get_about_message, + mc, + select_click_row, +} = ChromeUtils.import( + "resource://testing-common/mozmill/FolderDisplayHelpers.jsm" +); + +var { MailServices } = ChromeUtils.import( + "resource:///modules/MailServices.jsm" +); + +var folder; +var decoyFolder; +var localAccount; +var secondIdentity; +var myEmail = "sender@nul.invalid"; // Dictated by messagerInjector.js +var friendEmail = "carl@sagan.invalid"; +var friendName = "Carl Sagan"; +var headertoFieldMe; +var collectedAddresses; + +add_setup(async function () { + localAccount = MailServices.accounts.FindAccountForServer( + MailServices.accounts.localFoldersServer + ); + + // We need to make sure we have only one identity: + // 1) Delete all accounts except for Local Folders + for (let account of MailServices.accounts.accounts) { + if (account != localAccount) { + MailServices.accounts.removeAccount(account); + } + } + + // 2) Delete all identities except for one + for (let i = localAccount.identities.length - 1; i >= 0; i--) { + let identity = localAccount.identities[i]; + if (identity.email != myEmail) { + localAccount.removeIdentity(identity); + } + } + + // 3) Create a second identity and hold onto it for later + secondIdentity = MailServices.accounts.createIdentity(); + secondIdentity.email = "nobody@nowhere.invalid"; + + folder = await create_folder("DisplayNamesA"); + decoyFolder = await create_folder("DisplayNamesB"); + + // # 0 + await add_message_to_folder( + [folder], + create_message({ to: [["", myEmail]] }) + ); + // # 1 + await add_message_to_folder( + [folder], + create_message({ from: ["", friendEmail] }) + ); + // # 2 + await add_message_to_folder( + [folder], + create_message({ from: [friendName, friendEmail] }) + ); + // # 3 - a message I got with a custom address to myself + await add_message_to_folder( + [folder], + create_message({ to: [["Customized", myEmail]] }) + ); + + // Ensure all the directories are initialised. + MailServices.ab.directories; + collectedAddresses = MailServices.ab.getDirectory( + "jsaddrbook://history.sqlite" + ); + + let bundle = Services.strings.createBundle( + "chrome://messenger/locale/messenger.properties" + ); + headertoFieldMe = bundle.GetStringFromName("headertoFieldMe"); +}); + +function ensure_single_identity() { + if (localAccount.identities.length > 1) { + localAccount.removeIdentity(secondIdentity); + } + Assert.ok( + MailServices.accounts.allIdentities.length == 1, + "Expected 1 identity, but got " + + MailServices.accounts.allIdentities.length + + " identities" + ); +} + +function ensure_multiple_identities() { + if (localAccount.identities.length == 1) { + localAccount.addIdentity(secondIdentity); + } + Assert.ok( + MailServices.accounts.allIdentities.length > 1, + "Expected multiple identities, but got only one identity" + ); +} + +async function help_test_display_name(message, field, expectedValue) { + // Switch to a decoy folder first to ensure that we refresh the message we're + // looking at in order to update information changed in address book entries. + await be_in_folder(decoyFolder); + await be_in_folder(folder); + select_click_row(message); + + Assert.equal( + get_about_message().document.querySelector( + `#expanded${field}Box .header-recipient .recipient-single-line` + ).textContent, + expectedValue, + "The expected value matches the found value" + ); +} + +add_task(async function test_single_identity() { + ensure_no_card_exists(myEmail); + ensure_single_identity(); + await help_test_display_name(0, "to", headertoFieldMe); + + await help_test_display_name(3, "to", `Customized <${myEmail}>`); +}); + +add_task(async function test_single_identity_in_abook() { + ensure_card_exists(myEmail, "President Frankenstein", true); + ensure_single_identity(); + await help_test_display_name(0, "to", "President Frankenstein"); +}); + +add_task(async function test_single_identity_in_abook_no_pdn() { + ensure_card_exists(myEmail, "President Frankenstein"); + ensure_single_identity(); + await help_test_display_name(0, "to", headertoFieldMe); +}); + +add_task(async function test_multiple_identities() { + ensure_no_card_exists(myEmail); + ensure_multiple_identities(); + await help_test_display_name(0, "to", myEmail); + + await help_test_display_name(3, "to", `Customized <${myEmail}>`); +}); + +add_task(async function test_multiple_identities_in_abook() { + ensure_card_exists(myEmail, "President Frankenstein", true); + ensure_multiple_identities(); + await help_test_display_name(0, "to", "President Frankenstein"); +}); + +add_task(async function test_multiple_identities_in_abook_no_pdn() { + ensure_card_exists(myEmail, "President Frankenstein"); + ensure_multiple_identities(); + await help_test_display_name(0, "to", myEmail); + + await help_test_display_name(3, "to", `Customized <${myEmail}>`); +}); + +add_task(async function test_no_header_name() { + ensure_no_card_exists(friendEmail); + ensure_single_identity(); + await help_test_display_name(1, "from", friendEmail); +}); + +add_task(async function test_no_header_name_in_abook() { + ensure_card_exists(friendEmail, "My Buddy", true); + ensure_single_identity(); + await help_test_display_name(1, "from", "My Buddy"); +}); + +add_task(async function test_no_header_name_in_abook_no_pdn() { + ensure_card_exists(friendEmail, "My Buddy"); + ensure_single_identity(); + // With address book entry but display name not preferred, we display name and + // e-mail address or only the e-mail address if no name exists. + await help_test_display_name(1, "from", "carl@sagan.invalid"); +}); + +add_task(async function test_header_name() { + ensure_no_card_exists(friendEmail); + ensure_single_identity(); + await help_test_display_name( + 2, + "from", + friendName + " <" + friendEmail + ">" + ); +}); + +add_task(async function test_header_name_in_abook() { + ensure_card_exists(friendEmail, "My Buddy", true); + ensure_single_identity(); + await help_test_display_name(2, "from", "My Buddy"); +}); + +add_task(async function test_header_name_in_abook_no_pdn() { + ensure_card_exists(friendEmail, "My Buddy"); + ensure_single_identity(); + // With address book entry but display name not preferred, we display name and + // e-mail address. + await help_test_display_name(2, "from", "Carl Sagan <carl@sagan.invalid>"); +}); |