




















@@ -111,6 +111,63 @@ describe("attachGatewayWsConnectionHandler", () => {
111111);
112112});
113113114+it("uses the gateway TLS scheme for canvas host URLs", async () => {
115+const listeners = new Map<string, (...args: unknown[]) => void>();
116+const wss = {
117+on: vi.fn((event: string, handler: (...args: unknown[]) => void) => {
118+listeners.set(event, handler);
119+}),
120+} as unknown as WebSocketServer;
121+const socket = Object.assign(new EventEmitter(), {
122+_socket: {
123+remoteAddress: "127.0.0.1",
124+remotePort: 1234,
125+localAddress: "127.0.0.1",
126+localPort: 5678,
127+},
128+send: vi.fn(),
129+close: vi.fn(),
130+});
131+const upgradeReq = {
132+headers: { host: "gateway.example.com" },
133+socket: { localAddress: "127.0.0.1" },
134+};
135+136+attachGatewayWsConnectionHandler({
137+ wss,
138+clients: new Set(),
139+preauthConnectionBudget: { release: vi.fn() } as never,
140+port: 18789,
141+canvasHostEnabled: true,
142+canvasHostScheme: "https",
143+resolvedAuth: createResolvedAuth("token"),
144+gatewayMethods: [],
145+events: [],
146+refreshHealthSnapshot: vi.fn(async () => ({}) as never),
147+logGateway: createLogger() as never,
148+logHealth: createLogger() as never,
149+logWsControl: createLogger() as never,
150+extraHandlers: {},
151+broadcast: vi.fn(),
152+buildRequestContext: () =>
153+({
154+unsubscribeAllSessionEvents: vi.fn(),
155+nodeRegistry: { unregister: vi.fn() },
156+nodeUnsubscribeAll: vi.fn(),
157+}) as never,
158+});
159+160+const onConnection = listeners.get("connection");
161+expect(onConnection).toBeTypeOf("function");
162+onConnection?.(socket, upgradeReq);
163+await waitForLazyMessageHandler();
164+165+const passed = attachGatewayWsMessageHandlerMock.mock.calls[0]?.[0] as {
166+canvasHostUrl?: string;
167+};
168+expect(passed.canvasHostUrl).toBe("https://gateway.example.com:443");
169+});
170+114171it("rejects late client registration after a pre-connect socket close", async () => {
115172const listeners = new Map<string, (...args: unknown[]) => void>();
116173const wss = {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。