Files
MikrotikManager/lib/recursive-route-url-state.test.ts
T

15 lines
994 B
TypeScript

import {test} from "node:test"
import assert from "node:assert/strict"
import {readRecursiveUrl,patchRecursiveUrl} from "./recursive-route-url-state"
import {permissionForPath} from "./auth"
test("recursive context roundtrip owns only its URL fields",()=>{
const params=new URLSearchParams("keep=x&server=2&q=ether&route=10.0.0.0%2F24&table=main")
assert.deepEqual(readRecursiveUrl(params),{serverId:"2",q:"ether",route:"10.0.0.0/24",table:"main",error:null})
const next=patchRecursiveUrl(params,{serverId:"1",q:null,route:null,table:null})
assert.equal(next.get("keep"),"x");assert.equal(next.get("server"),"1");assert.equal(next.has("q"),false)
assert.equal(permissionForPath("/recursive-routes"),"mm:network:read")
})
test("recursive invalid or ambiguous URL never guesses a device/group",()=>{
for(const q of ["server=0","server=srv1","server=1&server=2","route=10.0.0.0/24","table=main","q=a&q=b","q="+"x".repeat(257)]) assert.ok(readRecursiveUrl(new URLSearchParams(q)).error,q)
})