-- view_injection_test.lua — 视图层的注入与字段清单一致性检查
-- 用法:lua5.1 tests/view_injection_test.lua
--
-- 这些是静态源码检查(.htm 需要 LuCI 运行时才能渲染,lua5.1 跑不了模板),
-- 但检查的正是那类「只在浏览器里才暴露」的缺陷:
-- H2 注入到 "。
-- 字段清单必须由服务端注入:core.merge_form_node 用 node.PROTO_FIELDS 决定
-- 哪些字段可以被表单覆盖,前端若另抄一份就会漂移(vmess 的 TLS 字段
-- 丢失正是这么来的)。
package.path = "./root/usr/share/?.lua;" .. package.path
local util = require("substore.util")
local node = require("substore.node")
local passed, failed = 0, 0
local function check(name, cond)
if cond then
passed = passed + 1
print("PASS " .. name)
else
failed = failed + 1
print("FAIL " .. name)
end
end
local VIEWS = {
"root/usr/lib/lua/luci/view/substore/nodes.htm",
"root/usr/lib/lua/luci/view/substore/node_edit.htm",
"root/usr/lib/lua/luci/view/substore/local_form.htm",
"root/usr/lib/lua/luci/view/substore/subscriptions.htm",
"root/usr/lib/lua/luci/view/substore/form.htm",
"root/usr/lib/lua/luci/view/substore/combo.htm",
"root/usr/lib/lua/luci/view/substore/output.htm",
}
-- ---------- H2:JSON 编码注入到 JS 的位置必须转义**全部** "<" ----------
--
-- 只转 "" 是不够的:HTML 词法阶段一旦看到 "