\Tests\FeatureFileUploadHelperTest

文件上传安全链

被测对象:FileUploadHelper::upload(危险扩展名拒绝 → 分类白名单 → 落盘 → 魔数校验 → 落库) 守护约定:web 可执行扩展在落盘前拒绝;扩展名与分类不匹配拒绝;伪造 MIME 被魔数校验拒绝; 合法文件成功落盘且写入 td_sys_files。

Summary

Methods
Properties
Constants
test_dangerous_php_extension_rejected_before_storage()
test_dangerous_script_extensions_rejected()
test_category_extension_mismatch_rejected()
test_spoofed_image_extension_rejected_by_magic_check()
test_legit_upload_succeeds_and_records_db()
No public properties found
No constants found
requireRedis()
buildCacheRegistry()
setUp()
No protected properties found
N/A
No private methods found
No private properties found
N/A

Methods

test_dangerous_php_extension_rejected_before_storage()

test_dangerous_php_extension_rejected_before_storage() : void

危险扩展名 .php 在落盘前被拒绝(RCE 面底线)。

test_dangerous_script_extensions_rejected()

test_dangerous_script_extensions_rejected() : void

危险扩展名底线(js/phtml/aspx 等 web 可执行类)逐个被拒。

test_category_extension_mismatch_rejected()

test_category_extension_mismatch_rejected() : void

分类白名单:pdf 只能走 document,传 image 分类被拒。

test_spoofed_image_extension_rejected_by_magic_check()

test_spoofed_image_extension_rejected_by_magic_check() : void

伪造 MIME(纯文本改名 .png)被魔数校验拒绝。

test_legit_upload_succeeds_and_records_db()

test_legit_upload_succeeds_and_records_db() : void

合法文件成功上传:落盘 + 写入 td_sys_files(默认 record_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

setUp()

setUp() : void