import { describe, expect, it } from "vitest" ;
import {
resolveAllowlistMatchByCandidates,
resolveAllowlistMatchSimple,
} from "./allowlist-match.js" ;
describe("channels/allowlist-match" , () => {
it("reflects in-place allowFrom edits even when array length stays the same" , () => {
const allowFrom = ["alice" , "bob" ];
expect(resolveAllowlistMatchSimple({ allowFrom, senderId: "bob" })).toEqual({
allowed: true ,
matchKey: "bob" ,
matchSource: "id" ,
});
allowFrom[1 ] = "mallory" ;
expect(resolveAllowlistMatchSimple({ allowFrom, senderId: "bob" })).toEqual({
allowed: false ,
});
expect(resolveAllowlistMatchSimple({ allowFrom, senderId: "mallory" })).toEqual({
allowed: true ,
matchKey: "mallory" ,
matchSource: "id" ,
});
});
it("drops wildcard access after in-place wildcard replacement" , () => {
const allowFrom = ["*" ];
expect(resolveAllowlistMatchSimple({ allowFrom, senderId: "eve" })).toEqual({
allowed: true ,
matchKey: "*" ,
matchSource: "wildcard" ,
});
allowFrom[0 ] = "alice" ;
expect(resolveAllowlistMatchSimple({ allowFrom, senderId: "eve" })).toEqual({
allowed: false ,
});
expect(resolveAllowlistMatchSimple({ allowFrom, senderId: "alice" })).toEqual({
allowed: true ,
matchKey: "alice" ,
matchSource: "id" ,
});
});
it("recomputes candidate allowlist sets after in-place replacement" , () => {
const allowList = ["user:alice" , "user:bob" ];
expect(
resolveAllowlistMatchByCandidates({
allowList,
candidates: [{ value: "user:bob" , source: "prefixed-user" }],
}),
).toEqual({
allowed: true ,
matchKey: "user:bob" ,
matchSource: "prefixed-user" ,
});
allowList[1 ] = "user:mallory" ;
expect(
resolveAllowlistMatchByCandidates({
allowList,
candidates: [{ value: "user:bob" , source: "prefixed-user" }],
}),
).toEqual({
allowed: false ,
});
expect(
resolveAllowlistMatchByCandidates({
allowList,
candidates: [{ value: "user:mallory" , source: "prefixed-user" }],
}),
).toEqual({
allowed: true ,
matchKey: "user:mallory" ,
matchSource: "prefixed-user" ,
});
});
});
Messung V0.5 in Prozent C=100 H=98 G=98
¤ Dauer der Verarbeitung: 0.2 Sekunden
¤
*© Formatika GbR, Deutschland