openclaw/src/infra/pairing-pending.test.ts
2026-03-13 20:38:24 +00:00

49 lines
1.4 KiB
TypeScript

import { describe, expect, it, vi } from "vitest";
import { rejectPendingPairingRequest } from "./pairing-pending.js";
describe("rejectPendingPairingRequest", () => {
it("returns null and skips persistence when the request is missing", async () => {
const persistState = vi.fn();
await expect(
rejectPendingPairingRequest({
requestId: "missing",
idKey: "deviceId",
loadState: async () => ({ pendingById: {} }),
persistState,
getId: (pending: { id: string }) => pending.id,
}),
).resolves.toBeNull();
expect(persistState).not.toHaveBeenCalled();
});
it("removes the request, persists, and returns the dynamic id key", async () => {
const state: { pendingById: Record<string, { accountId: string }> } = {
pendingById: {
keep: { accountId: "keep-me" },
reject: { accountId: "acct-42" },
},
};
const persistState = vi.fn(async () => undefined);
await expect(
rejectPendingPairingRequest({
requestId: "reject",
idKey: "accountId",
loadState: async () => state,
persistState,
getId: (pending: { accountId: string }) => pending.accountId,
}),
).resolves.toEqual({
requestId: "reject",
accountId: "acct-42",
});
expect(state.pendingById).toEqual({
keep: { accountId: "keep-me" },
});
expect(persistState).toHaveBeenCalledWith(state);
});
});