mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 08:11:26 +00:00
chore: Fix types in tests 23/N.
This commit is contained in:
@@ -37,6 +37,9 @@ vi.mock("./qr-image.js", () => ({
|
||||
|
||||
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr.js");
|
||||
const { createWaSocket, waitForWaConnection, logoutWeb } = await import("./session.js");
|
||||
const createWaSocketMock = vi.mocked(createWaSocket);
|
||||
const waitForWaConnectionMock = vi.mocked(waitForWaConnection);
|
||||
const logoutWebMock = vi.mocked(logoutWeb);
|
||||
|
||||
describe("login-qr", () => {
|
||||
beforeEach(() => {
|
||||
@@ -44,7 +47,7 @@ describe("login-qr", () => {
|
||||
});
|
||||
|
||||
it("restarts login once on status 515 and completes", async () => {
|
||||
waitForWaConnection
|
||||
waitForWaConnectionMock
|
||||
.mockRejectedValueOnce({ output: { statusCode: 515 } })
|
||||
.mockResolvedValueOnce(undefined);
|
||||
|
||||
@@ -54,7 +57,7 @@ describe("login-qr", () => {
|
||||
const result = await waitForWebLogin({ timeoutMs: 5000 });
|
||||
|
||||
expect(result.connected).toBe(true);
|
||||
expect(createWaSocket).toHaveBeenCalledTimes(2);
|
||||
expect(logoutWeb).not.toHaveBeenCalled();
|
||||
expect(createWaSocketMock).toHaveBeenCalledTimes(2);
|
||||
expect(logoutWebMock).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -44,6 +44,9 @@ vi.mock("./session.js", () => {
|
||||
});
|
||||
|
||||
const { createWaSocket, waitForWaConnection, formatError } = await import("./session.js");
|
||||
const createWaSocketMock = vi.mocked(createWaSocket);
|
||||
const waitForWaConnectionMock = vi.mocked(waitForWaConnection);
|
||||
const formatErrorMock = vi.mocked(formatError);
|
||||
const { loginWeb } = await import("./login.js");
|
||||
|
||||
describe("loginWeb coverage", () => {
|
||||
@@ -57,27 +60,29 @@ describe("loginWeb coverage", () => {
|
||||
});
|
||||
|
||||
it("restarts once when WhatsApp requests code 515", async () => {
|
||||
waitForWaConnection
|
||||
waitForWaConnectionMock
|
||||
.mockRejectedValueOnce({ output: { statusCode: 515 } })
|
||||
.mockResolvedValueOnce(undefined);
|
||||
|
||||
const runtime = { log: vi.fn(), error: vi.fn() } as never;
|
||||
await loginWeb(false, waitForWaConnection as never, runtime);
|
||||
await loginWeb(false, waitForWaConnectionMock as never, runtime);
|
||||
|
||||
expect(createWaSocket).toHaveBeenCalledTimes(2);
|
||||
const firstSock = await createWaSocket.mock.results[0].value;
|
||||
expect(createWaSocketMock).toHaveBeenCalledTimes(2);
|
||||
const firstSock = await createWaSocketMock.mock.results[0]?.value;
|
||||
expect(firstSock.ws.close).toHaveBeenCalled();
|
||||
vi.runAllTimers();
|
||||
const secondSock = await createWaSocket.mock.results[1].value;
|
||||
const secondSock = await createWaSocketMock.mock.results[1]?.value;
|
||||
expect(secondSock.ws.close).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("clears creds and throws when logged out", async () => {
|
||||
waitForWaConnection.mockRejectedValueOnce({
|
||||
waitForWaConnectionMock.mockRejectedValueOnce({
|
||||
output: { statusCode: DisconnectReason.loggedOut },
|
||||
});
|
||||
|
||||
await expect(loginWeb(false, waitForWaConnection as never)).rejects.toThrow(/cache cleared/i);
|
||||
await expect(loginWeb(false, waitForWaConnectionMock as never)).rejects.toThrow(
|
||||
/cache cleared/i,
|
||||
);
|
||||
expect(rmMock).toHaveBeenCalledWith(authDir, {
|
||||
recursive: true,
|
||||
force: true,
|
||||
@@ -85,10 +90,10 @@ describe("loginWeb coverage", () => {
|
||||
});
|
||||
|
||||
it("formats and rethrows generic errors", async () => {
|
||||
waitForWaConnection.mockRejectedValueOnce(new Error("boom"));
|
||||
await expect(loginWeb(false, waitForWaConnection as never)).rejects.toThrow(
|
||||
waitForWaConnectionMock.mockRejectedValueOnce(new Error("boom"));
|
||||
await expect(loginWeb(false, waitForWaConnectionMock as never)).rejects.toThrow(
|
||||
"formatted:Error: boom",
|
||||
);
|
||||
expect(formatError).toHaveBeenCalled();
|
||||
expect(formatErrorMock).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -7,6 +7,7 @@ import { baileys, getLastSocket, resetBaileysMocks, resetLoadConfigMock } from "
|
||||
|
||||
const { createWaSocket, formatError, logWebSelfId, waitForWaConnection } =
|
||||
await import("./session.js");
|
||||
const useMultiFileAuthStateMock = vi.mocked(baileys.useMultiFileAuthState);
|
||||
|
||||
function mockCredsJsonSpies(readContents: string) {
|
||||
const credsSuffix = path.join(".openclaw", "credentials", "whatsapp", "default", "creds.json");
|
||||
@@ -65,7 +66,7 @@ describe("web session", () => {
|
||||
expect(passedLogger?.level).toBe("silent");
|
||||
expect(typeof passedLogger?.trace).toBe("function");
|
||||
const sock = getLastSocket();
|
||||
const saveCreds = (await baileys.useMultiFileAuthState.mock.results[0].value).saveCreds;
|
||||
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));
|
||||
@@ -145,7 +146,7 @@ describe("web session", () => {
|
||||
|
||||
await createWaSocket(false, false);
|
||||
const sock = getLastSocket();
|
||||
const saveCreds = (await baileys.useMultiFileAuthState.mock.results[0].value).saveCreds;
|
||||
const saveCreds = (await useMultiFileAuthStateMock.mock.results[0]?.value)?.saveCreds;
|
||||
|
||||
sock.ev.emit("creds.update", {});
|
||||
await new Promise<void>((resolve) => setImmediate(resolve));
|
||||
@@ -170,7 +171,7 @@ describe("web session", () => {
|
||||
await gate;
|
||||
inFlight -= 1;
|
||||
});
|
||||
baileys.useMultiFileAuthState.mockResolvedValueOnce({
|
||||
useMultiFileAuthStateMock.mockResolvedValueOnce({
|
||||
state: { creds: {}, keys: {} },
|
||||
saveCreds,
|
||||
});
|
||||
@@ -184,7 +185,9 @@ describe("web session", () => {
|
||||
await new Promise<void>((resolve) => setImmediate(resolve));
|
||||
expect(inFlight).toBe(1);
|
||||
|
||||
release?.();
|
||||
if (release) {
|
||||
release();
|
||||
}
|
||||
|
||||
// let both queued saves complete
|
||||
await new Promise<void>((resolve) => setImmediate(resolve));
|
||||
@@ -207,7 +210,7 @@ describe("web session", () => {
|
||||
|
||||
await createWaSocket(false, false);
|
||||
const sock = getLastSocket();
|
||||
const saveCreds = (await baileys.useMultiFileAuthState.mock.results[0].value).saveCreds;
|
||||
const saveCreds = (await useMultiFileAuthStateMock.mock.results[0]?.value)?.saveCreds;
|
||||
|
||||
sock.ev.emit("creds.update", {});
|
||||
await new Promise<void>((resolve) => setImmediate(resolve));
|
||||
|
||||
Reference in New Issue
Block a user