refactor: share allow-from merge and sender-id checks

This commit is contained in:
Peter Steinberger
2026-02-19 14:14:02 +00:00
parent ba538c98c7
commit ffd4e85873
4 changed files with 114 additions and 48 deletions

View File

@@ -0,0 +1,69 @@
import { describe, expect, it } from "vitest";
import { firstDefined, isSenderIdAllowed, mergeAllowFromSources } from "./allow-from.js";
describe("mergeAllowFromSources", () => {
it("merges, trims, and filters empty values", () => {
expect(
mergeAllowFromSources({
allowFrom: [" line:user:abc ", "", 123],
storeAllowFrom: [" ", "telegram:456"],
}),
).toEqual(["line:user:abc", "123", "telegram:456"]);
});
});
describe("firstDefined", () => {
it("returns the first non-undefined value", () => {
expect(firstDefined(undefined, undefined, "x", "y")).toBe("x");
expect(firstDefined(undefined, 0, 1)).toBe(0);
});
});
describe("isSenderIdAllowed", () => {
it("supports per-channel empty-list defaults and wildcard/id matches", () => {
expect(
isSenderIdAllowed(
{
entries: [],
hasEntries: false,
hasWildcard: false,
},
"123",
true,
),
).toBe(true);
expect(
isSenderIdAllowed(
{
entries: [],
hasEntries: false,
hasWildcard: false,
},
"123",
false,
),
).toBe(false);
expect(
isSenderIdAllowed(
{
entries: ["111", "222"],
hasEntries: true,
hasWildcard: true,
},
undefined,
false,
),
).toBe(true);
expect(
isSenderIdAllowed(
{
entries: ["111", "222"],
hasEntries: true,
hasWildcard: false,
},
"222",
false,
),
).toBe(true);
});
});