123 lines
3.0 KiB
TypeScript
123 lines
3.0 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import type { ClawdbotConfig } from "../config/config.js";
|
|
import { resolveCommandAuthorization } from "./command-auth.js";
|
|
import type { MsgContext } from "./templating.js";
|
|
|
|
describe("resolveCommandAuthorization", () => {
|
|
it("falls back from empty SenderId to SenderE164", () => {
|
|
const cfg = {
|
|
channels: { whatsapp: { allowFrom: ["+123"] } },
|
|
} as ClawdbotConfig;
|
|
|
|
const ctx = {
|
|
Provider: "whatsapp",
|
|
Surface: "whatsapp",
|
|
From: "whatsapp:+999",
|
|
SenderId: "",
|
|
SenderE164: "+123",
|
|
} as MsgContext;
|
|
|
|
const auth = resolveCommandAuthorization({
|
|
ctx,
|
|
cfg,
|
|
commandAuthorized: true,
|
|
});
|
|
|
|
expect(auth.senderId).toBe("+123");
|
|
expect(auth.isAuthorizedSender).toBe(true);
|
|
});
|
|
|
|
it("falls back from whitespace SenderId to SenderE164", () => {
|
|
const cfg = {
|
|
channels: { whatsapp: { allowFrom: ["+123"] } },
|
|
} as ClawdbotConfig;
|
|
|
|
const ctx = {
|
|
Provider: "whatsapp",
|
|
Surface: "whatsapp",
|
|
From: "whatsapp:+999",
|
|
SenderId: " ",
|
|
SenderE164: "+123",
|
|
} as MsgContext;
|
|
|
|
const auth = resolveCommandAuthorization({
|
|
ctx,
|
|
cfg,
|
|
commandAuthorized: true,
|
|
});
|
|
|
|
expect(auth.senderId).toBe("+123");
|
|
expect(auth.isAuthorizedSender).toBe(true);
|
|
});
|
|
|
|
it("falls back to From when SenderId and SenderE164 are whitespace", () => {
|
|
const cfg = {
|
|
channels: { whatsapp: { allowFrom: ["+999"] } },
|
|
} as ClawdbotConfig;
|
|
|
|
const ctx = {
|
|
Provider: "whatsapp",
|
|
Surface: "whatsapp",
|
|
From: "whatsapp:+999",
|
|
SenderId: " ",
|
|
SenderE164: " ",
|
|
} as MsgContext;
|
|
|
|
const auth = resolveCommandAuthorization({
|
|
ctx,
|
|
cfg,
|
|
commandAuthorized: true,
|
|
});
|
|
|
|
expect(auth.senderId).toBe("+999");
|
|
expect(auth.isAuthorizedSender).toBe(true);
|
|
});
|
|
|
|
it("falls back from un-normalizable SenderId to SenderE164", () => {
|
|
const cfg = {
|
|
channels: { whatsapp: { allowFrom: ["+123"] } },
|
|
} as ClawdbotConfig;
|
|
|
|
const ctx = {
|
|
Provider: "whatsapp",
|
|
Surface: "whatsapp",
|
|
From: "whatsapp:+999",
|
|
SenderId: "wat",
|
|
SenderE164: "+123",
|
|
} as MsgContext;
|
|
|
|
const auth = resolveCommandAuthorization({
|
|
ctx,
|
|
cfg,
|
|
commandAuthorized: true,
|
|
});
|
|
|
|
expect(auth.senderId).toBe("+123");
|
|
expect(auth.isAuthorizedSender).toBe(true);
|
|
});
|
|
|
|
it("prefers SenderE164 when SenderId does not match allowFrom", () => {
|
|
const cfg = {
|
|
channels: { whatsapp: { allowFrom: ["+41796666864"] } },
|
|
} as ClawdbotConfig;
|
|
|
|
const ctx = {
|
|
Provider: "whatsapp",
|
|
Surface: "whatsapp",
|
|
From: "whatsapp:120363401234567890@g.us",
|
|
SenderId: "123@lid",
|
|
SenderE164: "+41796666864",
|
|
} as MsgContext;
|
|
|
|
const auth = resolveCommandAuthorization({
|
|
ctx,
|
|
cfg,
|
|
commandAuthorized: true,
|
|
});
|
|
|
|
expect(auth.senderId).toBe("+41796666864");
|
|
expect(auth.isAuthorizedSender).toBe(true);
|
|
});
|
|
});
|