Forward SSE chunks without reserializing events Prevent generic proxy from buffering SSE endpoints Add regression tests for VS Code stream proxy
33 lines
1.2 KiB
JavaScript
33 lines
1.2 KiB
JavaScript
import { describe, expect, it, mock } from 'bun:test';
|
|
|
|
const { handleProxyBridgeMessage } = await import('./bridge-proxy-runtime');
|
|
|
|
const createDeps = () => ({
|
|
tryHandleLocalFsProxy: mock(() => Promise.resolve(null)),
|
|
buildUnavailableApiResponse: mock(() => ({ status: 503, headers: {}, bodyText: '' })),
|
|
sanitizeForwardHeaders: mock((headers) => headers || {}),
|
|
collectHeaders: mock(() => ({})),
|
|
base64EncodeUtf8: mock((text) => Buffer.from(text, 'utf8').toString('base64')),
|
|
});
|
|
|
|
describe('bridge proxy runtime', () => {
|
|
it('does not buffer SSE endpoints through the generic API proxy', async () => {
|
|
const deps = createDeps();
|
|
|
|
const response = await handleProxyBridgeMessage(
|
|
{ id: '1', type: 'api:proxy', payload: { method: 'GET', path: '/global/event?lastEventId=evt-1' } },
|
|
undefined,
|
|
deps,
|
|
);
|
|
|
|
expect(response?.success).toBe(true);
|
|
expect(response?.data).toMatchObject({
|
|
status: 400,
|
|
headers: { 'content-type': 'application/json' },
|
|
bodyText: JSON.stringify({ error: 'SSE requests must use api:sse:start' }),
|
|
});
|
|
expect(deps.tryHandleLocalFsProxy).not.toHaveBeenCalled();
|
|
expect(deps.buildUnavailableApiResponse).not.toHaveBeenCalled();
|
|
});
|
|
});
|