test(invariants): Phase 23 Task 2.2 —— INV-011 显式行为守卫(9 用例 + 两次负向注入验证)
产出 Inv011EvidenceAccessGuardTest:非领取人 / 跨用户佐证 / 非 local_eligibility 任务一律拒绝, 且 successful 与 denied 两条路径都断言 sensitive_access_logs 真实落库(不用 mock 断言)。 另含 3 个结构性守卫(用户侧端点无用户可控 userId 入参、佐证读取入口的双重权限约束、 佐证读取不暴露可伪造 operatorId)与 1 个守卫自检(参数名反射可读,防断言静默永真)。 前置修复:schema-h2.sql 补 sensitive_access_logs 表 —— 该表此前在测试库完全不存在, 而它是「访问留痕」命题的唯一落点,缺失导致该命题根本无法断言(表漂移盲区,与 Phase 12/15/19 同族)。 负向注入两次,均精确命中: ① 停用 requireClaimOwner → 恰 1 红(非领取人用例),其余 8 绿 ② 停用 catch 内 denied 审计 → 恰 2 红(非领取人 + 跨用户),第 3 条走 try 外的另一路径故正确未红 两次注入均已还原并复跑全绿(9/9);V11InvariantsTest 12/12 绿;UI 契约门禁 18/18 绿。 文档:Task 2.2 闭环记录 + 附 A 扩至 7 处校正(含对本文档初稿「机构创建 500 归因」的自我更正, 实测为 chk_org_status 违约而非 id 为空)+ 附 B 扩至 11 项新发现 (5 个 Mapper 方法声明了却无实现、隐私设置三方契约冲突 + 表/实体主键错配、 测试镜像 mvn -o 不可用、本机全量回归会卡住)。
This commit is contained in:
@@ -255,6 +255,24 @@ CREATE TABLE local_eligibility_evidences (
|
||||
created_at TIMESTAMP WITH TIME ZONE, updated_at TIMESTAMP WITH TIME ZONE, deleted_at TIMESTAMP WITH TIME ZONE
|
||||
);
|
||||
|
||||
-- V001 + V034 + V035: sensitive_access_logs 敏感数据访问审计
|
||||
-- INV-011 的「可核查」落点正是本表(access_result = success / denied)。
|
||||
-- 本表此前在测试库**完全不存在**,而 ReviewService.logEvidenceAccess 一定会写它 ——
|
||||
-- 后果:任何「审计真的落库了吗」的断言都无从编写,INV-011 只能退化成常量断言;
|
||||
-- 生产上新接入的审计路径在测试期零覆盖。与 Phase 12 复验记录的
|
||||
-- user_identities / review_tasks 缺失同族(表漂移盲区),此处补齐。
|
||||
-- 列定义对齐:V001 建表(id/operator_id/user_id/data_type/reason/ip/created_at)
|
||||
-- + V034(access_target/access_result)
|
||||
-- + V035(BaseEntity 的 updated_at / deleted_at)。
|
||||
-- 不建 FK:生产 REFERENCES operators(id) / users(id),而测试库无 operators 表;
|
||||
-- 本库 review_tasks / local_eligibility_evidences 同样只保留列、不建 FK。
|
||||
CREATE TABLE sensitive_access_logs (
|
||||
id VARCHAR(36) PRIMARY KEY, operator_id VARCHAR(36), user_id VARCHAR(36),
|
||||
data_type VARCHAR(64), reason VARCHAR(500), ip VARCHAR(64),
|
||||
access_target VARCHAR(128), access_result VARCHAR(32),
|
||||
created_at TIMESTAMP WITH TIME ZONE, updated_at TIMESTAMP WITH TIME ZONE, deleted_at TIMESTAMP WITH TIME ZONE
|
||||
);
|
||||
|
||||
-- V019: home_banners 首页 Banner
|
||||
CREATE TABLE home_banners (
|
||||
id VARCHAR(36) PRIMARY KEY, title VARCHAR(200), subtitle VARCHAR(300), image_file_id VARCHAR(36),
|
||||
|
||||
Reference in New Issue
Block a user