test: merge approval auth helper cases

This commit is contained in:
Peter Steinberger 2026-04-01 03:21:32 +01:00
parent d65c290748
commit d11df8e13e
No known key found for this signature in database
1 changed files with 46 additions and 37 deletions

View File

@ -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);
}
});
});