test/scripts/email-sandbox-e2e/legs.test.ts
Rama main · réplica de lectura del repositorio original.
/** Direct tests for the email leg table and its env resolution. */
import { expect } from "@std/expect";
import { describe, it as test } from "@std/testing/bdd";
import {
parseEmailTarget,
resolveEmailLeg,
} from "#scripts/email-sandbox-e2e/legs.ts";
import { VALID_EMAIL_PROVIDERS } from "#shared/email.ts";
import { withEnv } from "#test-utils/env.ts";
describe("resolveEmailLeg", () => {
test("skips a leg whose on-switch secret is unset", () => {
using _env = withEnv({ RESEND_API_KEY: undefined });
expect(resolveEmailLeg("resend")).toEqual({
reason: "RESEND_API_KEY is not set",
state: "skipped",
});
});
test("treats a blank on-switch secret as unset, like a missing Actions secret", () => {
using _env = withEnv({ MAILGUN_EU_API_KEY: " " });
expect(resolveEmailLeg("mailgun-eu")).toEqual({
reason: "MAILGUN_EU_API_KEY is not set",
state: "skipped",
});
});
test("readies resend on the key alone, with the documented safe addresses", () => {
using _env = withEnv({
RESEND_API_KEY: " re_test_123 ",
RESEND_FROM: undefined,
RESEND_TO: undefined,
});
expect(resolveEmailLeg("resend")).toEqual({
config: {
apiKey: "re_test_123",
fromAddress: "onboarding@resend.dev",
provider: "resend",
},
state: "ready",
to: "delivered@resend.dev",
});
});
test("lets a secret override each default address", () => {
using _env = withEnv({
RESEND_API_KEY: "re_test_123",
RESEND_FROM: "sender@verified.example.com",
RESEND_TO: "delivered+run@resend.dev",
});
expect(resolveEmailLeg("resend")).toEqual({
config: {
apiKey: "re_test_123",
fromAddress: "sender@verified.example.com",
provider: "resend",
},
state: "ready",
to: "delivered+run@resend.dev",
});
});
test("readies postmark with the blackhole discard address by default", () => {
using _env = withEnv({
POSTMARK_FROM: "sender@example.com",
POSTMARK_SERVER_TOKEN: "POSTMARK_API_TEST",
POSTMARK_TO: undefined,
});
expect(resolveEmailLeg("postmark")).toEqual({
config: {
apiKey: "POSTMARK_API_TEST",
fromAddress: "sender@example.com",
provider: "postmark",
},
state: "ready",
to: "test@blackhole.postmarkapp.com",
});
});
test("readies sendgrid with the sink recipient by default", () => {
using _env = withEnv({
SENDGRID_API_KEY: "SG.key",
SENDGRID_FROM: "verified@example.com",
SENDGRID_TO: undefined,
});
expect(resolveEmailLeg("sendgrid")).toEqual({
config: {
apiKey: "SG.key",
fromAddress: "verified@example.com",
provider: "sendgrid",
},
state: "ready",
to: "e2e@sink.sendgrid.net",
});
});
test("breaks a switched-on leg whose required sender is unset", () => {
using _env = withEnv({
SENDGRID_API_KEY: "SG.key",
SENDGRID_FROM: "",
});
expect(resolveEmailLeg("sendgrid")).toEqual({
reason: "SENDGRID_FROM is not set",
state: "broken",
});
});
test("breaks a switched-on leg whose sender is not an email address", () => {
using _env = withEnv({
POSTMARK_FROM: "not-an-address",
POSTMARK_SERVER_TOKEN: "token",
});
expect(resolveEmailLeg("postmark")).toEqual({
reason: "POSTMARK_FROM is not a valid email address",
state: "broken",
});
});
test("breaks a switched-on mailgun leg whose recipient is unset", () => {
using _env = withEnv({
MAILGUN_EU_API_KEY: "key-abc",
MAILGUN_EU_FROM: "e2e@sandbox123.mailgun.org",
MAILGUN_EU_TO: undefined,
});
expect(resolveEmailLeg("mailgun-eu")).toEqual({
reason: "MAILGUN_EU_TO is not set",
state: "broken",
});
});
test("names the US region's secrets on the mailgun-us leg", () => {
using _env = withEnv({
MAILGUN_US_API_KEY: "key-us",
MAILGUN_US_FROM: "e2e@mg.example.com",
MAILGUN_US_TO: "authorized@example.com",
});
expect(resolveEmailLeg("mailgun-us")).toEqual({
config: {
apiKey: "key-us",
fromAddress: "e2e@mg.example.com",
provider: "mailgun-us",
},
state: "ready",
to: "authorized@example.com",
});
});
});
describe("parseEmailTarget", () => {
test("selects every provider by default, in the production order", () => {
expect(parseEmailTarget(undefined)).toEqual([...VALID_EMAIL_PROVIDERS]);
expect(parseEmailTarget("all")).toEqual([...VALID_EMAIL_PROVIDERS]);
});
test("selects one named provider, case-insensitively", () => {
expect(parseEmailTarget("RESEND")).toEqual(["resend"]);
expect(parseEmailTarget("mailgun-eu")).toEqual(["mailgun-eu"]);
});
test("refuses an unknown target and names the expected ones", () => {
expect(() => parseEmailTarget("stripe")).toThrow(
'unknown target "stripe" (expected all|mailgun-eu|mailgun-us|postmark|resend|sendgrid)',
);
});
});