Files
MikrotikManager/backend/src/services/ospf-optimizer-identity.test.ts
T

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")