\Tests\FeatureSiteControllerTest

站点公开信息接口回归

被测对象:GET /api/site(SiteController::__invoke → ConfigService::siteInfo) 守护约定:① 显式字段(站点信息/登录页开关)结构稳定且默认回退 ② 未映射的 公开定义按 key=>value 平铺追加(数据驱动化)③ is_public=0 不出现 ④ 敏感键即使误标 is_public=1 也不外泄(防呆兜底)。

Summary

Methods
Properties
Constants
test_default_fallbacks_without_definitions()
test_explicit_fields_map_from_definitions()
test_value_overrides_default()
test_unmapped_public_definitions_are_appended()
test_non_public_definitions_are_excluded()
test_sensitive_keys_never_leak_even_if_marked_public()
test_remember_days_parsing()
test_empty_aggregation_keeps_fallbacks()
No public properties found
No constants found
makeDef()
requireRedis()
buildCacheRegistry()
setUp()
tearDown()
No protected properties found
N/A
makePublicDef()
No private properties found
N/A

Methods

test_default_fallbacks_without_definitions()

test_default_fallbacks_without_definitions() : void

无任何公开定义:全部显式字段走默认回退,结构稳定

test_explicit_fields_map_from_definitions()

test_explicit_fields_map_from_definitions() : void

显式字段映射:SITE 分组定义覆盖默认值;值优先回落 default_value

test_value_overrides_default()

test_value_overrides_default() : void

值记录优先于默认值(td_sys_config_value 有值即用值)

test_unmapped_public_definitions_are_appended()

test_unmapped_public_definitions_are_appended() : void

自动追加:未映射的公开定义按 key=>value 平铺;site./auth. 前缀不重复追加

test_non_public_definitions_are_excluded()

test_non_public_definitions_are_excluded() : void

is_public=0 的定义(含敏感配置)永不出现在公开接口

test_sensitive_keys_never_leak_even_if_marked_public()

test_sensitive_keys_never_leak_even_if_marked_public() : void

敏感键防呆兜底:即使误标 is_public=1 也不外泄(掩码≠加密)

test_remember_days_parsing()

test_remember_days_parsing() : void

remember_days 解析:逗号分隔 intval 过滤,空/非法回落 [1]

test_empty_aggregation_keeps_fallbacks()

test_empty_aggregation_keeps_fallbacks() : void

定义列表为空时 siteInfo 空聚合:接口仍 200 且默认回退(命中空缓存不落库)

makeDef()

makeDef(string  $key, string  $type, mixed  $default = null, string  $validation = '', string  $options = '', int  $isTabs) : \App\Models\SysConfigDefinition

创建测试配置定义(TEST 组,静态来源)

Parameters

string $key
string $type
mixed $default
string $validation
string $options
int $isTabs

Returns

\App\Models\SysConfigDefinition —

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

tearDown()

tearDown() : void

makePublicDef()

makePublicDef(string  $key, string  $type, mixed  $default = null) : \App\Models\SysConfigDefinition

公开定义工厂:makeDef + 标记 is_public=1(siteInfo 聚合只收公开定义)

Parameters

string $key
string $type
mixed $default

Returns

\App\Models\SysConfigDefinition —