15 lines
994 B
TypeScript
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)
|
|
})
|