fix: close durable queue and runtime gaps
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { expect, test } from "bun:test";
|
||||
import { defineMail, defineMailTemplate } from "../src/index.ts";
|
||||
import { defineMail, defineMailTemplate, sealedMailDriver } from "../src/index.ts";
|
||||
|
||||
test("mail templates render and sandbox blocks accidental recipients", async () => {
|
||||
const sent: unknown[] = [];
|
||||
@@ -16,3 +16,32 @@ test("mail templates render and sandbox blocks accidental recipients", async ()
|
||||
expect(sent).toHaveLength(1);
|
||||
await expect(mail.send({ to: "real@example.com", subject: "no" })).rejects.toThrow("SANDBOX");
|
||||
});
|
||||
|
||||
test("sealed drivers decrypt lazily once and delegate send/test", async () => {
|
||||
let opens = 0;
|
||||
const sent: string[] = [];
|
||||
const driver = sealedMailDriver({
|
||||
sealedCredential: "ciphertext",
|
||||
async unseal(value) {
|
||||
opens++;
|
||||
expect(value).toBe("ciphertext");
|
||||
return "plaintext-secret";
|
||||
},
|
||||
create(credential) {
|
||||
expect(credential).toBe("plaintext-secret");
|
||||
return {
|
||||
async send(message) {
|
||||
sent.push(message.subject);
|
||||
},
|
||||
async test() {
|
||||
return { ok: true };
|
||||
},
|
||||
};
|
||||
},
|
||||
});
|
||||
expect(opens).toBe(0);
|
||||
await driver.send({ to: "safe@example.test", subject: "one" });
|
||||
expect(await driver.test?.()).toEqual({ ok: true });
|
||||
expect(opens).toBe(1);
|
||||
expect(sent).toEqual(["one"]);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user