15 lines
1.5 KiB
TypeScript
15 lines
1.5 KiB
TypeScript
import assert from "node:assert/strict"
|
|
import {resolveOptimizerRouterOwners} from "./ospf-optimizer-identity.js"
|
|
const devices=[{id:1},{id:2}],needed=new Set(["192.0.2.1"])
|
|
const instance={"router-id":"192.0.2.1",disabled:"false"}
|
|
let calls:number[]=[]
|
|
const resolved=await resolveOptimizerRouterOwners(devices,needed,async id=>{calls.push(id);return id===1?[instance,instance]:[{"router-id":"192.0.2.2",disabled:"false"}]})
|
|
assert.equal(resolved.get("192.0.2.1"),1);assert.deepEqual(calls,[1,2])
|
|
await assert.rejects(()=>resolveOptimizerRouterOwners(devices,needed,async()=>[instance]),/нескольким/)
|
|
await assert.rejects(()=>resolveOptimizerRouterOwners(devices,needed,async id=>{if(id===2)throw new Error("offline");return [instance]}),/проверить/)
|
|
for(const raw of [null,{},[{"router-id":"main",disabled:"false"}],[{"router-id":"0.0.0.0",disabled:"false"}],[{"router-id":"192.0.2.1"}],[{"router-id":"192.00.2.1",disabled:"false"}]])await assert.rejects(()=>resolveOptimizerRouterOwners(devices,needed,async()=>raw))
|
|
assert.equal((await resolveOptimizerRouterOwners(devices,needed,async()=>[{disabled:"true"}])).size,0)
|
|
assert.equal((await resolveOptimizerRouterOwners(devices,needed,async()=>[])).size,0)
|
|
calls=[];await resolveOptimizerRouterOwners(devices,new Set(),async id=>{calls.push(id);return []});assert.equal(calls.length,0)
|
|
console.log("OSPF optimizer identity: complete inventory, literal IDs, duplicate ownership/unknown/failed refusal; no early first-match")
|