mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-21 15:01:03 +00:00
* Docs: clarify device pairing supersede behavior * Device pairing: supersede pending requests on auth changes
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { formatPendingRequests, type PendingPairingRequest } from "./notify.ts";
|
|
|
|
describe("device-pair notify pending formatting", () => {
|
|
it("includes role and scopes for pending requests", () => {
|
|
const pending: PendingPairingRequest[] = [
|
|
{
|
|
requestId: "req-1",
|
|
deviceId: "device-1",
|
|
displayName: "dev one",
|
|
platform: "ios",
|
|
role: "operator",
|
|
scopes: ["operator.admin", "operator.read"],
|
|
remoteIp: "198.51.100.2",
|
|
},
|
|
];
|
|
|
|
const text = formatPendingRequests(pending);
|
|
expect(text).toContain("Pending device pairing requests:");
|
|
expect(text).toContain("name=dev one");
|
|
expect(text).toContain("platform=ios");
|
|
expect(text).toContain("role=operator");
|
|
expect(text).toContain("scopes=operator.admin, operator.read");
|
|
expect(text).toContain("ip=198.51.100.2");
|
|
});
|
|
|
|
it("falls back to roles list and no scopes when role/scopes are absent", () => {
|
|
const pending: PendingPairingRequest[] = [
|
|
{
|
|
requestId: "req-2",
|
|
deviceId: "device-2",
|
|
roles: ["node", "operator"],
|
|
scopes: [],
|
|
},
|
|
];
|
|
|
|
const text = formatPendingRequests(pending);
|
|
expect(text).toContain("role=node, operator");
|
|
expect(text).toContain("scopes=none");
|
|
});
|
|
});
|