Files
ccs/tests/unit/commands/config-channels-command.test.ts
T
Kai (Tam Nhu) Tran e3566ed765 fix: avoid echoing invalid channel token values (#1542)
Avoids echoing invalid channel token values in config output.
2026-06-15 23:24:42 -04:00

74 lines
2.4 KiB
TypeScript

import { afterEach, describe, expect, it, spyOn } from 'bun:test';
import {
handleConfigChannelsCommand,
parseChannelsCommandArgs,
} from '../../../src/commands/config-channels-command';
const originalExitCode = process.exitCode;
afterEach(() => {
process.exitCode = originalExitCode ?? 0;
});
describe('config channels command parser', () => {
it('parses selection, unattended mode, and token channel input', () => {
const result = parseChannelsCommandArgs([
'--set',
'telegram,discord',
'--unattended',
'--set-token',
'telegram',
]);
expect(result.setSelection).toBe('telegram,discord');
expect(result.unattended).toBe(true);
expect(result.setTokenChannel).toBe('telegram');
});
it('supports legacy flags and clear-token variants', () => {
const result = parseChannelsCommandArgs([
'--disable',
'--no-unattended',
'--set-token=discord',
]);
const clearAll = parseChannelsCommandArgs(['--clear-token']);
const clearOne = parseChannelsCommandArgs(['--clear-token', 'discord']);
expect(result.disable).toBe(true);
expect(result.noUnattended).toBe(true);
expect(result.setTokenChannel).toBe('discord');
expect(clearAll.clearTokenAll).toBe(true);
expect(clearOne.clearTokenChannel).toBe('discord');
});
it('marks invalid set-token values without retaining secret-like input', () => {
const secretValue = 'telegram=SECRET_BOT_TOKEN_12345';
const result = parseChannelsCommandArgs(['--set-token', secretValue]);
expect(result.setTokenInvalid).toBe(true);
expect(JSON.stringify(result)).not.toContain(secretValue);
expect(JSON.stringify(result)).not.toContain('SECRET_BOT_TOKEN_12345');
});
});
describe('config channels command handler', () => {
it('does not echo invalid set-token values to stderr', async () => {
const secretValue = 'telegram=SECRET_BOT_TOKEN_12345';
const errors: string[] = [];
const errorSpy = spyOn(console, 'error').mockImplementation((...args: unknown[]) => {
errors.push(args.map(String).join(' '));
});
try {
await handleConfigChannelsCommand(['--set-token', secretValue]);
} finally {
errorSpy.mockRestore();
}
expect(process.exitCode).toBe(1);
expect(errors.join('\n')).toContain('Invalid --set-token value');
expect(errors.join('\n')).not.toContain(secretValue);
expect(errors.join('\n')).not.toContain('SECRET_BOT_TOKEN_12345');
});
});