This commit is contained in:
Leandro Facchinetti 2020-03-23 11:08:57 -04:00
parent b53c5fbb40
commit 67662f21db
2 changed files with 32 additions and 3 deletions

View File

@ -48,7 +48,9 @@ export const emailServer = new SMTPServer({
title: email.subject, title: email.subject,
author: email.from.text, author: email.from.text,
// FIXME: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/43234 / typeof email.html !== "boolean" => email.html !== false // FIXME: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/43234 / typeof email.html !== "boolean" => email.html !== false
content: typeof email.html !== "boolean" ? email.html : email.textAsHtml ...(typeof email.html === "boolean"
? { html: false, content: email.text ?? "" }
: { content: email.html })
}); });
for (const { address } of session.envelope.rcptTo) { for (const { address } of session.envelope.rcptTo) {
const match = address.match(/^(\w+)@kill-the-newsletter.com$/); const match = address.match(/^(\w+)@kill-the-newsletter.com$/);
@ -219,11 +221,13 @@ function Feed({ name, identifier }: { name: string; identifier: string }) {
function Entry({ function Entry({
title, title,
author, author,
content content,
html
}: { }: {
title: string; title: string;
author: string; author: string;
content: string; content: string;
html?: boolean;
}) { }) {
return { return {
entry: { entry: {
@ -231,7 +235,10 @@ function Entry({
title, title,
author: { name: author }, author: { name: author },
updated: now(), updated: now(),
content: { $: { type: "html" }, _: content } content: {
...(html === false ? {} : { $: { type: "html" } }),
_: content
}
} }
}; };
} }

View File

@ -36,6 +36,28 @@ describe("receive email", () => {
expect(feed).toMatch("TEXT content"); expect(feed).toMatch("TEXT content");
}); });
test("missing content", async () => {
const identifier = await createFeed();
await emailClient.sendMail({
from: "publisher@example.com",
to: `${identifier}@kill-the-newsletter.com`,
subject: "New Message"
});
const feed = await getFeed(identifier);
expect(feed).toMatch("New Message");
});
test("missing subject", async () => {
const identifier = await createFeed();
await emailClient.sendMail({
from: "publisher@example.com",
to: `${identifier}@kill-the-newsletter.com`,
html: "<p>HTML content</p>"
});
const feed = await getFeed(identifier);
expect(feed).toMatch("HTML content");
});
test("truncation", async () => { test("truncation", async () => {
const identifier = await createFeed(); const identifier = await createFeed();
for (const repetition of [...new Array(4).keys()]) for (const repetition of [...new Array(4).keys()])