summaryrefslogtreecommitdiff
path: root/tst/validate_identifier.test.ts
blob: de5ac5e09cc365d523213c4aa4ed244a986572da (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { validateIdentifier, validateExecutionEntries } from '../lib/index';

describe('process/validate_identifier', () => {
    test('validateIdentifier accepts safe tokens', () => {
        expect(validateIdentifier('abcDEF_0123-:.?/&= ')).toBe(true);
        expect(validateIdentifier('path/to/file.txt')).toBe(true);
    });

    test('validateIdentifier rejects path traversal', () => {
        expect(validateIdentifier('../etc/passwd')).toBe(false);
        expect(validateIdentifier('ok..not')).toBe(false);
    });

    test('validateIdentifier rejects unsafe characters', () => {
        expect(validateIdentifier('rm -rf /;')).toBe(false);
        expect(validateIdentifier('$HOME')).toBe(false);
    });

    test('validateExecutionEntries returns right for safe env entries', () => {
        const res = validateExecutionEntries({ FOO: 'bar', HELLO: 'world-123' });
        expect(res.right().get()).toEqual({ FOO: 'bar', HELLO: 'world-123' });
    });

    test('validateExecutionEntries returns invalid entries', () => {
        const res = validateExecutionEntries({ OK: 'good', BAD: '../nope' });
        expect(res.left().get()).toEqual([['BAD', '../nope']]);
    });
});