route.test.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { describe, expect, test } from "bun:test"
  2. import * as OpenAIChat from "../src/protocols/openai-chat"
  3. import { Auth } from "../src/route"
  4. describe("Route.with", () => {
  5. test("merges endpoint query and header defaults while replacing auth and id", () => {
  6. const auth = Auth.headers({ "x-auth": "new" })
  7. const route = OpenAIChat.route
  8. .with({
  9. id: "base-chat",
  10. endpoint: {
  11. baseURL: "https://api.example.test/v1",
  12. query: { keep: "base", base: "1" },
  13. },
  14. headers: { "x-base": "base", "x-override": "base" },
  15. auth: Auth.headers({ "x-auth": "old" }),
  16. })
  17. .with({
  18. id: "patched-chat",
  19. endpoint: { query: { keep: "patch", patch: "1" } },
  20. headers: { "x-override": "patch", "x-patch": "patch" },
  21. auth,
  22. })
  23. expect(route.id).toBe("patched-chat")
  24. expect(route.auth).toBe(auth)
  25. expect(route.endpoint).toMatchObject({
  26. baseURL: "https://api.example.test/v1",
  27. path: "/chat/completions",
  28. query: { keep: "patch", base: "1", patch: "1" },
  29. })
  30. expect(route.defaults.headers).toEqual({
  31. "x-base": "base",
  32. "x-override": "patch",
  33. "x-patch": "patch",
  34. })
  35. expect(route.defaults.http?.headers).toEqual({
  36. "x-base": "base",
  37. "x-override": "patch",
  38. "x-patch": "patch",
  39. })
  40. })
  41. })