\Tests\UnitHttpSmsDriverTest

短信 HTTP 通道 SSRF 防护

被测对象:HttpSmsDriver(真实网络走 Http::fake 拦截) 守护约定:内网/保留/环回/链路本地地址默认拒绝;sms.http_allow_internal_hosts 白名单放行; 重定向已禁用(withoutRedirecting)。

Summary

Methods
Properties
Constants
test_loopback_target_rejected()
test_private_range_target_rejected()
test_link_local_metadata_target_rejected()
test_allowlisted_internal_host_passes()
No public properties found
No constants found
requireRedis()
buildCacheRegistry()
tearDown()
No protected properties found
N/A
No private methods found
No private properties found
N/A

Methods

test_loopback_target_rejected()

test_loopback_target_rejected() : void

验证环回地址目标被拒绝。

test_private_range_target_rejected()

test_private_range_target_rejected() : void

验证内网私网段目标被拒绝。

test_link_local_metadata_target_rejected()

test_link_local_metadata_target_rejected() : void

验证链路本地元数据地址目标被拒绝。

test_allowlisted_internal_host_passes()

test_allowlisted_internal_host_passes() : void

验证白名单内的内网主机放行(未抛异常即通过)。

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

tearDown()

tearDown() : void