mirror of
https://github.com/anomalyco/opencode.git
synced 2026-08-28 09:54:30 +00:00
34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
import { sanitizeServerActionRequest } from "../src/lib/server-action"
|
|
|
|
describe("server action referer", () => {
|
|
test("preserves same-origin return locations", () => {
|
|
const request = new Request("https://dev.opencode.ai/_server?id=action", {
|
|
headers: { referer: "https://dev.opencode.ai/auth?next=%2Fconsole" },
|
|
})
|
|
|
|
expect(sanitizeServerActionRequest(request)).toBe(request)
|
|
})
|
|
|
|
test("replaces unsafe return locations with the request origin", () => {
|
|
const referers = ["https://evil.example/phishing-login", "not a url", undefined]
|
|
|
|
expect(
|
|
referers.map((referer) =>
|
|
sanitizeServerActionRequest(
|
|
new Request("https://dev.opencode.ai/_server?id=action", {
|
|
headers: referer === undefined ? undefined : { referer },
|
|
}),
|
|
).headers.get("referer"),
|
|
),
|
|
).toEqual(["https://dev.opencode.ai", "https://dev.opencode.ai", "https://dev.opencode.ai"])
|
|
})
|
|
|
|
test("does not change other routes", () => {
|
|
const request = new Request("https://dev.opencode.ai/auth", {
|
|
headers: { referer: "https://evil.example/phishing-login" },
|
|
})
|
|
|
|
expect(sanitizeServerActionRequest(request)).toBe(request)
|
|
})
|
|
})
|