From 03f88e3c3d9df89da29641ed3b42f23ce791e4f8 Mon Sep 17 00:00:00 2001 From: imccyu <276526105+imccyu@users.noreply.github.com> Date: Tue, 11 Aug 2026 20:25:12 +0800 Subject: [PATCH] test(gateway): report a business rejection under an aborted carrier as cancelled --- packages/api/gateway/tests/gateway.spec.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/packages/api/gateway/tests/gateway.spec.ts b/packages/api/gateway/tests/gateway.spec.ts index c6f3a59768..8bc7817c95 100644 --- a/packages/api/gateway/tests/gateway.spec.ts +++ b/packages/api/gateway/tests/gateway.spec.ts @@ -1011,6 +1011,24 @@ describe('TypertGatewayService', () => { error: { code: 'internal', message: 'non-error failure', details: {} }, }) + // A business rejection observed while the carrier signal is already aborted + // is the caller's cancellation, not an internal gateway fault. + const cancelledCall = new AbortController() + cancelledCall.abort(new Error('client disconnected')) + service.businessError = new Error('fixture business failure') + await expect(handler( + 'goals/fail', + { args: { request: null } }, + cancelledCall.signal, + )).resolves.toEqual({ + ok: false, + error: { + code: 'cancelled', + message: 'Remote invocation "goals/fail" was aborted', + details: {}, + }, + }) + await gatewayFiber.dispose() expect(connection.handler).toBeUndefined() })