Files
lucia-frontend/tests/unit/utils/escapeHtml.test.js
2026-03-08 12:11:57 +08:00

36 lines
997 B
JavaScript

// The Lucia project.
// Copyright 2026-2026 DSP, inc. All rights reserved.
// Authors:
// imacat.yang@dsp.im (imacat), 2026/03/06
import { describe, it, expect } from "vitest";
import { escapeHtml } from "@/utils/escapeHtml.js";
describe("escapeHtml", () => {
it("escapes ampersand", () => {
expect(escapeHtml("a&b")).toBe("a&b");
});
it("escapes angle brackets", () => {
expect(escapeHtml("<script>")).toBe("&lt;script&gt;");
});
it("escapes double quotes", () => {
expect(escapeHtml('"hello"')).toBe("&quot;hello&quot;");
});
it("escapes single quotes", () => {
expect(escapeHtml("it's")).toBe("it&#039;s");
});
it("escapes all special characters together", () => {
expect(escapeHtml('<img src="x" onerror="alert(\'XSS\')">')).toBe(
"&lt;img src=&quot;x&quot; onerror=&quot;alert(&#039;XSS&#039;)&quot;&gt;",
);
});
it("returns plain text unchanged", () => {
expect(escapeHtml("hello world")).toBe("hello world");
});
});