\Tests\FeatureConfigDefinitionCorrespondenceTest

配置体系对应

被测对象:配置定义表 ↔ 代码消费点 双向闭环 + 分组前缀约定 + 联动推导 守护约定:定义键 ⊆ 源码消费 ∪ 豁免(前端消费 ui.* 等);config_db 消费键 ⊆ 定义; 分组前缀与命名约定一致;端口→加密/jwt.ttl 派生单测。

Summary

Methods
Properties
Constants
test_every_definition_key_is_consumed_or_exempt()
test_every_db_config_consumed_key_has_definition()
test_group_code_prefix_convention()
test_mail_encryption_derived_from_port()
test_jwt_ttl_derived_from_db_absolute_max()
No public properties found
DYNAMIC_EXEMPT
LARAVEL_KEY_PREFIXES
GROUP_PREFIXES
requireRedis()
buildCacheRegistry()
No protected properties found
N/A
frontendExemptKeys()
seedCatalog()
backendSource()
No private properties found
N/A

Constants

DYNAMIC_EXEMPT

DYNAMIC_EXEMPT = ['mail.scene.register', 'mail.scene.repass']

动态键豁免(运行时拼装/注册表驱动,源码无字面量)

LARAVEL_KEY_PREFIXES

LARAVEL_KEY_PREFIXES = ['jwt.', 'session.', 'cors.', 'app.', 'database.', 'filesystems.', 'logging.', 'scramble.', 'services.', 'mail.default', 'mail.mailers.', 'mail.from.', 'queue.default', 'queue.connections.', 'cache.default', 'cache.stores.', 'cache.prefix', 'auth.password', 'auth.password_timeout']

Laravel 静态配置键前缀(env 层,非 DB 定义,消费 `config('...')` 不在此校验)

GROUP_PREFIXES

GROUP_PREFIXES = ['SECURITY' => ['security.'], 'AUTH' => ['auth.'], 'LOG' => ['log.'], 'CACHE' => ['cache.'], 'QUEUE' => ['queue.'], 'EMAIL' => ['mail.', 'queue.mail_sync_auth'], 'FILE' => ['file.'], 'SITE' => ['site.'], 'CAPTCHA' => ['captcha.'], 'SMS' => ['sms.'], 'TEMPLATE' => ['template.'], 'UI' => ['ui.'], 'MAIL_SCENE' => ['mail.scene.'], 'USER' => ['user.'], 'ORG' => ['org.'], 'REGION' => ['region.'], 'MESSAGE' => ['message.']]

分组 → 允许的键前缀(配置体系命名约定)

Methods

test_every_definition_key_is_consumed_or_exempt()

test_every_definition_key_is_consumed_or_exempt() : void

每个定义键必须被源码消费,或属豁免(前端消费/动态键/tabs 结构键)——防死键。

test_every_db_config_consumed_key_has_definition()

test_every_db_config_consumed_key_has_definition() : void

代码消费的 DB 配置键必须有定义——防幽灵键(config_db 入口全量 + ConfigService::get 字面量)。

test_group_code_prefix_convention()

test_group_code_prefix_convention() : void

分组归属守门:每组键前缀必须符合命名约定。

test_mail_encryption_derived_from_port()

test_mail_encryption_derived_from_port() : void

联动推导:SMTP 端口 → 加密方式(单源)。

test_jwt_ttl_derived_from_db_absolute_max()

test_jwt_ttl_derived_from_db_absolute_max() : void

联动推导:jwt.ttl 由 DB 会话绝对上限派生。

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

frontendExemptKeys()

frontendExemptKeys() : array

前端消费豁免(经 /api/site 下发:PUBLIC_KEYS 全集 + ui.* 前缀——消费点在 Backend-Admin-Web)

Returns

array —

seedCatalog()

seedCatalog() : void

backendSource()

backendSource() : string

后端 PHP 源码拼接(app + config + routes,含 bootstrap 装配)

Returns

string —