/**
* Comprehensive security tests for the SVG sanitizer.
*
* Covers all known SVG-based attack vectors: XSS, XXE, SSRF, URI scheme
* obfuscation, animation injection, and filter-based SSRF.
*/
import { describe, expect, it } from "vitest";
import { sanitizeSvg } from "../../../apps/api/src/lib/svg-sanitize.js";
/** Wrap a payload fragment inside a minimal valid SVG. */
function wrapSvg(inner: string, attrs = ""): string {
return ``;
}
/** Run sanitizeSvg on a string and return the result as a string. */
function sanitize(svg: string): string {
return sanitizeSvg(Buffer.from(svg, "utf-8")).toString("utf-8");
}
// ── XSS: Script Injection ────────────────────────────────────────────────────
describe("SVG sanitizer -- XSS script injection", () => {
it("strips standard ");
const result = sanitize(svg);
expect(result).not.toContain("");
const result = sanitize(svg);
expect(result).not.toMatch(/");
const result = sanitize(svg);
expect(result).not.toContain("");
const result = sanitize(svg);
expect(result).not.toContain("CDATA");
expect(result).not.toContain("