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']]); }); });