Spaces:
Paused
Paused
| 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/); | |
| }); | |
| }); | |