mirror of
https://gitcode.com/JianFeeeee/ModelRouter.git
synced 2026-11-07 09:47:23 +00:00
产品代码统一为纯文本风格(照参考实现),去掉 emoji:billing/quota/usage 插件、 channels 的提示文案、WebUI 文案,以及 go 测试、docs、packaging 脚本中的 注意/OK/FAIL 等符号化写法。第三方目录(vendor、node_modules、.probe)不动。 另:packaging/upload-release.sh 的仓库名改为真实全名 JianFeeeee/ModelRouter → HeNanMU-EEA/ModelRouter(前者是重定向,POST/PUT 不跟随 会 404)。
40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
package core
|
||
|
||
import "testing"
|
||
|
||
// TestGrantedDestructiveActionTakesEffect 确认授权后的破坏性动作**真的执行**。
|
||
//
|
||
// 上一条测试只证明"不死锁、有返回"。一个把所有动作都变成空转的 dispatch 也能
|
||
// 通过它 —— 所以这条单独断言副作用确实落地(密钥真的被删)。
|
||
func TestGrantedDestructiveActionTakesEffect(t *testing.T) {
|
||
c := kernelTestCore(t)
|
||
code := `
|
||
local plugin = { name = "eff", version = "1.0" }
|
||
plugin.exports = { "del" }
|
||
function plugin.del(args)
|
||
local r, err = __llmsproxy_kernel.call("delete_key", { key = args.key })
|
||
return { ok = r ~= nil, err = err }
|
||
end
|
||
return plugin
|
||
`
|
||
if err := c.Plugins().LoadSource("eff", code); err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
_ = c.Plugins().SetPluginKernelPermission("eff", []string{"delete_key"}, false)
|
||
|
||
if _, ok := c.FindKey("sk-kernel-0001"); !ok {
|
||
t.Fatal("前置条件:key 应存在")
|
||
}
|
||
out, err := c.Plugins().Call("eff", "del", map[string]interface{}{"key": "sk-kernel-0001"})
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
m := out.(map[string]interface{})
|
||
if m["ok"] != true {
|
||
t.Fatalf("动作未成功: %#v", m)
|
||
}
|
||
if _, ok := c.FindKey("sk-kernel-0001"); ok {
|
||
t.Fatal("动作报告成功但副作用没发生 —— dispatch 是空转")
|
||
}
|
||
}
|