From 0402f641ffa2fb321050a14d1691424fc005d91c Mon Sep 17 00:00:00 2001 From: Johan Holmerin Date: Wed, 15 Jul 2020 21:29:08 +0200 Subject: [PATCH] Add alternate test --- test.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test.ts b/test.ts index ad04588..f83af9f 100644 --- a/test.ts +++ b/test.ts @@ -2,6 +2,7 @@ import { webServer, emailServer, WEB_PORT, EMAIL_PORT, EMAIL_DOMAIN } from "."; import nodemailer from "nodemailer"; import axios from "axios"; import qs from "qs"; +import { JSDOM } from "jsdom"; test("create feed", async () => { const identifier = await createFeed(); @@ -166,6 +167,28 @@ describe("receive email", () => { }); }); +describe("alternate", () => { + test("HTML content", async () => { + const identifier = await createFeed(); + await emailClient.sendMail({ + from: "publisher@example.com", + to: `${identifier}@${EMAIL_DOMAIN}`, + subject: "New Message", + html: "

HTML content

", + }); + const feed = await getFeed(identifier); + const xml = new JSDOM(feed, { contentType: "text/xml" }); + const document = xml.window.document; + const href = document + .querySelector("feed > entry link")! + .getAttribute("href") as string; + const alternate = await getAlternate(href); + expect(feed).toMatch("publisher@example.com"); + expect(feed).toMatch("New Message"); + expect(feed).toMatch("HTML content"); + }); +}); + afterAll(() => { webServer.close(); emailServer.close(); @@ -192,3 +215,7 @@ async function createFeed(): Promise { async function getFeed(identifier: string): Promise { return (await webClient.get(`/feeds/${identifier}.xml`)).data; } + +async function getAlternate(url: string): Promise { + return (await webClient.get(url)).data; +}