Files
MikrotikManager/backend/src/services/traffic-binding-status.test.ts
T

19 lines
1.6 KiB
TypeScript

import assert from "node:assert/strict"
import { trafficBindingStatus } from "./traffic-freshness.js"
import { parseTrafficFlag } from "./traffic-observation.js"
const now=Date.parse("2026-10-12T12:00:00Z"),iso=new Date(now).toISOString()
const last={sampledAt:iso,countersKnown:true,statusKnown:true,running:true,disabled:false}
const server={enabled:true,updatedAt:iso},settings={enabled:true,intervalSec:30},attempt={serverUpdatedAt:iso,lastAttemptAt:iso,lastSucceededAt:iso,status:"ok",error:null}
assert.equal(trafficBindingStatus(last,false,server,settings,attempt,now),"online")
assert.equal(trafficBindingStatus({...last,statusKnown:false},false,server,settings,attempt,now),"unknown")
assert.equal(trafficBindingStatus({...last,disabled:true},false,server,settings,attempt,now),"offline")
assert.equal(trafficBindingStatus(last,true,server,settings,attempt,now),"unknown")
assert.equal(trafficBindingStatus({...last,disabled:true},true,server,settings,attempt,now),"offline")
for(const status of["error","pending"])assert.equal(trafficBindingStatus(last,false,server,settings,{...attempt,status},now),"unknown")
assert.equal(trafficBindingStatus(last,false,server,settings,attempt,now+90_001),"unknown")
assert.equal(trafficBindingStatus(last,false,{...server,enabled:false},settings,attempt,now),"unknown")
for(const value of[true,"true","yes"])assert.equal(parseTrafficFlag(value),true)
for(const value of[false,"false","no"])assert.equal(parseTrafficFlag(value),false)
for(const value of[undefined,null,"bad",{},0,1])assert.throws(()=>parseTrafficFlag(value))
console.log("binding native status provenance/TTL/peer configuration/boolean guards tests ok")