Files
MikrotikManager/lib/wireguard-url-state.test.ts
T

12 lines
1.0 KiB
TypeScript

import { test } from "node:test"
import assert from "node:assert/strict"
import { readWireGuardUrl, patchWireGuardUrl } from "./wireguard-url-state"
test("WireGuard URL keeps context and validates all owned filters", () => {
assert.deepEqual(readWireGuardUrl(new URLSearchParams()), {tab:"interfaces",status:"all",search:"",error:null})
const params = new URLSearchParams("server=2&interface=*%2F2&keep=1&tab=peers&status=down&q=key%2B1")
assert.deepEqual(readWireGuardUrl(params), {tab:"peers",status:"down",search:"key+1",error:null})
for (const raw of ["tab=bad", "status=bad", "q="+"a".repeat(201), "q=a&q=b", "tab=peers&tab=cli", "status=up&status=down"]) assert.ok(readWireGuardUrl(new URLSearchParams(raw)).error)
const next=new URL(patchWireGuardUrl(params,{q:null,status:null,tab:null}),"https://test.local")
assert.equal(next.searchParams.get("server"),"2");assert.equal(next.searchParams.get("interface"),"*/2");assert.equal(next.searchParams.get("keep"),"1");assert.equal(next.searchParams.has("q"),false)
})