import { describe, expect, it } from 'vitest'; import { isInactiveSseRequest, readSseRequestError, SseRequestError, } from './sseRequestLifecycle'; describe('sseRequestLifecycle', () => { it('treats an explicit abort as an inactive request', () => { const controller = new AbortController(); controller.abort(); expect(isInactiveSseRequest(controller.signal, 1, 1)).toBe(true); }); it('treats a superseded request as inactive', () => { const controller = new AbortController(); expect(isInactiveSseRequest(controller.signal, 2, 1)).toBe(true); expect(isInactiveSseRequest(controller.signal, 1, 1)).toBe(false); }); }); it('keeps HTTP rejection distinguishable from transport interruption', async () => { for (const status of [400, 403, 500]) { const error = await readSseRequestError( new Response(JSON.stringify({ message: '运行请求被拒绝' }), { status }), ); expect(error).toBeInstanceOf(SseRequestError); expect(error.status).toBe(status); expect(error.message).toBe('运行请求被拒绝'); } const error = await readSseRequestError( new Response('PRIVATE_GATEWAY_BODY', { status: 502 }), ); expect(error.message).toContain('502'); expect(error.message).not.toContain('PRIVATE_GATEWAY_BODY'); });