From a82a41236e7cb5d7dd3bd203aa880f2cda4c2ae9 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 19 Feb 2026 07:52:27 +0000 Subject: [PATCH] test(web): dedupe creds-update trigger helper in session tests --- src/web/session.test.ts | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/web/session.test.ts b/src/web/session.test.ts index b1e9b1b716..0bf8fefc04 100644 --- a/src/web/session.test.ts +++ b/src/web/session.test.ts @@ -9,6 +9,18 @@ const { createWaSocket, formatError, logWebSelfId, waitForWaConnection } = await import("./session.js"); const useMultiFileAuthStateMock = vi.mocked(baileys.useMultiFileAuthState); +async function flushCredsUpdate() { + await new Promise((resolve) => setImmediate(resolve)); +} + +async function emitCredsUpdateAndReadSaveCreds() { + const sock = getLastSocket(); + const saveCreds = (await useMultiFileAuthStateMock.mock.results[0]?.value)?.saveCreds; + sock.ev.emit("creds.update", {}); + await flushCredsUpdate(); + return saveCreds; +} + function mockCredsJsonSpies(readContents: string) { const credsSuffix = path.join(".openclaw", "credentials", "whatsapp", "default", "creds.json"); const copySpy = vi.spyOn(fsSync, "copyFileSync").mockImplementation(() => {}); @@ -69,7 +81,7 @@ describe("web session", () => { const saveCreds = (await useMultiFileAuthStateMock.mock.results[0]?.value)?.saveCreds; // trigger creds.update listener sock.ev.emit("creds.update", {}); - await new Promise((resolve) => setImmediate(resolve)); + await flushCredsUpdate(); expect(saveCreds).toHaveBeenCalled(); }); @@ -145,11 +157,7 @@ describe("web session", () => { const creds = mockCredsJsonSpies("{"); await createWaSocket(false, false); - const sock = getLastSocket(); - const saveCreds = (await useMultiFileAuthStateMock.mock.results[0]?.value)?.saveCreds; - - sock.ev.emit("creds.update", {}); - await new Promise((resolve) => setImmediate(resolve)); + const saveCreds = await emitCredsUpdateAndReadSaveCreds(); expect(creds.copySpy).not.toHaveBeenCalled(); expect(saveCreds).toHaveBeenCalled(); @@ -182,14 +190,14 @@ describe("web session", () => { sock.ev.emit("creds.update", {}); sock.ev.emit("creds.update", {}); - await new Promise((resolve) => setImmediate(resolve)); + await flushCredsUpdate(); expect(inFlight).toBe(1); (release as (() => void) | null)?.(); // let both queued saves complete - await new Promise((resolve) => setImmediate(resolve)); - await new Promise((resolve) => setImmediate(resolve)); + await flushCredsUpdate(); + await flushCredsUpdate(); expect(saveCreds).toHaveBeenCalledTimes(2); expect(maxInFlight).toBe(1); @@ -207,11 +215,7 @@ describe("web session", () => { ); await createWaSocket(false, false); - const sock = getLastSocket(); - const saveCreds = (await useMultiFileAuthStateMock.mock.results[0]?.value)?.saveCreds; - - sock.ev.emit("creds.update", {}); - await new Promise((resolve) => setImmediate(resolve)); + const saveCreds = await emitCredsUpdateAndReadSaveCreds(); expect(creds.copySpy).toHaveBeenCalledTimes(1); const args = creds.copySpy.mock.calls[0] ?? [];