1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
/* 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/. */
var { MailServices } = ChromeUtils.import(
"resource:///modules/MailServices.jsm"
);
let account = createAccount("pop3");
createAccount("local");
MailServices.accounts.defaultAccount = account;
addIdentity(account);
let rootFolder = account.incomingServer.rootFolder;
rootFolder.createSubfolder("test", null);
let folder = rootFolder.getChildNamed("test");
createMessages(folder, 4);
add_task(async function testAttachments() {
let extension = ExtensionTestUtils.loadExtension({
background: async () => {
let accounts = await browser.accounts.list();
browser.test.assertEq(2, accounts.length, "number of accounts");
let popAccount = accounts.find(a => a.type == "pop3");
let folder = popAccount.folders.find(f => f.name == "test");
let { messages } = await browser.messages.list(folder);
let newTab = await browser.compose.beginNew({
attachments: [
{ file: new File(["one"], "attachment1.txt") },
{ file: new File(["two"], "attachment-två.txt") },
],
});
let attachments = await browser.compose.listAttachments(newTab.id);
browser.test.assertEq(2, attachments.length);
browser.test.assertEq("attachment1.txt", attachments[0].name);
browser.test.assertEq("attachment-två.txt", attachments[1].name);
let replyTab = await browser.compose.beginReply(messages[0].id, {
attachments: [
{ file: new File(["three"], "attachment3.txt") },
{ file: new File(["four"], "attachment4.txt") },
],
});
attachments = await browser.compose.listAttachments(replyTab.id);
browser.test.assertEq(2, attachments.length);
browser.test.assertEq("attachment3.txt", attachments[0].name);
browser.test.assertEq("attachment4.txt", attachments[1].name);
let forwardTab = await browser.compose.beginForward(
messages[1].id,
"forwardAsAttachment",
{
attachments: [
{ file: new File(["five"], "attachment5.txt") },
{ file: new File(["six"], "attachment6.txt") },
],
}
);
attachments = await browser.compose.listAttachments(forwardTab.id);
browser.test.assertEq(3, attachments.length);
browser.test.assertEq(`${messages[1].subject}.eml`, attachments[0].name);
browser.test.assertEq("attachment5.txt", attachments[1].name);
browser.test.assertEq("attachment6.txt", attachments[2].name);
// Forward inline adds attachments differently, so check it works too.
let forwardTab2 = await browser.compose.beginForward(
messages[2].id,
"forwardInline",
{
attachments: [
{ file: new File(["seven"], "attachment7.txt") },
{ file: new File(["eight"], "attachment-åtta.txt") },
],
}
);
attachments = await browser.compose.listAttachments(forwardTab2.id);
browser.test.assertEq(2, attachments.length);
browser.test.assertEq("attachment7.txt", attachments[0].name);
browser.test.assertEq("attachment-åtta.txt", attachments[1].name);
let newTab2 = await browser.compose.beginNew(messages[3].id, {
attachments: [
{ file: new File(["nine"], "attachment9.txt") },
{ file: new File(["ten"], "attachment10.txt") },
],
});
attachments = await browser.compose.listAttachments(newTab2.id);
browser.test.assertEq(2, attachments.length);
browser.test.assertEq("attachment9.txt", attachments[0].name);
browser.test.assertEq("attachment10.txt", attachments[1].name);
await browser.tabs.remove(newTab.id);
await browser.tabs.remove(replyTab.id);
await browser.tabs.remove(forwardTab.id);
await browser.tabs.remove(forwardTab2.id);
await browser.tabs.remove(newTab2.id);
browser.test.notifyPass();
},
manifest: {
permissions: ["compose", "accountsRead", "messagesRead"],
},
});
await extension.startup();
await extension.awaitFinish();
await extension.unload();
});
|