Files
reyna-cli/backup/macmini-automation-baseline-2026-08-03/macmini-mcp/test/mail.integration.test.js
T
2026-08-03 11:47:09 -04:00

37 lines
1.5 KiB
JavaScript

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");
});