Files
metapi/src/shared/proxyLogMeta.test.ts
T

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: '',
});
});
});