| import { describe, expect, it } from "vitest"; |
| import { |
| createScopedAccountConfigAccessors, |
| mapAllowFromEntries, |
| resolveOptionalConfigString, |
| } from "./channel-config-helpers.js"; |
|
|
| describe("mapAllowFromEntries", () => { |
| it("coerces allowFrom entries to strings", () => { |
| expect(mapAllowFromEntries(["user", 42])).toEqual(["user", "42"]); |
| }); |
|
|
| it("returns empty list for missing input", () => { |
| expect(mapAllowFromEntries(undefined)).toEqual([]); |
| }); |
| }); |
|
|
| describe("resolveOptionalConfigString", () => { |
| it("trims and returns string values", () => { |
| expect(resolveOptionalConfigString(" room:123 ")).toBe("room:123"); |
| }); |
|
|
| it("coerces numeric values", () => { |
| expect(resolveOptionalConfigString(123)).toBe("123"); |
| }); |
|
|
| it("returns undefined for empty values", () => { |
| expect(resolveOptionalConfigString(" ")).toBeUndefined(); |
| expect(resolveOptionalConfigString(undefined)).toBeUndefined(); |
| }); |
| }); |
|
|
| describe("createScopedAccountConfigAccessors", () => { |
| it("maps allowFrom and defaultTo from the resolved account", () => { |
| const accessors = createScopedAccountConfigAccessors({ |
| resolveAccount: ({ accountId }) => ({ |
| allowFrom: accountId ? [accountId, 42] : ["fallback"], |
| defaultTo: " room:123 ", |
| }), |
| resolveAllowFrom: (account) => account.allowFrom, |
| formatAllowFrom: (allowFrom) => allowFrom.map((entry) => String(entry).toUpperCase()), |
| resolveDefaultTo: (account) => account.defaultTo, |
| }); |
|
|
| expect( |
| accessors.resolveAllowFrom?.({ |
| cfg: {}, |
| accountId: "owner", |
| }), |
| ).toEqual(["owner", "42"]); |
| expect( |
| accessors.formatAllowFrom?.({ |
| cfg: {}, |
| allowFrom: ["owner"], |
| }), |
| ).toEqual(["OWNER"]); |
| expect( |
| accessors.resolveDefaultTo?.({ |
| cfg: {}, |
| accountId: "owner", |
| }), |
| ).toBe("room:123"); |
| }); |
|
|
| it("omits resolveDefaultTo when no selector is provided", () => { |
| const accessors = createScopedAccountConfigAccessors({ |
| resolveAccount: () => ({ allowFrom: ["owner"] }), |
| resolveAllowFrom: (account) => account.allowFrom, |
| formatAllowFrom: (allowFrom) => allowFrom.map((entry) => String(entry)), |
| }); |
|
|
| expect(accessors.resolveDefaultTo).toBeUndefined(); |
| }); |
| }); |
|
|