mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-07 22:09:57 +00:00
refactor: share allowFrom formatter scaffolding
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { isAllowedParsedChatSender, isNormalizedSenderAllowed } from "./allow-from.js";
|
||||
import {
|
||||
formatAllowFromLowercase,
|
||||
formatNormalizedAllowFromEntries,
|
||||
isAllowedParsedChatSender,
|
||||
isNormalizedSenderAllowed,
|
||||
} from "./allow-from.js";
|
||||
|
||||
function parseAllowTarget(
|
||||
entry: string,
|
||||
@@ -102,3 +107,34 @@ describe("isNormalizedSenderAllowed", () => {
|
||||
).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe("formatAllowFromLowercase", () => {
|
||||
it("trims, strips prefixes, and lowercases entries", () => {
|
||||
expect(
|
||||
formatAllowFromLowercase({
|
||||
allowFrom: [" Telegram:UserA ", "tg:UserB", " "],
|
||||
stripPrefixRe: /^(telegram|tg):/i,
|
||||
}),
|
||||
).toEqual(["usera", "userb"]);
|
||||
});
|
||||
});
|
||||
|
||||
describe("formatNormalizedAllowFromEntries", () => {
|
||||
it("applies custom normalization after trimming", () => {
|
||||
expect(
|
||||
formatNormalizedAllowFromEntries({
|
||||
allowFrom: [" @Alice ", "", " @Bob "],
|
||||
normalizeEntry: (entry) => entry.replace(/^@/, "").toLowerCase(),
|
||||
}),
|
||||
).toEqual(["alice", "bob"]);
|
||||
});
|
||||
|
||||
it("filters empty normalized entries", () => {
|
||||
expect(
|
||||
formatNormalizedAllowFromEntries({
|
||||
allowFrom: ["@", "valid"],
|
||||
normalizeEntry: (entry) => entry.replace(/^@$/, ""),
|
||||
}),
|
||||
).toEqual(["valid"]);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user