import {afterEach, describe, expect, it, vi} from "vitest"; import DOMPurify from "dompurify"; import {purifyBody, purifyTitle} from "@/logic/utils"; afterEach(() => { vi.restoreAllMocks(); }); describe("purifyBody", () => { it("sets required security attributes for links", () => { const raw = 'Example'; const purified = purifyBody({raw, default_: "No description"}); expect(purified).toContain('href="https://example.com"'); expect(purified).toContain('target="_blank"'); expect(purified).toContain('rel="noopener noreferrer nofollow"'); expect(purified).toContain('referrerpolicy="strict-origin-when-cross-origin"'); }); }); describe("purifyTitle", () => { it("returns default value for null and empty values", () => { expect(purifyTitle({raw: null, default_: "No title"})).toBe("No title"); expect(purifyTitle({raw: " ", default_: "No title"})).toBe("No title"); }); it("sets required security attributes for links in sanitized output", () => { vi.spyOn(DOMPurify, "sanitize").mockReturnValue( 'Example' ); const purified = purifyTitle({raw: "Example title", default_: "No title"}); expect(purified).toContain('href="https://example.com"'); expect(purified).toContain('target="_blank"'); expect(purified).toContain('rel="noopener noreferrer nofollow"'); expect(purified).toContain('referrerpolicy="strict-origin-when-cross-origin"'); }); });