Files
ccs/tests/unit/commands/config-auth-command.test.ts
T

82 lines
2.3 KiB
TypeScript

import { afterEach, beforeEach, describe, expect, it, mock } from 'bun:test';
function stripAnsi(input: string): string {
return input.replace(/\u001b\[[0-9;]*m/g, '');
}
let calls: string[] = [];
let logLines: string[] = [];
let originalConsoleLog: typeof console.log;
let originalProcessExit: typeof process.exit;
beforeEach(() => {
calls = [];
logLines = [];
originalConsoleLog = console.log;
originalProcessExit = process.exit;
console.log = (...args: unknown[]) => {
logLines.push(args.map(String).join(' '));
};
mock.module('../../../src/commands/config-auth/setup-command', () => ({
handleSetup: async () => {
calls.push('setup');
},
}));
mock.module('../../../src/commands/config-auth/show-command', () => ({
handleShow: async () => {
calls.push('show');
},
}));
mock.module('../../../src/commands/config-auth/disable-command', () => ({
handleDisable: async () => {
calls.push('disable');
},
}));
});
afterEach(() => {
console.log = originalConsoleLog;
process.exit = originalProcessExit;
mock.restore();
});
async function loadHandleConfigAuthCommand() {
const mod = await import(`../../../src/commands/config-auth?test=${Date.now()}-${Math.random()}`);
return mod.handleConfigAuthCommand;
}
describe('config-auth command routing', () => {
it('routes the status alias to show', async () => {
const handleConfigAuthCommand = await loadHandleConfigAuthCommand();
await handleConfigAuthCommand(['status']);
expect(calls).toEqual(['show']);
});
it('keeps auth help available', async () => {
const handleConfigAuthCommand = await loadHandleConfigAuthCommand();
await handleConfigAuthCommand(['--help']);
expect(calls).toEqual([]);
expect(stripAnsi(logLines.join('\n'))).toContain('Dashboard Auth Management');
});
it('rejects trailing arguments for zero-arg subcommands', async () => {
const handleConfigAuthCommand = await loadHandleConfigAuthCommand();
process.exit = ((code?: number) => {
throw new Error(`process.exit(${code ?? 0})`);
}) as typeof process.exit;
await expect(handleConfigAuthCommand(['disable', 'now'])).rejects.toThrow('process.exit(1)');
expect(calls).toEqual([]);
expect(logLines.join('\n')).toContain('Unexpected arguments for "config auth disable": now');
});
});