Files
Kilo-Org_kilocode/packages/opencode/test/kilocode/security-github.test.ts

29 lines
1.5 KiB
TypeScript

import { describe, expect, test } from "bun:test"
import { GitHubSecurity } from "@/kilocode/security/github"
describe("GitHubSecurity.attachment", () => {
test("accepts canonical GitHub attachment URLs", () => {
expect(
GitHubSecurity.attachment("https://github.com/user-attachments/assets/123e4567-e89b-12d3-a456-426614174000"),
).toBe("https://github.com/user-attachments/assets/123e4567-e89b-12d3-a456-426614174000")
expect(GitHubSecurity.attachment("https://github.com/user-attachments/files/12345/report%20final.txt")).toBe(
"https://github.com/user-attachments/files/12345/report%20final.txt",
)
})
test.each([
"https://github.com/user-attachments/assets/../../settings/profile",
"https://github.com/user-attachments/assets/%2e%2e/%2e%2e/settings/profile",
"https://github.com/user-attachments/files/12345/%2Fsettings",
"https://github.com/user-attachments/files/12345/folder/report.txt",
"https://github.com/user-attachments/assets/not-a-uuid",
"https://github.com/user-attachments/assets/123e4567-e89b-12d3-a456-426614174000?download=1",
"https://github.com/user-attachments/assets/123e4567-e89b-12d3-a456-426614174000#fragment",
"https://example.com/user-attachments/assets/123e4567-e89b-12d3-a456-426614174000",
"http://github.com/user-attachments/assets/123e4567-e89b-12d3-a456-426614174000",
"not a URL",
])("rejects non-canonical attachment URL %s", (url) => {
expect(GitHubSecurity.attachment(url)).toBeUndefined()
})
})