| | import { assertEquals } from "./deps.ts"; |
| | import { validateVideoId } from "../lib/helpers/validateVideoId.ts"; |
| |
|
| | Deno.test("Video ID validation", async (t) => { |
| | await t.step("accepts valid YouTube video IDs", () => { |
| | const validIds = [ |
| | "jNQXAC9IVRw", |
| | "dQw4w9WgXcQ", |
| | "aqz-KE-bpKQ", |
| | "A_B_C_D_E_1", |
| | "0123456789a", |
| | "ABCDEFGHIJK", |
| | "abcdefghijk", |
| | "-_-_-_-_-_-", |
| | ]; |
| |
|
| | for (const id of validIds) { |
| | assertEquals( |
| | validateVideoId(id), |
| | true, |
| | `Video ID "${id}" should be valid`, |
| | ); |
| | } |
| | }); |
| |
|
| | await t.step("rejects invalid video IDs", () => { |
| | const invalidIds = [ |
| | "", |
| | "short", |
| | "thisistoolongtobeavalidvideoid", |
| | "exactly10c", |
| | "exactly12chr", |
| | "jNQXAC9IVR", |
| | "jNQXAC9IVRwX", |
| | "jNQX AC9IVRw", |
| | "jNQX@AC9IVRw", |
| | "jNQX#AC9IVRw", |
| | "jNQX!AC9IVRw", |
| | "jNQX$AC9IVRw", |
| | "jNQX%AC9IVRw", |
| | "jNQX&AC9IVRw", |
| | "jNQX*AC9IVRw", |
| | "jNQX(AC9IVRw", |
| | "jNQX)AC9IVRw", |
| | "jNQX=AC9IVRw", |
| | "jNQX+AC9IVRw", |
| | "jNQX[AC9IVRw", |
| | "jNQX]AC9IVRw", |
| | "jNQX{AC9IVRw", |
| | "jNQX}AC9IVRw", |
| | "jNQX|AC9IVRw", |
| | "jNQX\\AC9IVRw", |
| | "jNQX/AC9IVRw", |
| | "jNQX:AC9IVRw", |
| | "jNQX;AC9IVRw", |
| | "jNQX'AC9IVRw", |
| | 'jNQX"AC9IVRw', |
| | "jNQX<AC9IVRw", |
| | "jNQX>AC9IVRw", |
| | "jNQX,AC9IVRw", |
| | "jNQX.AC9IVRw", |
| | "jNQX?AC9IVRw", |
| | "../../../etc", |
| | "'; DROP TABLE", |
| | "<script>xss", |
| | ]; |
| |
|
| | for (const id of invalidIds) { |
| | assertEquals( |
| | validateVideoId(id), |
| | false, |
| | `Video ID "${id}" should be invalid`, |
| | ); |
| | } |
| | }); |
| |
|
| | await t.step("handles edge cases", () => { |
| | |
| | assertEquals( |
| | validateVideoId(null as unknown as string), |
| | false, |
| | "null should be invalid", |
| | ); |
| | assertEquals( |
| | validateVideoId(undefined as unknown as string), |
| | false, |
| | "undefined should be invalid", |
| | ); |
| |
|
| | |
| | assertEquals( |
| | validateVideoId(12345678901 as unknown as string), |
| | false, |
| | "Number should be invalid", |
| | ); |
| | }); |
| | }); |
| |
|