






















@@ -0,0 +1,51 @@
1+import path from "node:path";
2+import { afterEach, describe, expect, it, vi } from "vitest";
3+import { cleanupTempDirs, makeTempRepoRoot, writeJsonFile } from "../../test/helpers/temp-repo.js";
4+5+vi.mock("./bundled-dir.js", () => ({
6+resolveBundledPluginsDir: vi.fn(),
7+}));
8+9+import { resolveBundledPluginsDir } from "./bundled-dir.js";
10+import { findBundledPackageChannelMetadata } from "./bundled-package-channel-metadata.js";
11+12+const tempDirs: string[] = [];
13+14+afterEach(() => {
15+cleanupTempDirs(tempDirs);
16+vi.restoreAllMocks();
17+vi.mocked(resolveBundledPluginsDir).mockReset();
18+});
19+20+describe("bundled package channel metadata", () => {
21+it("reads doctor capabilities from the resolved bundled plugin dir", () => {
22+const root = makeTempRepoRoot(tempDirs, "bpcm-");
23+const extensionsRoot = path.join(root, "dist", "extensions");
24+writeJsonFile(path.join(extensionsRoot, "matrix", "package.json"), {
25+name: "@openclaw/matrix",
26+openclaw: {
27+channel: {
28+id: "matrix",
29+label: "Matrix",
30+docsPath: "/channels/matrix",
31+doctorCapabilities: {
32+dmAllowFromMode: "nestedOnly",
33+groupModel: "sender",
34+groupAllowFromFallbackToAllowFrom: false,
35+warnOnEmptyGroupSenderAllowlist: true,
36+},
37+},
38+},
39+});
40+vi.mocked(resolveBundledPluginsDir).mockReturnValue(extensionsRoot);
41+42+const matrix = findBundledPackageChannelMetadata("matrix");
43+44+expect(matrix?.doctorCapabilities).toEqual({
45+dmAllowFromMode: "nestedOnly",
46+groupModel: "sender",
47+groupAllowFromFallbackToAllowFrom: false,
48+warnOnEmptyGroupSenderAllowlist: true,
49+});
50+});
51+});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。