import assert from "node:assert/strict"; import test from "node:test"; import { listMailAccounts, listMailboxes, listMailMessages, readMailMessage, } from "../src/integrations/mail.js"; const enabled = process.env.RUN_APPLE_INTEGRATION_TESTS === "1"; test("Apple Mail read-only integration: enumerate accounts and read a selected inbox message", { skip: !enabled }, async () => { const accounts = await listMailAccounts(); assert.ok(accounts.length > 0, "Apple Mail must have at least one configured account"); const mailboxes = await listMailboxes({ accountId: accounts[0].id }); const inbox = mailboxes.find((mailbox) => mailbox.role === "inbox"); assert.ok(inbox, "Apple Mail must expose a global inbox"); let accountWithMessage = null; for (const account of accounts) { const messages = await listMailMessages({ accountId: account.id, mailbox: inbox.name, limit: 1 }); if (messages.length) { accountWithMessage = account; break; } } assert.ok(accountWithMessage, "At least one configured account must contain an inbox message"); const messages = await listMailMessages({ accountId: accountWithMessage.id, mailbox: inbox.name, limit: 1 }); assert.equal(messages.length, 1); const message = await readMailMessage({ accountId: accountWithMessage.id, mailbox: inbox.name, id: messages[0].id }); assert.equal(message.id, messages[0].id); assert.equal(message.accountId, accountWithMessage.id); assert.equal(typeof message.body, "string"); });