Skip to content

Commit d63324e

Browse files
committed
Fix resetTimeoutOnProgress option not being checked, add test
1 parent 92da586 commit d63324e

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

src/shared/protocol.test.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,44 @@ describe("protocol tests", () => {
7171
jest.useRealTimers();
7272
});
7373

74+
test("should not reset timeout when resetTimeoutOnProgress is false", async () => {
75+
await protocol.connect(transport);
76+
const request = { method: "example", params: {} };
77+
const mockSchema: ZodType<{ result: string }> = z.object({
78+
result: z.string(),
79+
});
80+
const onProgressMock = jest.fn();
81+
const requestPromise = protocol.request(request, mockSchema, {
82+
timeout: 1000,
83+
resetTimeoutOnProgress: false,
84+
onprogress: onProgressMock,
85+
});
86+
87+
jest.advanceTimersByTime(800);
88+
89+
if (transport.onmessage) {
90+
transport.onmessage({
91+
jsonrpc: "2.0",
92+
method: "notifications/progress",
93+
params: {
94+
progressToken: 0,
95+
progress: 50,
96+
total: 100,
97+
},
98+
});
99+
}
100+
await Promise.resolve();
101+
102+
expect(onProgressMock).toHaveBeenCalledWith({
103+
progress: 50,
104+
total: 100,
105+
});
106+
107+
jest.advanceTimersByTime(201);
108+
109+
await expect(requestPromise).rejects.toThrow("Request timed out");
110+
});
111+
74112
test("should reset timeout when progress notification is received", async () => {
75113
await protocol.connect(transport);
76114
const request = { method: "example", params: {} };

0 commit comments

Comments
 (0)