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(`
"