credential.test.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { describe, expect } from "bun:test"
  2. import { Effect } from "effect"
  3. import { Credential } from "@opencode-ai/core/credential"
  4. import { LayerNode } from "@opencode-ai/util/effect/layer-node"
  5. import { Integration } from "@opencode-ai/core/integration"
  6. import { testEffect } from "./lib/effect"
  7. const it = testEffect(LayerNode.compile(Credential.node))
  8. describe("Credential", () => {
  9. it.effect("stores, updates, lists, and removes credentials", () =>
  10. Effect.gen(function* () {
  11. const credentials = yield* Credential.Service
  12. const integrationID = Integration.ID.make("openai")
  13. const created = yield* credentials.create({
  14. integrationID,
  15. label: "Work",
  16. value: Credential.Key.make({ type: "key", key: "secret" }),
  17. })
  18. expect(yield* credentials.list(integrationID)).toEqual([created])
  19. yield* credentials.update(created.id, { label: "Personal" })
  20. expect((yield* credentials.list(integrationID))[0]?.label).toBe("Personal")
  21. const replacement = yield* credentials.create({
  22. integrationID,
  23. label: "Replacement",
  24. value: Credential.Key.make({ type: "key", key: "replacement" }),
  25. })
  26. expect(yield* credentials.list(integrationID)).toEqual([replacement])
  27. yield* credentials.remove(replacement.id)
  28. expect(yield* credentials.list(integrationID)).toEqual([])
  29. }),
  30. )
  31. })