Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839import { describe, expect, it } from "vitest";import { safeHref } from "#lib/safeHref.ts";
describe("safeHref", () => { it("returns links unchanged", () => { for (const value of [ "https://tangled.org/about", "http://example.com", "example.com/blog", "mailto:me@example.com", "ssh://git@github.com/owner/repo.git", "git@github.com:owner/repo.git", "http://[" ]) { expect(safeHref(value), value).toBe(value); } });
it("drops links the browser would run", () => { for (const value of [ "javascript:alert(document.domain)", "JavaScript:alert(1)", " javascript:alert(1)", "java\tscript:alert(1)", "java\nscript:alert(1)", "\u0001javascript:alert(1)", "vbscript:msgbox(1)", "data:text/html,<script>alert(1)</script>" ]) { expect(safeHref(value), JSON.stringify(value)).toBeUndefined(); } });
it("drops empty values", () => { expect(safeHref(undefined)).toBeUndefined(); expect(safeHref("")).toBeUndefined(); });});