diff --git a/extensions/matrix/src/matrix/sdk.test.ts b/extensions/matrix/src/matrix/sdk.test.ts index ddfa24d0c36..693e638e2ad 100644 --- a/extensions/matrix/src/matrix/sdk.test.ts +++ b/extensions/matrix/src/matrix/sdk.test.ts @@ -292,17 +292,21 @@ describe("MatrixClient request hardening", () => { expect(fetchMock).not.toHaveBeenCalled(); }); - it("injects a guarded fetchFn into matrix-js-sdk", () => { - const client = new MatrixClient("https://matrix.example.org", "token", { - ssrfPolicy: { allowPrivateNetwork: true }, - }); + it("injects a guarded fetchFn into matrix-js-sdk", async () => { + const client = new MatrixClient("https://matrix.example.org", "token"); expect(client).toBeInstanceOf(MatrixClient); expect(lastCreateClientOpts).toMatchObject({ baseUrl: "https://matrix.example.org", accessToken: "token", }); - expect(lastCreateClientOpts?.fetchFn).toEqual(expect.any(Function)); + const fetchFn = lastCreateClientOpts?.fetchFn as typeof fetch | undefined; + if (!fetchFn) { + throw new Error("expected Matrix SDK guarded fetch"); + } + await expect(fetchFn("http://127.0.0.1/_matrix/client/v3/account/whoami")).rejects.toThrow( + /private|blocked|not allowed/i, + ); }); it("prefers authenticated client media downloads", async () => { @@ -603,7 +607,6 @@ describe("MatrixClient request hardening", () => { if (!store) { throw new Error("expected Matrix sync store"); } - expect(store.flush).toEqual(expect.any(Function)); const flushSpy = vi.spyOn(store, "flush").mockResolvedValue(); await client.stopAndPersist(); @@ -1167,11 +1170,17 @@ describe("MatrixClient event bridge", () => { }); await vi.waitFor(() => { - expect(releaseSyncReady).toEqual(expect.any(Function)); + if (!releaseSyncReady) { + throw new Error("expected Matrix sync ready release callback"); + } }); expect(resolved).toBe(false); - releaseSyncReady?.(); + const release = releaseSyncReady; + if (!release) { + throw new Error("expected Matrix sync ready release callback"); + } + release(); await startPromise; expect(resolved).toBe(true); diff --git a/extensions/slack/src/monitor/message-handler/dispatch.preview-fallback.test.ts b/extensions/slack/src/monitor/message-handler/dispatch.preview-fallback.test.ts index 3b1a1388ea3..689ee830b07 100644 --- a/extensions/slack/src/monitor/message-handler/dispatch.preview-fallback.test.ts +++ b/extensions/slack/src/monitor/message-handler/dispatch.preview-fallback.test.ts @@ -904,7 +904,7 @@ describe("dispatchPreparedSlackMessage preview fallback", () => { ); expect(capturedReplyOptions?.suppressDefaultToolProgressMessages).toBe(true); - expect(requireCapturedItemEventHandler()).toEqual(expect.any(Function)); + await requireCapturedItemEventHandler()({ progressText: "hidden progress" }); }); it("does not create a blank Slack progress draft when label and lines are disabled", async () => { @@ -943,7 +943,7 @@ describe("dispatchPreparedSlackMessage preview fallback", () => { ); expect(capturedReplyOptions?.suppressDefaultToolProgressMessages).toBe(true); - expect(requireCapturedItemEventHandler()).toEqual(expect.any(Function)); + await requireCapturedItemEventHandler()({ progressText: "hidden partial progress" }); }); it("starts native streams in the first-reply thread for top-level channel messages", async () => {