56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
import os from "node:os";
|
|
import { beforeEach, describe, expect, it } from "vitest";
|
|
|
|
import type { PluginRuntime } from "clawdbot/plugin-sdk";
|
|
import type { CoreConfig } from "./types.js";
|
|
|
|
import { matrixPlugin } from "./channel.js";
|
|
import { setMatrixRuntime } from "./runtime.js";
|
|
|
|
describe("matrix directory", () => {
|
|
beforeEach(() => {
|
|
setMatrixRuntime({
|
|
state: {
|
|
resolveStateDir: () => os.tmpdir(),
|
|
},
|
|
} as PluginRuntime);
|
|
});
|
|
|
|
it("lists peers and groups from config", async () => {
|
|
const cfg = {
|
|
channels: {
|
|
matrix: {
|
|
dm: { allowFrom: ["matrix:@alice:example.org", "bob"] },
|
|
rooms: {
|
|
"!room1:example.org": { users: ["@carol:example.org"] },
|
|
"#alias:example.org": { users: [] },
|
|
},
|
|
},
|
|
},
|
|
} as unknown as CoreConfig;
|
|
|
|
expect(matrixPlugin.directory).toBeTruthy();
|
|
expect(matrixPlugin.directory?.listPeers).toBeTruthy();
|
|
expect(matrixPlugin.directory?.listGroups).toBeTruthy();
|
|
|
|
await expect(
|
|
matrixPlugin.directory!.listPeers({ cfg, accountId: undefined, query: undefined, limit: undefined }),
|
|
).resolves.toEqual(
|
|
expect.arrayContaining([
|
|
{ kind: "user", id: "user:@alice:example.org" },
|
|
{ kind: "user", id: "bob", name: "incomplete id; expected @user:server" },
|
|
{ kind: "user", id: "user:@carol:example.org" },
|
|
]),
|
|
);
|
|
|
|
await expect(
|
|
matrixPlugin.directory!.listGroups({ cfg, accountId: undefined, query: undefined, limit: undefined }),
|
|
).resolves.toEqual(
|
|
expect.arrayContaining([
|
|
{ kind: "group", id: "room:!room1:example.org" },
|
|
{ kind: "group", id: "#alias:example.org" },
|
|
]),
|
|
);
|
|
});
|
|
});
|