49 lines · 2.0 KB · TypeScript
RawDownload
import { rmSync, writeFileSync } from "node:fs";import { describe, expect, it } from "vitest";import { pluginConfigKey, readCodexMarketplaces, setPluginEnabledInConfig } from "./plugin-config"; describe("plugin config", () => {  it("builds Codex plugin keys", () => {    expect(pluginConfigKey("browser-use", "openai-bundled")).toBe("browser-use@openai-bundled");    expect(pluginConfigKey("local-plugin")).toBe("local-plugin");  });   it("updates an existing plugin enabled flag", () => {    const raw = '[plugins."browser-use@openai-bundled"]\nenabled = true\n\n[profiles.default]\n';    expect(setPluginEnabledInConfig(raw, "browser-use@openai-bundled", false)).toBe(      '[plugins."browser-use@openai-bundled"]\nenabled = false\n[profiles.default]\n',    );  });   it("adds enabled to an existing plugin section without one", () => {    const raw = '[plugins."computer-use@openai-bundled"]\nfoo = "bar"\n';    expect(setPluginEnabledInConfig(raw, "computer-use@openai-bundled", true)).toBe(      '[plugins."computer-use@openai-bundled"]\nfoo = "bar"\nenabled = true\n',    );  });   it("appends a missing plugin section", () => {    expect(setPluginEnabledInConfig("model = \"x\"\n", "github@openai-curated", true)).toBe(      'model = "x"\n\n[plugins."github@openai-curated"]\nenabled = true\n',    );  });   it("reads Codex marketplace metadata", () => {    const raw =      '[marketplaces.openai-bundled]\nlast_updated = "2026-04-18T22:03:02Z"\nsource_type = "local"\nsource = "/Applications/Codex.app/Contents/Resources/plugins/openai-bundled"\n\n[plugins."browser-use@openai-bundled"]\nenabled = true\n';    const tmp = `/tmp/vllm-plugin-config-${process.pid}.toml`;    writeFileSync(tmp, raw);    try {      expect(readCodexMarketplaces(tmp)).toEqual([        {          name: "openai-bundled",          lastUpdated: "2026-04-18T22:03:02Z",          sourceType: "local",          source: "/Applications/Codex.app/Contents/Resources/plugins/openai-bundled",        },      ]);    } finally {      rmSync(tmp, { force: true });    }  });});