|
@@ -0,0 +1,44 @@
|
|
|
|
|
+import { describe, expect, test } from "bun:test"
|
|
|
|
|
+import path from "path"
|
|
|
|
|
+import fs from "fs/promises"
|
|
|
|
|
+import { tmpdir } from "../fixture/fixture"
|
|
|
|
|
+import { Instance } from "../../src/project/instance"
|
|
|
|
|
+import { ProviderAuth } from "../../src/provider/auth"
|
|
|
|
|
+
|
|
|
|
|
+describe("plugin.auth-override", () => {
|
|
|
|
|
+ test("user plugin overrides built-in github-copilot auth", async () => {
|
|
|
|
|
+ await using tmp = await tmpdir({
|
|
|
|
|
+ init: async (dir) => {
|
|
|
|
|
+ const pluginDir = path.join(dir, ".opencode", "plugin")
|
|
|
|
|
+ await fs.mkdir(pluginDir, { recursive: true })
|
|
|
|
|
+
|
|
|
|
|
+ await Bun.write(
|
|
|
|
|
+ path.join(pluginDir, "custom-copilot-auth.ts"),
|
|
|
|
|
+ [
|
|
|
|
|
+ "export default async () => ({",
|
|
|
|
|
+ " auth: {",
|
|
|
|
|
+ ' provider: "github-copilot",',
|
|
|
|
|
+ " methods: [",
|
|
|
|
|
+ ' { type: "api", label: "Test Override Auth" },',
|
|
|
|
|
+ " ],",
|
|
|
|
|
+ " loader: async () => ({ access: 'test-token' }),",
|
|
|
|
|
+ " },",
|
|
|
|
|
+ "})",
|
|
|
|
|
+ "",
|
|
|
|
|
+ ].join("\n"),
|
|
|
|
|
+ )
|
|
|
|
|
+ },
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ await Instance.provide({
|
|
|
|
|
+ directory: tmp.path,
|
|
|
|
|
+ fn: async () => {
|
|
|
|
|
+ const methods = await ProviderAuth.methods()
|
|
|
|
|
+ const copilot = methods["github-copilot"]
|
|
|
|
|
+ expect(copilot).toBeDefined()
|
|
|
|
|
+ expect(copilot.length).toBe(1)
|
|
|
|
|
+ expect(copilot[0].label).toBe("Test Override Auth")
|
|
|
|
|
+ },
|
|
|
|
|
+ })
|
|
|
|
|
+ }, 30000) // Increased timeout for plugin installation
|
|
|
|
|
+})
|