import { describe, it, expect } from 'vitest'; import { createLogger, Logger, maskUserId } from '../../src/utils/logger'; describe('Logger', () => { it('createLogger returns a Logger instance', () => { const logger = createLogger('test-service'); expect(logger).toBeInstanceOf(Logger); }); it('info() does not throw', () => { const logger = createLogger('test-service'); expect(() => logger.info('test message')).not.toThrow(); expect(() => logger.info('with context', { key: 'value' })).not.toThrow(); }); it('warn() does not throw', () => { const logger = createLogger('test-service'); expect(() => logger.warn('warning message')).not.toThrow(); expect(() => logger.warn('with context', { count: 42 })).not.toThrow(); }); it('error() does not throw', () => { const logger = createLogger('test-service'); expect(() => logger.error('error message')).not.toThrow(); expect(() => logger.error('with error', new Error('boom'))).not.toThrow(); expect(() => logger.error('full', new Error('boom'), { extra: true })).not.toThrow(); }); }); describe('maskUserId', () => { it('masks a normal user ID correctly', () => { expect(maskUserId('821596605')).toBe('8215****'); }); it('masks a short ID (<=4 chars) as all asterisks', () => { expect(maskUserId('1234')).toBe('****'); expect(maskUserId('abc')).toBe('****'); }); it('returns "unknown" for undefined', () => { expect(maskUserId(undefined)).toBe('unknown'); }); it('returns "unknown" for empty string', () => { expect(maskUserId('')).toBe('unknown'); }); it('handles numeric input', () => { expect(maskUserId(821596605)).toBe('8215****'); }); });