mirror of
https://github.com/openclaw/openclaw.git
synced 2026-02-19 18:39:20 -05:00
test(web): dedupe creds-update trigger helper in session tests
This commit is contained in:
@@ -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<void>((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<void>((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<void>((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<void>((resolve) => setImmediate(resolve));
|
||||
await flushCredsUpdate();
|
||||
expect(inFlight).toBe(1);
|
||||
|
||||
(release as (() => void) | null)?.();
|
||||
|
||||
// let both queued saves complete
|
||||
await new Promise<void>((resolve) => setImmediate(resolve));
|
||||
await new Promise<void>((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<void>((resolve) => setImmediate(resolve));
|
||||
const saveCreds = await emitCredsUpdateAndReadSaveCreds();
|
||||
|
||||
expect(creds.copySpy).toHaveBeenCalledTimes(1);
|
||||
const args = creds.copySpy.mock.calls[0] ?? [];
|
||||
|
||||
Reference in New Issue
Block a user