provider-xai.test.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { describe, expect } from "bun:test"
  2. import { Effect } from "effect"
  3. import { Integration } from "@opencode-ai/core/integration"
  4. import { Plugin } from "@opencode-ai/core/plugin"
  5. import { PluginHost } from "@opencode-ai/core/plugin/host"
  6. import { XAIPlugin } from "@opencode-ai/core/plugin/provider/xai"
  7. import { testEffect } from "../lib/effect"
  8. import { PluginTestLayer } from "./fixture"
  9. const it = testEffect(PluginTestLayer)
  10. const addPlugin = Effect.fn(function* () {
  11. const plugin = yield* Plugin.Service
  12. const host = yield* PluginHost.make(plugin)
  13. yield* XAIPlugin.effect(host)
  14. })
  15. describe("XAIPlugin", () => {
  16. it.effect("registers browser OAuth, device OAuth, and API key methods", () =>
  17. Effect.gen(function* () {
  18. yield* addPlugin()
  19. const integrations = yield* Integration.Service
  20. const integration = yield* integrations.get(Integration.ID.make("xai"))
  21. expect(integration?.name).toBe("xAI")
  22. expect(integration?.methods).toEqual([
  23. {
  24. id: Integration.MethodID.make("browser"),
  25. type: "oauth",
  26. label: "xAI Grok OAuth (SuperGrok Subscription)",
  27. },
  28. {
  29. id: Integration.MethodID.make("device"),
  30. type: "oauth",
  31. label: "xAI Grok OAuth (Headless / Remote / VPS)",
  32. },
  33. { type: "key", label: "Manually enter API Key" },
  34. ])
  35. }),
  36. )
  37. })