mirror of https://github.com/openclaw/openclaw.git
test: merge approval auth helper cases
This commit is contained in:
parent
d65c290748
commit
d11df8e13e
|
|
@ -2,48 +2,57 @@ import { describe, expect, it } from "vitest";
|
|||
import { createResolvedApproverActionAuthAdapter } from "./approval-auth-helpers.js";
|
||||
|
||||
describe("createResolvedApproverActionAuthAdapter", () => {
|
||||
it("falls back to generic same-chat auth when no approvers resolve", () => {
|
||||
const auth = createResolvedApproverActionAuthAdapter({
|
||||
it.each([
|
||||
{
|
||||
name: "falls back to generic same-chat auth when no approvers resolve",
|
||||
channelLabel: "Slack",
|
||||
resolveApprovers: () => [],
|
||||
});
|
||||
|
||||
expect(
|
||||
auth.authorizeActorAction({
|
||||
cfg: {},
|
||||
senderId: "U_OWNER",
|
||||
action: "approve",
|
||||
approvalKind: "exec",
|
||||
}),
|
||||
).toEqual({ authorized: true });
|
||||
});
|
||||
|
||||
it("allows matching normalized approvers and rejects others", () => {
|
||||
const auth = createResolvedApproverActionAuthAdapter({
|
||||
normalizeSenderId: undefined,
|
||||
cases: [
|
||||
{
|
||||
senderId: "U_OWNER",
|
||||
approvalKind: "exec" as const,
|
||||
expected: { authorized: true },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "allows matching normalized approvers and rejects others",
|
||||
channelLabel: "Signal",
|
||||
resolveApprovers: () => ["uuid:owner"],
|
||||
normalizeSenderId: (value) => value.trim().toLowerCase(),
|
||||
normalizeSenderId: (value: string) => value.trim().toLowerCase(),
|
||||
cases: [
|
||||
{
|
||||
senderId: " UUID:OWNER ",
|
||||
approvalKind: "plugin" as const,
|
||||
expected: { authorized: true },
|
||||
},
|
||||
{
|
||||
senderId: "uuid:attacker",
|
||||
approvalKind: "plugin" as const,
|
||||
expected: {
|
||||
authorized: false,
|
||||
reason: "❌ You are not authorized to approve plugin requests on Signal.",
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
])("$name", ({ channelLabel, resolveApprovers, normalizeSenderId, cases }) => {
|
||||
const auth = createResolvedApproverActionAuthAdapter({
|
||||
channelLabel,
|
||||
resolveApprovers,
|
||||
normalizeSenderId,
|
||||
});
|
||||
|
||||
expect(
|
||||
auth.authorizeActorAction({
|
||||
cfg: {},
|
||||
senderId: " UUID:OWNER ",
|
||||
action: "approve",
|
||||
approvalKind: "plugin",
|
||||
}),
|
||||
).toEqual({ authorized: true });
|
||||
|
||||
expect(
|
||||
auth.authorizeActorAction({
|
||||
cfg: {},
|
||||
senderId: "uuid:attacker",
|
||||
action: "approve",
|
||||
approvalKind: "plugin",
|
||||
}),
|
||||
).toEqual({
|
||||
authorized: false,
|
||||
reason: "❌ You are not authorized to approve plugin requests on Signal.",
|
||||
});
|
||||
for (const testCase of cases) {
|
||||
expect(
|
||||
auth.authorizeActorAction({
|
||||
cfg: {},
|
||||
senderId: testCase.senderId,
|
||||
action: "approve",
|
||||
approvalKind: testCase.approvalKind,
|
||||
}),
|
||||
).toEqual(testCase.expected);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue