import { baseUrl } from 'marked-base-url'; import { describe, expect, test } from 'vitest'; import { Markdown } from './markdown'; // add a random extension to the instance const instance = Markdown.create(baseUrl('https://unraid.net')); const parse = async (content: string) => ({ fromDefault: await Markdown.parse(content), fromInstance: await instance.parse(content), }); describe('sanitization', () => { test('strips javascript', async () => { const parsed = await parse(``); expect(parsed.fromDefault).toMatchSnapshot(); expect(parsed.fromInstance).toMatchSnapshot(); }); test('strips various XSS vectors', async () => { const vectors = [ 'click me', "", '">', '', ]; for (const vector of vectors) { const parsed = await parse(vector); expect(parsed.fromDefault).not.toContain('javascript:'); expect(parsed.fromInstance).not.toContain('javascript:'); } }); }); describe('extensibility', () => { test('works with other extensions', async () => { const parsed = await parse(`[Contact](/contact)`); expect(parsed.fromDefault).toMatchInlineSnapshot(` "

Contact

" `); expect(parsed.fromInstance).toMatchInlineSnapshot(` "

Contact

" `); }); });