62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { parseProxyLogMetadata } from './proxyLogMeta.js';
|
|
|
|
describe('proxyLogMeta', () => {
|
|
it('parses all supported proxy log prefixes', () => {
|
|
expect(parseProxyLogMetadata(
|
|
'[client:codex] [session:turn-1] [downstream:/v1/responses] [upstream:/responses] boom',
|
|
)).toEqual({
|
|
clientKind: 'codex',
|
|
sessionId: 'turn-1',
|
|
downstreamPath: '/v1/responses',
|
|
upstreamPath: '/responses',
|
|
messageText: 'boom',
|
|
});
|
|
});
|
|
|
|
it('keeps plain message text when no metadata prefixes exist', () => {
|
|
expect(parseProxyLogMetadata('network timeout')).toEqual({
|
|
clientKind: null,
|
|
sessionId: null,
|
|
downstreamPath: null,
|
|
upstreamPath: null,
|
|
messageText: 'network timeout',
|
|
});
|
|
});
|
|
|
|
it('handles mixed-case, partial, reordered, and empty metadata safely', () => {
|
|
expect(parseProxyLogMetadata('[CLIENT:codex] [SESSION:turn-1] boom')).toEqual({
|
|
clientKind: 'codex',
|
|
sessionId: 'turn-1',
|
|
downstreamPath: null,
|
|
upstreamPath: null,
|
|
messageText: 'boom',
|
|
});
|
|
|
|
expect(parseProxyLogMetadata('[client:codex] boom')).toEqual({
|
|
clientKind: 'codex',
|
|
sessionId: null,
|
|
downstreamPath: null,
|
|
upstreamPath: null,
|
|
messageText: 'boom',
|
|
});
|
|
|
|
expect(parseProxyLogMetadata('[upstream:/x] [client:codex] [session:1] msg')).toEqual({
|
|
clientKind: 'codex',
|
|
sessionId: '1',
|
|
downstreamPath: null,
|
|
upstreamPath: '/x',
|
|
messageText: 'msg',
|
|
});
|
|
|
|
expect(parseProxyLogMetadata('')).toEqual({
|
|
clientKind: null,
|
|
sessionId: null,
|
|
downstreamPath: null,
|
|
upstreamPath: null,
|
|
messageText: '',
|
|
});
|
|
});
|
|
});
|