Files
opsxshell/test/utils/logger.test.ts
T

31 lines
1.1 KiB
TypeScript

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<string, unknown> = {}
value.self = value
expect(redactForLog(value)).toEqual({ self: '[Circular]' })
})
})