credential.test.ts 1.3 KB

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