import { describe, expect, it } from 'vitest' import { redactForLog } from '../../src/utils/logger' describe('redactForLog', () => { it('redacts nested credentials without mutating the source', () => { const source = { host: 'opsbase.cn', password: 'hunter2', auth: { passphrase: 'secret', username: 'root' }, } expect(redactForLog(source)).toEqual({ host: 'opsbase.cn', password: '[REDACTED]', auth: { passphrase: '[REDACTED]', username: 'root' }, }) expect(source.password).toBe('hunter2') }) it('redacts private keys, authorization values and URL passwords', () => { expect(redactForLog('-----BEGIN OPENSSH PRIVATE KEY-----\nabc')).toBe('[REDACTED]') expect(redactForLog('Bearer abc.def_123')).toBe('Bearer [REDACTED]') expect(redactForLog('ssh://root:password@example.com')).toBe('ssh://root:[REDACTED]@example.com') }) it('handles circular structures', () => { const value: Record = {} value.self = value expect(redactForLog(value)).toEqual({ self: '[Circular]' }) }) })