admin-memo-per-admin
靶子 http://localhost:20098
跑前快照: uid 1 = null, uid 990986 = null
── ① 超管保存
✅ 工作台上有备忘录输入框(守卫,否则下面全是恒真)
✅ 点保存后出现「已保存」提示(中间产物)
提示="已保存 · 18:20:21"
✅ 库里出现 uid=1 的那一行
行数=1
✅ uid=1 的内容 === 刚写的
── ② 隔离
✅ 超管看到的标识含自己的账号名(admin)
实际 "admin 的随手记"
✅ 受限管理员看到的标识含自己的账号名(e2e_admin10)
实际 "e2e_admin10 的随手记"
✅ 两人看到的标识不是同一句(守卫:写死名字时上面两条会同时为真)
A="admin 的随手记" B="e2e_admin10 的随手记"
✅ 受限管理员看不到超管刚写的内容
实际看到 ""
✅ 受限管理员本来就没有备忘录 → 输入框为空
✅ 受限管理员保存后出现「已保存」提示
提示="已保存 · 18:20:24"
✅ 库里现在恰好两行(两位管理员各一行)
✅ uid=990986 的内容 === B 写的
✅ B 保存后,A 的内容【没有】被覆盖
实际 "超管的便条 A 1789554019396"
✅ A 刷新页面后看到的仍是自己的内容
✅ B 刷新页面后看到的仍是自己的内容
── ③ 特殊字符
✅ 含 & + % 的内容保存后出现「已保存」
提示="已保存 · 18:20:26"
✅ 库里逐字等于写进去的(& 没被截断、+ 没变空格、% 没被解码)
实际 "订单A&B 待处理 + 60% #tag"
✅ 页面回显也逐字相等(出口转义没有二次编码)
── ③b 失焦自动保存
✅ 只失焦、没点保存按钮,也出现了「已保存」提示
提示="已保存 · 18:20:28"
✅ 失焦保存真的落库了
实际 "失焦自动存 1789554028198"
✅ 失焦路径可重复使用(内容换回特殊字符那份)
── ④ GET 打这个端点不许清空备忘录
✅ GET 的响应不是成功(info !== "1")
info="保存备忘录只接受 POST 提交"
✅ GET 之后备忘录内容一个字都没变
实际 "订单A&B 待处理 + 60% #tag"
✅ [还原] uid=1 的备忘录回到跑前状态
期望 null,实际 null
✅ [还原] uid=990986 的备忘录回到跑前状态
期望 null,实际 null
[还原] e2e_admin10.userauth = [12,2,66,65,3] ✔
PASS=25 FAIL=0