refactor: share allowFrom formatter scaffolding

This commit is contained in:
Peter Steinberger
2026-03-07 23:00:03 +00:00
parent c91bfa830a
commit feac26c3b7
13 changed files with 94 additions and 48 deletions

View File

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