import { describe, expect, test } from "vitest"; import { sanitizeMarkdownHtml } from "./markdown"; describe("sanitizeMarkdownHtml", () => { test("returns empty string for nullish input", () => { expect(sanitizeMarkdownHtml(null)).toEqual(""); expect(sanitizeMarkdownHtml(undefined)).toEqual(""); expect(sanitizeMarkdownHtml("")).toEqual(""); }); test("keeps allowed formatting tags", () => { const html = sanitizeMarkdownHtml("

Mix flour and water

"); expect(html).toContain("flour"); expect(html).toContain("water"); }); test("strips script tags and event handlers", () => { const html = sanitizeMarkdownHtml("

hi

"); expect(html).not.toContain("script"); expect(html).not.toContain("onclick"); expect(html).not.toContain("alert"); }); test("strips img onerror payloads", () => { const html = sanitizeMarkdownHtml(""); expect(html).not.toContain("onerror"); }); // Form controls must never render in user content. test("strips form, input, and button elements", () => { const html = sanitizeMarkdownHtml("
"); expect(html).not.toContain(" { const html = sanitizeMarkdownHtml("", []); expect(html).not.toContain(" { const html = sanitizeMarkdownHtml( "", ["youtube.com"], ); expect(html).not.toContain(" { const html = sanitizeMarkdownHtml( "", ["youtube.com"], ); expect(html).not.toContain(" { const html = sanitizeMarkdownHtml( "", ["youtube.com"], ); expect(html).toContain(" { const html = sanitizeMarkdownHtml( "", ["youtube.com"], ); expect(html).not.toContain("