diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-06-30 14:25:02 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-06-30 14:25:02 +0800 |
commit | e18d101cae1dfcef29abd102d2908d429f4688d5 (patch) | |
tree | 49c0b1d1c237c674fe603db23d2e174acdea6979 /deno/mail-relay/mail.test.ts | |
parent | 66e2d76b75ed04ae8a43baefdb970f4cb89c5925 (diff) | |
download | crupest-e18d101cae1dfcef29abd102d2908d429f4688d5.tar.gz crupest-e18d101cae1dfcef29abd102d2908d429f4688d5.tar.bz2 crupest-e18d101cae1dfcef29abd102d2908d429f4688d5.zip |
mail: revert removing.
Diffstat (limited to 'deno/mail-relay/mail.test.ts')
-rw-r--r-- | deno/mail-relay/mail.test.ts | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/deno/mail-relay/mail.test.ts b/deno/mail-relay/mail.test.ts deleted file mode 100644 index a8204be..0000000 --- a/deno/mail-relay/mail.test.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { describe, it } from "@std/testing/bdd"; -import { expect, fn } from "@std/expect"; - -import { Mail, MailDeliverContext, MailDeliverer } from "./mail.ts"; - -const mockDate = "Fri, 02 May 2025 08:33:02 +0000"; -const mockMessageId = "mock-message-id@from.mock"; -const mockMessageId2 = "mock-message-id-2@from.mock"; -const mockFromAddress = "mock@from.mock"; -const mockCcAddress = "mock@cc.mock"; -const mockBodyStr = `This is body content. -Line 2 ${mockMessageId2} - -Line 4`; -const mockHeaders = [ - ["Content-Disposition", "inline"], - ["Content-Transfer-Encoding", "quoted-printable"], - ["MIME-Version", "1.0"], - ["X-Mailer", "MIME-tools 5.509 (Entity 5.509)"], - ["Content-Type", "text/plain; charset=utf-8"], - ["From", `"Mock From" <${mockFromAddress}>`], - [ - "To", - `"John \\"Big\\" Doe" <john@example.com>, "Alice (Work)" <alice+work@example.com>, - undisclosed-recipients:;, "Group: Team" <team@company.com>, - "Escaped, Name" <escape@test.com>, just@email.com, - "Comment (This is valid)" <comment@domain.net>, - "Odd @Chars" <weird!#$%'*+-/=?^_\`{|}~@char-test.com>, - "Non-ASCII 用户" <user@例子.中国>, - admin@[192.168.1.1]`, - ], - ["CC", `Mock CC <${mockCcAddress}>`], - ["Subject", "A very long mock\n subject"], - ["Message-ID", `<${mockMessageId}>`], - ["Date", mockDate], -]; -const mockHeaderStr = mockHeaders.map((h) => h[0] + ": " + h[1]).join("\n"); -const mockMailStr = mockHeaderStr + "\n\n" + mockBodyStr; -const mockCrlfMailStr = mockMailStr.replaceAll("\n", "\r\n"); -const mockToAddresses = [ - "john@example.com", - "alice+work@example.com", - "team@company.com", - "escape@test.com", - "just@email.com", - "comment@domain.net", - "weird!#$%'*+-/=?^_`{|}~@char-test.com", - "user@例子.中国", - "admin@[192.168.1.1]", -]; - -describe("Mail", () => { - it("simple parse", () => { - const { parsed } = new Mail(mockMailStr); - expect(parsed.header).toEqual(mockHeaderStr); - expect(parsed.body).toEqual(mockBodyStr); - expect(parsed.sep).toBe("\n"); - expect(parsed.eol).toBe("\n"); - }); - - it("simple parse crlf", () => { - const { parsed } = new Mail(mockCrlfMailStr); - expect(parsed.sep).toBe("\r\n"); - expect(parsed.eol).toBe("\r\n"); - }); - - it("simple parse date", () => { - expect( - new Mail(mockMailStr).parsed.date, - ).toEqual(new Date(mockDate)); - }); - - it("simple parse headers", () => { - expect( - new Mail(mockMailStr).parsed.headers, - ).toEqual(mockHeaders.map((h) => [h[0], " " + h[1].replaceAll("\n", "")])); - }); - - it("parse recipients", () => { - const mail = new Mail(mockMailStr); - expect([...mail.parsed.recipients]).toEqual([ - ...mockToAddresses, - mockCcAddress, - ]); - }); - - it("find all addresses", () => { - const mail = new Mail(mockMailStr); - expect(mail.simpleFindAllAddresses()).toEqual([ - "mock@from.mock", - "john@example.com", - "alice+work@example.com", - "team@company.com", - "escape@test.com", - "just@email.com", - "comment@domain.net", - "mock@cc.mock", - "mock-message-id@from.mock", - "mock-message-id-2@from.mock", - ]); - }); -}); - -describe("MailDeliverer", () => { - class MockMailDeliverer extends MailDeliverer { - name = "mock"; - override doDeliver = fn((_: Mail, ctx: MailDeliverContext) => { - ctx.result.recipients.set("*", { - kind: "success", - message: "success message", - }); - return Promise.resolve(); - }) as MailDeliverer["doDeliver"]; - } - const mockDeliverer = new MockMailDeliverer(false); - - it("deliver success", async () => { - await mockDeliverer.deliverRaw(mockMailStr); - expect(mockDeliverer.doDeliver).toHaveBeenCalledTimes(1); - }); -}); |