diff options
Diffstat (limited to 'comm/calendar/test/browser/invitations/browser_attachedPublishEvent.js')
-rw-r--r-- | comm/calendar/test/browser/invitations/browser_attachedPublishEvent.js | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/comm/calendar/test/browser/invitations/browser_attachedPublishEvent.js b/comm/calendar/test/browser/invitations/browser_attachedPublishEvent.js new file mode 100644 index 0000000000..af121a8032 --- /dev/null +++ b/comm/calendar/test/browser/invitations/browser_attachedPublishEvent.js @@ -0,0 +1,72 @@ +/* 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 attached events - NOT invites - works properly. + * These are attached VCALENDARs that have METHOD:PUBLISH. + */ +"use strict"; + +var { CalendarTestUtils } = ChromeUtils.import( + "resource://testing-common/calendar/CalendarTestUtils.jsm" +); + +var { MailServices } = ChromeUtils.import("resource:///modules/MailServices.jsm"); + +var gCalendar; + +/** + * Initialize account, identity and calendar. + */ +add_setup(async function () { + let receiverAcct = MailServices.accounts.createAccount(); + receiverAcct.incomingServer = MailServices.accounts.createIncomingServer( + "receiver", + "example.com", + "imap" + ); + let receiverIdentity = MailServices.accounts.createIdentity(); + receiverIdentity.email = "john.doe@example.com"; + receiverAcct.addIdentity(receiverIdentity); + gCalendar = CalendarTestUtils.createCalendar("EventTestCal"); + + registerCleanupFunction(() => { + CalendarTestUtils.removeCalendar(gCalendar); + MailServices.accounts.removeAccount(receiverAcct, true); + }); +}); + +/** + * Test that opening a message containing an event with iTIP method "PUBLISH" + * shows the correct UI. + * The party crashing dialog should not show. + */ +add_task(async function test_event_from_eml() { + let file = new FileUtils.File(getTestFilePath("data/message-non-invite.eml")); + + let win = await openMessageFromFile(file); + let aboutMessage = win.document.getElementById("messageBrowser").contentWindow; + let imipBar = aboutMessage.document.getElementById("imip-bar"); + + await TestUtils.waitForCondition(() => !imipBar.collapsed); + info("Ok, iMIP bar is showing"); + + let imipAddButton = aboutMessage.document.getElementById("imipAddButton"); + Assert.ok(!imipAddButton.hidden, "Add button should show"); + + EventUtils.synthesizeMouseAtCenter(imipAddButton, {}, aboutMessage); + + // Make sure the event got added, without showing the party crashing dialog. + await TestUtils.waitForCondition(async () => { + let event = await gCalendar.getItem("1e5fd4e6-bc52-439c-ac76-40da54f57c77@secure.example.com"); + return event; + }); + + await TestUtils.waitForCondition(() => imipAddButton.hidden, "Add button should hide"); + + let imipDetailsButton = aboutMessage.document.getElementById("imipDetailsButton"); + Assert.ok(!imipDetailsButton.hidden, "Details button should show"); + + await BrowserTestUtils.closeWindow(win); +}); |