\Tests\UnitDataCacheServiceTest

缓存保护锁行为

被测对象:DataCacheService(delete/update 管理面路径) 守护约定:受保护注册项删除、改 Key 被拒绝且状态保留;未保护注册项删除正常 (清实例 + 删注册项);解锁后改 Key 恢复允许。

Summary

Methods
Properties
Constants
test_delete_protected_cache_rejected()
test_delete_normal_cache_removes_entry()
test_update_protected_cache_key_rejected()
test_update_after_unlock_allows_key_change()
No public properties found
No constants found
requireRedis()
buildCacheRegistry()
setUp()
No protected properties found
N/A
buildDictTables()
No private properties found
N/A

Methods

test_delete_protected_cache_rejected()

test_delete_protected_cache_rejected() : void

受保护缓存:delete 被拒绝,注册项与实例都保留

test_delete_normal_cache_removes_entry()

test_delete_normal_cache_removes_entry() : void

未受保护缓存:delete 正常(清实例 + 删注册项)

test_update_protected_cache_key_rejected()

test_update_protected_cache_key_rejected() : void

受保护缓存:update 改 Key 模板被拒绝(防旧实例清理被锁挡住导致新旧双份)

test_update_after_unlock_allows_key_change()

test_update_after_unlock_allows_key_change() : void

解锁(protected=0)后改 Key 模板恢复允许(走合规校验路径,词表缺失降级放行)

requireRedis()

requireRedis() : void

Redis 依赖探针:直连 Redis 的测试(限流/会话/验证码)在无 Redis 环境(如 CI) 跳过而非失败——其余用例不受影响。CI 可设 TEST_REQUIRE_REDIS=1 强制模式: Redis 不可达即失败而非跳过,安全回归套件不允许静默消失。

buildCacheRegistry()

buildCacheRegistry(array  $items) : void

建缓存注册表最小 schema(td_sys_cache)并灌入注册项。

测试跑 sqlite :memory:,生产迁移含 PostgreSQL 专属 DDL 跑不通(DataScopeServiceTest 同因自建 schema); 而 CacheManager::registry() 现已从数据库表读取——凡走注册表的测试(remember/get/key/失效推导) 必须在 setUp 先调用本方法,否则注册表为空、remember 未登记名会走「自动登记」路径。

Parameters

array $items

setUp()

setUp() : void

buildDictTables()

buildDictTables() : void

最小字典 schema:类型表(code/is_tree)+ 数据表(upsertItem 全列);灌三个缓存词类型(extendVocab 补词的前提)