/** * Tests for the custom-tracker HTML sanitiser (#663 Phase 1). * * The field accepts admin-pasted `
`-style snippets for arbitrary * trackers (Plausible / Matomo / Pirsch / GA4 / GoatCounter / Fathom / * Cloudflare Web Analytics). We sanitise on save with a narrow allowlist * tuned for tracker scripts — defence-in-depth, even though the field is * admin-only. */ const { sanitizeTrackerSnippet } = require('../../src/services/trackers/customScriptSanitiser'); describe('sanitizeTrackerSnippet (#663)', () => { test('returns empty string for non-string / empty / whitespace input', () => { expect(sanitizeTrackerSnippet(null)).toBe(''); expect(sanitizeTrackerSnippet(undefined)).toBe(''); expect(sanitizeTrackerSnippet(42)).toBe(''); expect(sanitizeTrackerSnippet('')).toBe(''); expect(sanitizeTrackerSnippet(' ')).toBe(''); }); test('passes through a Plausible-style script tag with data-domain', () => { const input = ''; const out = sanitizeTrackerSnippet(input); expect(out).toContain('src="https://plausible.io/js/script.js"'); expect(out).toContain('data-domain="example.com"'); expect(out).toContain('defer'); }); test('passes through a Umami-style script with data-website-id', () => { const input = ''; const out = sanitizeTrackerSnippet(input); expect(out).toContain('src="https://analytics.example.com/script.js"'); expect(out).toContain('data-website-id="aaa-bbb-ccc"'); }); test('passes through inline script body unchanged', () => { const input = ''; const out = sanitizeTrackerSnippet(input); expect(out).toContain('window.GA = "x"'); expect(out).toContain('console.log("init")'); }); test('allows