Files
RSSHub/lib/middleware/filter-engine.test.ts
T

40 lines
1.2 KiB
TypeScript

import { afterAll, afterEach, describe, expect, it, vi } from 'vitest';
afterAll(() => {
delete process.env.FILTER_REGEX_ENGINE;
});
afterEach(() => {
delete process.env.FILTER_REGEX_ENGINE;
vi.resetModules();
});
describe('filter-engine', () => {
it('filter RE2 engine ReDoS attack', async () => {
const app = (await import('@/app')).default;
const response = await app.request('/test/1?filter=abc(%3F%3Ddef)');
expect(response.status).toBe(503);
expect(await response.text()).toMatch(/RE2JSSyntaxException/);
});
it('filter Regexp engine backward compatibility', async () => {
process.env.FILTER_REGEX_ENGINE = 'regexp';
const app = (await import('@/app')).default;
const response = await app.request('/test/1?filter=abc(%3F%3Ddef)');
expect(response.status).toBe(200);
});
it('filter Regexp engine test config', async () => {
process.env.FILTER_REGEX_ENGINE = 'somethingelse';
const app = (await import('@/app')).default;
const response = await app.request('/test/1?filter=abc(%3F%3Ddef)');
expect(response.status).toBe(503);
expect(await response.text()).toMatch(/somethingelse/);
});
});