






















@@ -292,17 +292,21 @@ describe("MatrixClient request hardening", () => {
292292expect(fetchMock).not.toHaveBeenCalled();
293293});
294294295-it("injects a guarded fetchFn into matrix-js-sdk", () => {
296-const client = new MatrixClient("https://matrix.example.org", "token", {
297-ssrfPolicy: { allowPrivateNetwork: true },
298-});
295+it("injects a guarded fetchFn into matrix-js-sdk", async () => {
296+const client = new MatrixClient("https://matrix.example.org", "token");
299297expect(client).toBeInstanceOf(MatrixClient);
300298301299expect(lastCreateClientOpts).toMatchObject({
302300baseUrl: "https://matrix.example.org",
303301accessToken: "token",
304302});
305-expect(lastCreateClientOpts?.fetchFn).toEqual(expect.any(Function));
303+const fetchFn = lastCreateClientOpts?.fetchFn as typeof fetch | undefined;
304+if (!fetchFn) {
305+throw new Error("expected Matrix SDK guarded fetch");
306+}
307+await expect(fetchFn("http://127.0.0.1/_matrix/client/v3/account/whoami")).rejects.toThrow(
308+/private|blocked|not allowed/i,
309+);
306310});
307311308312it("prefers authenticated client media downloads", async () => {
@@ -603,7 +607,6 @@ describe("MatrixClient request hardening", () => {
603607if (!store) {
604608throw new Error("expected Matrix sync store");
605609}
606-expect(store.flush).toEqual(expect.any(Function));
607610const flushSpy = vi.spyOn(store, "flush").mockResolvedValue();
608611609612await client.stopAndPersist();
@@ -1167,11 +1170,17 @@ describe("MatrixClient event bridge", () => {
11671170});
1168117111691172await vi.waitFor(() => {
1170-expect(releaseSyncReady).toEqual(expect.any(Function));
1173+if (!releaseSyncReady) {
1174+throw new Error("expected Matrix sync ready release callback");
1175+}
11711176});
11721177expect(resolved).toBe(false);
117311781174-releaseSyncReady?.();
1179+const release = releaseSyncReady;
1180+if (!release) {
1181+throw new Error("expected Matrix sync ready release callback");
1182+}
1183+release();
11751184await startPromise;
1176118511771186expect(resolved).toBe(true);
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。