Files
alighasami 3d5eaf9445
Security: Sync from Public / sync-from-public (push) Has been cancelled
Test: Benchmark Nightly / build (push) Has been cancelled
Test: Benchmark Nightly / Notify Cats on failure (push) Has been cancelled
CI: Python / Checks (push) Has been cancelled
Test: Evals Python / Workflow Comparison Python (push) Has been cancelled
Util: Check Docs URLs / check-docs-urls (push) Has been cancelled
Test: Visual Storybook / Cloudflare Pages (push) Has been cancelled
Test: E2E Performance / build-and-test-performance (push) Has been cancelled
Test: Workflows Nightly / Run Workflow Tests (push) Has been cancelled
Util: Cleanup CI Docker Images / Delete stale CI images (push) Has been cancelled
Test: Benchmark Destroy Env / build (push) Has been cancelled
Util: Update Node Popularity / update-popularity (push) Has been cancelled
Test: E2E Coverage Weekly / Coverage Tests (push) Has been cancelled
first commit
2026-03-17 16:22:57 +03:30

162 lines
6.4 KiB
TypeScript

import { createKeywordsCheckFn } from '../../actions/checks/keywords';
describe('keywordsCheck', () => {
it('should return the correct result', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['hello', 'world'] });
const result = await checkFn('Hello, world!');
expect(result.tripwireTriggered).toEqual(true);
});
it('should not match partial words', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['orld'] });
const result = await checkFn('Hello, world!');
expect(result.tripwireTriggered).toEqual(false);
});
it('should match numbers', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['world123'] });
const result = await checkFn('Hello, world123');
expect(result.tripwireTriggered).toEqual(true);
expect(result.info.matchedKeywords).toEqual(['world123']);
});
it('should not match partial numbers', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['world123'] });
const result = await checkFn('Hello, world12345');
expect(result.tripwireTriggered).toEqual(false);
});
it('should match underscore', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['w_o_r_l_d'] });
const result = await checkFn('Hello, w_o_r_l_d');
expect(result.tripwireTriggered).toEqual(true);
expect(result.info.matchedKeywords).toEqual(['w_o_r_l_d']);
});
it('should not match in between underscore', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['world'] });
const result = await checkFn('Hello, test_world_test');
expect(result.tripwireTriggered).toEqual(false);
});
it('should work with chinese characters', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['你好'] });
const result = await checkFn('你好');
expect(result.tripwireTriggered).toEqual(true);
});
it('should work with chinese characters with numbers', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['你好123'] });
const result = await checkFn('你好123');
expect(result.tripwireTriggered).toEqual(true);
expect(result.info.matchedKeywords).toEqual(['你好123']);
});
it('should not match partial chinese characters with numbers', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['你好123'] });
const result = await checkFn('你好12345');
expect(result.tripwireTriggered).toEqual(false);
});
it('should apply word boundaries to all keywords in a multi-keyword pattern', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['test', 'hello', 'world'] });
const result = await checkFn('testing hello world');
expect(result.tripwireTriggered).toEqual(true);
// Should match 'hello' and 'world', but NOT 'test' (which is part of 'testing')
expect(result.info.matchedKeywords).toEqual(['hello', 'world']);
});
it('matches keywords that start with special characters embedded in text', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['@foo'] });
const result = await checkFn('Reach me via example@foo.com later');
expect(result.tripwireTriggered).toBe(true);
expect(result.info?.matchedKeywords).toEqual(['@foo']);
});
it('matches keywords that start with # even when preceded by letters', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['#foo'] });
const result = await checkFn('Use example#foo for the ID');
expect(result.tripwireTriggered).toBe(true);
expect(result.info?.matchedKeywords).toEqual(['#foo']);
});
it('ignores keywords that become empty after sanitization', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['!!!'] });
const result = await checkFn('Totally benign text');
expect(result.tripwireTriggered).toBe(false);
expect(result.info?.matchedKeywords).toEqual([]);
});
it('still matches other keywords when some sanitize to empty strings', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['...', 'secret!!!'] });
const result = await checkFn('Please keep this secret!');
expect(result.tripwireTriggered).toBe(true);
expect(result.info?.matchedKeywords).toEqual(['secret']);
});
it('matches keywords ending with special characters', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['foo@'] });
const result = await checkFn('Use foo@ in the config');
expect(result.tripwireTriggered).toBe(true);
expect(result.info?.matchedKeywords).toEqual(['foo@']);
});
it('matches keywords ending with punctuation when followed by word characters', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['foo@'] });
const result = await checkFn('Check foo@example');
expect(result.tripwireTriggered).toBe(true);
expect(result.info?.matchedKeywords).toEqual(['foo@']);
});
it('matches mixed script keywords', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['hello你好world'] });
const result = await checkFn('Welcome to hello你好world section');
expect(result.tripwireTriggered).toBe(true);
expect(result.info?.matchedKeywords).toEqual(['hello你好world']);
});
it('does not match partial mixed script keywords', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['hello你好world'] });
const result = await checkFn('This is hello你好worldextra');
expect(result.tripwireTriggered).toBe(false);
});
it('matches Arabic characters', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['مرحبا'] });
const result = await checkFn('مرحبا بك');
expect(result.tripwireTriggered).toBe(true);
expect(result.info?.matchedKeywords).toEqual(['مرحبا']);
});
it('matches Cyrillic characters', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['Привіт'] });
const result = await checkFn('Привіт світ');
expect(result.tripwireTriggered).toBe(true);
expect(result.info?.matchedKeywords).toEqual(['Привіт']);
});
it('matches keywords with only punctuation', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['@@'] });
const result = await checkFn('Use the @@ symbol');
expect(result.tripwireTriggered).toBe(true);
expect(result.info?.matchedKeywords).toEqual(['@@']);
});
it('matches mixed punctuation and alphanumeric keywords', async () => {
const checkFn = createKeywordsCheckFn({ keywords: ['@user123@'] });
const result = await checkFn('Contact via @user123@');
expect(result.tripwireTriggered).toBe(true);
expect(result.info?.matchedKeywords).toEqual(['@user123@']);
});
});