74 lines
5.6 KiB
TypeScript
74 lines
5.6 KiB
TypeScript
import assert from "node:assert/strict"
|
|
import { findAction } from "./actions.js"
|
|
import { findMcpOperation } from "./registry.js"
|
|
|
|
const action = findAction("mm_ospf_optimizer_plan")
|
|
const fullFlowSettings = findAction("mm_netflow_settings_update_plan")
|
|
assert.equal(fullFlowSettings.operation.id, "netflow.settings.update")
|
|
assert.equal(fullFlowSettings.operation.version, 3)
|
|
assert.equal(findMcpOperation(fullFlowSettings.operation.id)?.version, 3)
|
|
assert.equal(fullFlowSettings.schema.safeParse({ settings: { collectorIp: "10.255.254.1", enabled: false, mapServiceMinSharePct: 0 } }).success, true)
|
|
assert.equal(fullFlowSettings.schema.safeParse({ topN: 10 }).success, false)
|
|
assert.equal(findAction("mm_netflow_host_keys_generate_plan").operation.id, "traffic.flow.settings.generate-keys")
|
|
assert.equal(findAction("mm_ipsec_user_create_plan").operation.version, 2)
|
|
assert.equal(findAction("mm_ipsec_server_init_plan").operation.version, 3)
|
|
assert.equal(findAction("mm_ipsec_server_remove_plan").operation.version, 2)
|
|
assert.equal(findAction("mm_ipsec_revision_restore_plan").operation.version, 1)
|
|
assert.equal(findAction("mm_wireguard_revision_restore_plan").operation.id, "config.wireguard.revisions.restore")
|
|
assert.equal(findAction("mm_vrf_update_plan").schema.safeParse({ serverId: 1, id: "*1", fields: { comment: "reviewed" }, productionAdmission: true }).success, true)
|
|
assert.equal(findAction("mm_vrf_update_plan").schema.safeParse({ serverId: 1, id: "*1", fields: {}, productionAdmission: false }).success, false)
|
|
const rebuild = findAction("mm_netflow_facts_rebuild_plan")
|
|
assert.equal(rebuild.operation.id, "traffic.flow.facts.rebuild")
|
|
assert.equal(rebuild.operation.version, 1)
|
|
assert.equal(findMcpOperation(rebuild.operation.id)?.version, 1)
|
|
assert.equal(rebuild.operation.scope, "global")
|
|
assert.deepEqual(rebuild.operation.requiredPermissions, ["mm:traffic:write"])
|
|
assert.deepEqual(rebuild.schema.parse({}), {})
|
|
for (const input of [{ serverIds: [1] }, { jobId: "caller" }, { configProof: "forged" }, { serverIds: undefined }]) assert.throws(() => rebuild.schema.parse(input))
|
|
const rebuildReconcile = findAction("mm_netflow_facts_rebuild_reconcile")
|
|
assert.equal(rebuildReconcile.operation.id, "traffic.flow.facts.rebuild.reconcile")
|
|
assert.equal(rebuildReconcile.operation.version, 1)
|
|
assert.equal(rebuildReconcile.operation.effect, "read")
|
|
assert.equal(rebuildReconcile.operation.scope, "global")
|
|
assert.deepEqual(rebuildReconcile.operation.requiredPermissions, ["mm:traffic:write"])
|
|
assert.throws(() => rebuildReconcile.schema.parse({ jobId: "caller" }))
|
|
assert.equal(action.operation.version, 9)
|
|
assert.equal(findMcpOperation(action.operation.id)?.version, 9)
|
|
assert.throws(() => action.schema.parse({ serverId: 1, expectedServerProof: "forged-source" }))
|
|
assert.throws(() => action.schema.parse({ serverId: 1, version: 1 }))
|
|
assert.equal(action.schema.parse({ serverId: 1 }).family, "ipv4")
|
|
assert.equal(findAction("mm_routing_measurement_plan").operation.version, 2)
|
|
assert.equal(findAction("mm_operation_recovery_plan").operation.version, 7)
|
|
assert.equal(findAction("mm_ospf_template_create_plan").operation.version, 5)
|
|
assert.equal(findAction("mm_ospf_template_update_plan").operation.version, 4)
|
|
assert.equal(findAction("mm_ospf_template_delete_plan").operation.version, 3)
|
|
assert.equal(findAction("mm_wireguard_peer_delete_plan").operation.version, 2)
|
|
assert.equal(findAction("mm_wireguard_peer_update_plan").operation.version, 2)
|
|
assert.equal(findAction("mm_wireguard_delete_plan").operation.version, 2)
|
|
assert.equal(findAction("mm_wireguard_update_plan").operation.version, 3)
|
|
assert.equal(findAction("mm_wireguard_interface_edit_plan").operation.version, 3)
|
|
assert.equal(findAction("mm_wireguard_interface_create_plan").operation.version, 3)
|
|
assert.equal(findAction("mm_wireguard_create_plan").operation.version, 4)
|
|
assert.equal(findAction("mm_interfaces_update_plan").operation.version, 4)
|
|
assert.equal(findAction("mm_ipsec_peer_delete_plan").operation.version, 3)
|
|
assert.equal(findAction("mm_ipsec_peer_update_plan").operation.version, 3)
|
|
assert.equal(findAction("mm_certificate_delete_plan").operation.version, 3)
|
|
for (const [tool, version] of [["mm_route_optimizer_plan", 7], ["mm_route_profile_save_plan", 4], ["mm_route_path_verify", 2], ["mm_operation_recovery_plan", 7], ["mm_ecmp_plan", 2], ["mm_rpf_plan", 2], ["mm_vrf_plan", 3], ["mm_firewall_rule_update_plan", 2]] as const) {
|
|
const routed = findAction(tool)
|
|
assert.equal(routed.operation.version, version)
|
|
assert.equal(findMcpOperation(routed.operation.id)?.version, version)
|
|
}
|
|
assert.throws(() => findAction("mm_routing_measurement_plan").schema.parse({ measurement: { srcServerId: 1, dstServerId: 2, srcInterface: "gre", dstInterface: "gre", family: "ipv4", expectedEndpoints: [] } }))
|
|
console.log("MCP operation revisions: OSPF v9 and template order revisions agree; clients cannot inject revision or private source proof")
|
|
|
|
assert.equal(findAction("mm_ipsec_peer_create_plan").operation.version, 5)
|
|
assert.equal(findAction("mm_certificate_update_plan").operation.version, 4)
|
|
assert.deepEqual(findAction("mm_certificate_update_plan").operation.requiredPermissions, ["mm:certificates:write", "mm:network:write"])
|
|
|
|
assert.equal(findAction("mm_ipsec_user_edit_plan").operation.version, 2)
|
|
assert.equal(findAction("mm_ipsec_user_edit_plan").operation.id, "network.ipsec.users.update")
|
|
assert.deepEqual(findAction("mm_ipsec_user_edit_plan").operation.requiredPermissions, ["mm:network:write"])
|
|
|
|
for (const tool of ["mm_ipsec_peer_remove_plan", "mm_ipsec_certificate_remove_plan", "mm_ipsec_user_remove_plan", "mm_ipsec_peer_edit_plan"]) assert.equal(findAction(tool).operation.version, 2)
|
|
assert.equal(findAction("mm_ipsec_server_remove_plan").operation.version, 2)
|