mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-06 06:41:08 +00:00
54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { resolvePairingCommandAuthState } from "./pair-command-auth.js";
|
|
|
|
describe("device-pair pairing command auth", () => {
|
|
it("treats non-gateway channels as external approvals", () => {
|
|
expect(
|
|
resolvePairingCommandAuthState({
|
|
channel: "telegram",
|
|
gatewayClientScopes: undefined,
|
|
}),
|
|
).toEqual({
|
|
isInternalGatewayCaller: false,
|
|
isMissingInternalPairingPrivilege: false,
|
|
approvalCallerScopes: undefined,
|
|
});
|
|
});
|
|
|
|
it("fails closed for webchat when scopes are absent", () => {
|
|
expect(
|
|
resolvePairingCommandAuthState({
|
|
channel: "webchat",
|
|
gatewayClientScopes: undefined,
|
|
}),
|
|
).toEqual({
|
|
isInternalGatewayCaller: true,
|
|
isMissingInternalPairingPrivilege: true,
|
|
approvalCallerScopes: [],
|
|
});
|
|
});
|
|
|
|
it("accepts pairing and admin scopes for internal callers", () => {
|
|
expect(
|
|
resolvePairingCommandAuthState({
|
|
channel: "webchat",
|
|
gatewayClientScopes: ["operator.write", "operator.pairing"],
|
|
}),
|
|
).toEqual({
|
|
isInternalGatewayCaller: true,
|
|
isMissingInternalPairingPrivilege: false,
|
|
approvalCallerScopes: ["operator.write", "operator.pairing"],
|
|
});
|
|
expect(
|
|
resolvePairingCommandAuthState({
|
|
channel: "webchat",
|
|
gatewayClientScopes: ["operator.admin"],
|
|
}),
|
|
).toEqual({
|
|
isInternalGatewayCaller: true,
|
|
isMissingInternalPairingPrivilege: false,
|
|
approvalCallerScopes: ["operator.admin"],
|
|
});
|
|
});
|
|
});
|