\Tests\FeaturePublicFolderModelTest

公共目录模型

被测对象:MaintainFileService(公共目录建/改/删、list、batchTrash、move、folders、batchCopy)与 UserConfigService(维护标志授予) 守护约定:td_sys_file_folder.user_id=0 即公共目录树——全员可见、维护标志用户(一个标志= 全部公共目录完整维护权)可管理;公共文件只能公共目录间移动;个人目录不可挂公共目录下; 维护标志仅豁免用户可授;批量复制配额一次预取。

Summary

Methods
Properties
Constants
test_plain_user_cannot_manage_public_folders()
test_public_folder_file_visible_to_all_users()
test_plain_user_cannot_operate_public_folder_file()
test_public_file_cannot_move_out_of_public_space()
test_plain_user_cannot_move_own_file_into_public_folder()
test_disabled_public_folder_blocks_write()
test_personal_folder_cannot_nest_under_public()
test_personal_folder_endpoints_reject_public_folder()
test_folders_returns_dual_partition_with_can_manage()
test_super_exempt_manages_public_folders_without_flag()
test_batch_copy_prefetches_quota_and_skips_over_quota()
test_single_upload_over_quota_rejected()
No public properties found
No constants found
requireRedis()
buildCacheRegistry()
setUp()
No protected properties found
N/A
makeUser()
makePublicFolder()
makeFile()
$maintainer
$normal
$uploader
N/A

Properties

$maintainer

$maintainer : \App\Models\SysUser

Type

SysUser

$normal

$normal : \App\Models\SysUser

Type

SysUser

$uploader

$uploader : \App\Models\SysUser

Type

SysUser

Methods

test_plain_user_cannot_manage_public_folders()

test_plain_user_cannot_manage_public_folders() : void

验证普通用户不能建/改/删公共目录(403)。

test_public_folder_file_visible_to_all_users()

test_public_folder_file_visible_to_all_users() : void

验证公共目录文件全员可见、个人文件不泄漏。

test_plain_user_cannot_operate_public_folder_file()

test_plain_user_cannot_operate_public_folder_file() : void

验证普通用户不能操作公共目录文件(跳过且状态不变)。

test_public_file_cannot_move_out_of_public_space()

test_public_file_cannot_move_out_of_public_space() : void

验证公共文件不能移出公共空间、公共目录间移动放行。

test_plain_user_cannot_move_own_file_into_public_folder()

test_plain_user_cannot_move_own_file_into_public_folder() : void

验证普通用户不能把个人文件移入公共目录(403)。

test_disabled_public_folder_blocks_write()

test_disabled_public_folder_blocks_write() : void

验证停用公共目录不可写入。

test_personal_folder_cannot_nest_under_public()

test_personal_folder_cannot_nest_under_public() : void

验证个人目录不能挂在公共目录下。

test_personal_folder_endpoints_reject_public_folder()

test_personal_folder_endpoints_reject_public_folder() : void

验证公共目录经个人目录接口修改/删除被拒(403)。

test_folders_returns_dual_partition_with_can_manage()

test_folders_returns_dual_partition_with_can_manage() : void

验证 folders 返回个人/公共双分区且公共可写语义由 can_manage_public 表达。

test_super_exempt_manages_public_folders_without_flag()

test_super_exempt_manages_public_folders_without_flag() : void

验证超管豁免无需维护标志即可管理公共目录。

test_batch_copy_prefetches_quota_and_skips_over_quota()

test_batch_copy_prefetches_quota_and_skips_over_quota() : void

批量复制配额一次预取(单次 sum + 内存递减),超配额逐文件跳过

test_single_upload_over_quota_rejected()

test_single_upload_over_quota_rejected() : void

单文件上传超配额被拒(MaintainFileService::create 的 assertQuota 拦截,HTTP 层 400 语义)。

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

makeUser()

makeUser(string  $username, bool  $isSuper = false) : \App\Models\SysUser

Parameters

string $username
bool $isSuper

Returns

\App\Models\SysUser —

makePublicFolder()

makePublicFolder(string  $name = '公共资料', int  $parentId, int  $status = 1) : \App\Models\SysFileFolder

Parameters

string $name
int $parentId
int $status

Returns

\App\Models\SysFileFolder —

makeFile()

makeFile(\App\Models\SysUser  $user, int  $folderId, int  $status = SysFile::STATUS_NORMAL) : \App\Models\SysFile

Parameters

\App\Models\SysUser $user
int $folderId
int $status

Returns

\App\Models\SysFile —