mirror of
https://github.com/anomalyco/opencode.git
synced 2026-11-14 03:56:55 +03:00
40 lines
1.9 KiB
TypeScript
40 lines
1.9 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
import { metaResponse } from "../src/lib/meta"
|
|
|
|
describe("machine-readable documents", () => {
|
|
test("the OAuth client document names the URL it was fetched from", async () => {
|
|
for (const origin of ["https://opencode.ai", "https://dev.opencode.ai"]) {
|
|
const response = metaResponse(new Request(`${origin}/oauth/opencode/client.json?v=1`))
|
|
expect(response?.status).toBe(200)
|
|
expect(response?.headers.get("Content-Type")).toBe("application/json")
|
|
expect(response?.headers.get("Cache-Control")).toBe("public, max-age=300")
|
|
expect(response?.headers.get("Access-Control-Allow-Origin")).toBe("*")
|
|
const document = await response?.json()
|
|
expect(document.client_id).toBe(`${origin}/oauth/opencode/client.json`)
|
|
expect(document.logo_uri).toBe(`${origin}/web-app-manifest-512x512.png`)
|
|
}
|
|
})
|
|
|
|
test("the Apple app association opens only /pair", async () => {
|
|
const response = metaResponse(new Request("https://opencode.ai/.well-known/apple-app-site-association"))
|
|
expect(response?.headers.get("Content-Type")).toBe("application/json")
|
|
expect(response?.headers.get("Cache-Control")).toBe("public, max-age=3600")
|
|
const document = await response?.json()
|
|
expect(document.applinks.details[0].components.map((component: { "/": string }) => component["/"])).toEqual([
|
|
"/pair",
|
|
"/pair/*",
|
|
])
|
|
})
|
|
|
|
test("other methods get a 404 and other paths pass through", () => {
|
|
expect(
|
|
metaResponse(new Request("https://opencode.ai/oauth/opencode/client.json", { method: "POST" }))?.status,
|
|
).toBe(404)
|
|
expect(
|
|
metaResponse(new Request("https://opencode.ai/oauth/opencode/client.json", { method: "HEAD" }))?.status,
|
|
).toBe(200)
|
|
expect(metaResponse(new Request("https://opencode.ai/"))).toBeUndefined()
|
|
expect(metaResponse(new Request("https://opencode.ai/config.json"))).toBeUndefined()
|
|
})
|
|
})
|