provider-llmgateway.test.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { describe, expect } from "bun:test"
  2. import { Effect } from "effect"
  3. import { PluginV2 } from "@opencode-ai/core/plugin"
  4. import { ProviderPlugins } from "@opencode-ai/core/plugin/provider"
  5. import { LLMGatewayPlugin } from "@opencode-ai/core/plugin/provider/llmgateway"
  6. import { expectPluginRegistered, it, provider } from "./provider-helper"
  7. describe("LLMGatewayPlugin", () => {
  8. it.effect("is registered so legacy referer headers can be applied", () =>
  9. Effect.sync(() =>
  10. expectPluginRegistered(
  11. ProviderPlugins.map((item) => item.id),
  12. "llmgateway",
  13. ),
  14. ),
  15. )
  16. it.effect("applies legacy referer headers only to enabled llmgateway", () =>
  17. Effect.gen(function* () {
  18. const plugin = yield* PluginV2.Service
  19. yield* plugin.add(LLMGatewayPlugin)
  20. const result = yield* plugin.trigger(
  21. "provider.update",
  22. {},
  23. {
  24. provider: provider("llmgateway", {
  25. enabled: { via: "env", name: "LLMGATEWAY_API_KEY" },
  26. options: { headers: { Existing: "value" }, body: {}, aisdk: { provider: {}, request: {} } },
  27. }),
  28. cancel: false,
  29. },
  30. )
  31. const ignored = yield* plugin.trigger(
  32. "provider.update",
  33. {},
  34. {
  35. provider: provider("openrouter", {
  36. enabled: { via: "env", name: "OPENROUTER_API_KEY" },
  37. }),
  38. cancel: false,
  39. },
  40. )
  41. expect(result.provider.options.headers).toEqual({
  42. Existing: "value",
  43. "HTTP-Referer": "https://opencode.ai/",
  44. "X-Title": "opencode",
  45. "X-Source": "opencode",
  46. })
  47. expect(ignored.provider.options.headers).toEqual({})
  48. }),
  49. )
  50. it.effect("does not apply legacy headers to a disabled llmgateway provider", () =>
  51. Effect.gen(function* () {
  52. const plugin = yield* PluginV2.Service
  53. yield* plugin.add(LLMGatewayPlugin)
  54. const result = yield* plugin.trigger("provider.update", {}, { provider: provider("llmgateway"), cancel: false })
  55. expect(result.provider.enabled).toBe(false)
  56. expect(result.provider.options.headers).toEqual({})
  57. }),
  58. )
  59. })