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 --- .../mime/test/unit/test_text_attachment.js | 89 ++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 comm/mailnews/mime/test/unit/test_text_attachment.js (limited to 'comm/mailnews/mime/test/unit/test_text_attachment.js') diff --git a/comm/mailnews/mime/test/unit/test_text_attachment.js b/comm/mailnews/mime/test/unit/test_text_attachment.js new file mode 100644 index 0000000000..bea9d5c31a --- /dev/null +++ b/comm/mailnews/mime/test/unit/test_text_attachment.js @@ -0,0 +1,89 @@ +/* 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/. */ + +/** + * This test verifies that we don't display text attachments inline + * when mail.inline_attachments is false. + */ + +var { MessageGenerator, SyntheticMessageSet } = ChromeUtils.import( + "resource://testing-common/mailnews/MessageGenerator.jsm" +); +var { MessageInjection } = ChromeUtils.import( + "resource://testing-common/mailnews/MessageInjection.jsm" +); +var { PromiseTestUtils } = ChromeUtils.import( + "resource://testing-common/mailnews/PromiseTestUtils.jsm" +); + +const TEXT_ATTACHMENT = "inline text attachment"; + +var messenger = Cc["@mozilla.org/messenger;1"].createInstance(Ci.nsIMessenger); +var msgGen = new MessageGenerator(); +var inbox; +var messageInjection = new MessageInjection({ mode: "local" }); +var msgWindow = Cc["@mozilla.org/messenger/msgwindow;1"].createInstance( + Ci.nsIMsgWindow +); + +add_setup(function () { + inbox = messageInjection.getInboxFolder(); +}); + +add_task(async function test_message_attachments_no_inline() { + Services.prefs.setBoolPref("mail.inline_attachments", false); + Services.prefs.setBoolPref("mail.inline_attachments.text", true); + await test_message_attachments({ + // text attachment + attachments: [ + { + body: TEXT_ATTACHMENT, + filename: "test.txt", + format: "", + }, + ], + }); +}); + +add_task(async function test_message_attachments_no_inline_text() { + Services.prefs.setBoolPref("mail.inline_attachments", true); + Services.prefs.setBoolPref("mail.inline_attachments.text", false); + await PromiseTestUtils.promiseDelay(100); + await test_message_attachments({ + // text attachment + attachments: [ + { + body: TEXT_ATTACHMENT, + filename: "test.txt", + format: "", + }, + ], + }); +}); + +async function test_message_attachments(info) { + let synMsg = msgGen.makeMessage(info); + let synSet = new SyntheticMessageSet([synMsg]); + await messageInjection.addSetsToFolders([inbox], [synSet]); + + let msgURI = synSet.getMsgURI(0); + let msgService = MailServices.messageServiceFromURI(msgURI); + + let streamListener = new PromiseTestUtils.PromiseStreamListener(); + + msgService.streamMessage( + msgURI, + streamListener, + msgWindow, + null, + true, // have them create the converter + // additional uri payload, note that "header=" is prepended automatically + "filter", + false + ); + + let data = await streamListener.promise; + // check that text attachment contents didn't end up inline. + Assert.ok(!data.includes(TEXT_ATTACHMENT)); +} -- cgit v1.2.3