Files
opencode/packages/client/test/media.test.ts

52 lines
2.0 KiB
TypeScript

import { expect, test } from "bun:test"
import { mediaHashFromUri, OpenCode, withMediaRefs } from "../src/promise/index"
test("withMediaRefs asks for media refs on message and inbox reads only", async () => {
const requests: Array<{ path: string; headers: Headers }> = []
const api = withMediaRefs(
OpenCode.make({
baseUrl: "http://localhost:3000",
headers: { Authorization: "Basic secret" },
// SAFETY: the API client only calls fetch with a URL and init, which this stub accepts.
fetch: (async (input: string | URL | Request, init?: RequestInit) => {
requests.push({
path: new URL(input instanceof Request ? input.url : input).pathname,
headers: new Headers(init?.headers),
})
return Response.json({ data: [], cursor: {} })
}) as typeof fetch,
}),
)
await api.message.list({ sessionID: "ses_1" })
await api.message.list({ sessionID: "ses_1" }, { mediaRefs: false })
await api.session.message.get({ sessionID: "ses_1", messageID: "msg_1" })
await api.session.inbox.list({ sessionID: "ses_1" }, { headers: { "X-Trace": "1" } })
await api.session.list()
expect(
requests.map((request) => [
request.path,
request.headers.get("x-opencode-capabilities"),
request.headers.get("authorization"),
]),
).toEqual([
["/api/session/ses_1/message", "experimental-media-uri", "Basic secret"],
["/api/session/ses_1/message", null, "Basic secret"],
["/api/session/ses_1/message/msg_1", "experimental-media-uri", "Basic secret"],
["/api/session/ses_1/inbox", "experimental-media-uri", "Basic secret"],
["/api/session", null, "Basic secret"],
])
expect(requests[3]?.headers.get("x-trace")).toBe("1")
})
test.each([
[`media:${"a".repeat(64)}`, "a".repeat(64)],
[`media:${"A".repeat(64)}`, undefined],
[`media:${"a".repeat(63)}`, undefined],
["data:image/png;base64,AAA", undefined],
[undefined, undefined],
])("mediaHashFromUri(%p)", (uri, hash) => {
expect(mediaHashFromUri(uri)).toBe(hash)
})