+ [misc] Add unit tests for docZen::checkPrivForCreate() method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-11-12 08:25:42 +08:00
co-authored by Claude
parent 9acdf55cc8
commit e5ee30ba0d
7 changed files with 626 additions and 0 deletions
+15
View File
@@ -38,4 +38,19 @@ class docZenTest extends baseTest
if(dao::isError()) return dao::getError();
return $result;
}
/**
* Test checkPrivForCreate method.
*
* @param object $doclib
* @param string $objectType
* @access public
* @return bool
*/
public function checkPrivForCreateTest(object $doclib, string $objectType)
{
$result = $this->invokeArgs('checkPrivForCreate', [$doclib, $objectType]);
if(dao::isError()) return dao::getError();
return $result;
}
}
+100
View File
@@ -0,0 +1,100 @@
#!/usr/bin/env php
<?php
/**
title=测试 docZen::checkPrivForCreate();
timeout=0
cid=0
- 执行docTest模块的checkPrivForCreateTest方法,参数是$doclibOpen, 'custom' @1
- 执行docTest模块的checkPrivForCreateTest方法,参数是$doclibCustomWithUser, 'custom' @1
- 执行docTest模块的checkPrivForCreateTest方法,参数是$doclibPrivateNoAccess, 'custom' @0
- 执行docTest模块的checkPrivForCreateTest方法,参数是$doclibCustomWithGroup, 'custom' @1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/zen.class.php';
zenData('doclib')->loadYaml('checkprivforcreate/doclib', false, 2)->gen(10);
zenData('product')->loadYaml('checkprivforcreate/product', false, 2)->gen(5);
zenData('project')->loadYaml('checkprivforcreate/project', false, 2)->gen(5);
$userGroupTable = zenData('usergroup');
$userGroupTable->account->range('admin,admin,user1,user1,user2,user2');
$userGroupTable->group->range('1,2,1,2,3,4');
$userGroupTable->project->range('``');
$userGroupTable->gen(6);
global $tester;
$tester->app->user = new stdclass();
$tester->app->user->account = 'user1';
$tester->app->user->admin = false;
$docTest = new docZenTest();
$doclibOpen = new stdclass();
$doclibOpen->id = 1;
$doclibOpen->type = 'custom';
$doclibOpen->acl = 'open';
$doclibOpen->groups = '';
$doclibOpen->users = '';
$doclibOpen->addedBy = 'admin';
$doclibCustomWithUser = new stdclass();
$doclibCustomWithUser->id = 2;
$doclibCustomWithUser->type = 'custom';
$doclibCustomWithUser->acl = 'custom';
$doclibCustomWithUser->groups = '';
$doclibCustomWithUser->users = 'user1';
$doclibCustomWithUser->addedBy = 'admin';
$doclibPrivateNoAccess = new stdclass();
$doclibPrivateNoAccess->id = 3;
$doclibPrivateNoAccess->type = 'custom';
$doclibPrivateNoAccess->acl = 'private';
$doclibPrivateNoAccess->groups = '';
$doclibPrivateNoAccess->users = '';
$doclibPrivateNoAccess->addedBy = 'admin';
$doclibCustomWithGroup = new stdclass();
$doclibCustomWithGroup->id = 4;
$doclibCustomWithGroup->type = 'custom';
$doclibCustomWithGroup->acl = 'custom';
$doclibCustomWithGroup->groups = '1,2';
$doclibCustomWithGroup->users = '';
$doclibCustomWithGroup->addedBy = 'admin';
$tester->app->user->account = 'admin';
$tester->app->user->admin = true;
$doclibPrivateAdmin = new stdclass();
$doclibPrivateAdmin->id = 5;
$doclibPrivateAdmin->type = 'custom';
$doclibPrivateAdmin->acl = 'private';
$doclibPrivateAdmin->groups = '';
$doclibPrivateAdmin->users = '';
$doclibPrivateAdmin->addedBy = 'user2';
$doclibProduct = new stdclass();
$doclibProduct->id = 6;
$doclibProduct->type = 'product';
$doclibProduct->product = 1;
$doclibProduct->acl = 'open';
$doclibProject = new stdclass();
$doclibProject->id = 7;
$doclibProject->type = 'project';
$doclibProject->project = 1;
$doclibProject->acl = 'open';
$tester->app->user->account = 'user1';
$tester->app->user->admin = false;
r($docTest->checkPrivForCreateTest($doclibOpen, 'custom')) && p() && e('1');
r($docTest->checkPrivForCreateTest($doclibCustomWithUser, 'custom')) && p() && e('1');
r($docTest->checkPrivForCreateTest($doclibPrivateNoAccess, 'custom')) && p() && e('0');
r($docTest->checkPrivForCreateTest($doclibCustomWithGroup, 'custom')) && p() && e('1');
$tester->app->user->account = 'admin'; $tester->app->user->admin = true; r($docTest->checkPrivForCreateTest($doclibPrivateAdmin, 'custom')) && p() && e('1');
$tester->app->user->account = 'admin'; $tester->app->user->admin = true; r($docTest->checkPrivForCreateTest($doclibProduct, 'product')) && p() && e('1');
$tester->app->user->account = 'admin'; $tester->app->user->admin = true; r($docTest->checkPrivForCreateTest($doclibProject, 'project')) && p() && e('1');
@@ -0,0 +1,147 @@
---
title: 文档库数据定义
desc: checkPrivForCreate方法测试数据
author: Claude
version: 1.0
fields:
- field: id
note: 文档库ID
range: 1-10
prefix: ""
postfix: ""
loop: 0
format: ""
- field: type
note: 文档库类型
range: custom{3},product{3},project{2},execution{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: vision
note: 视图
range: rnd{10}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: parent
note: 父级ID
range: 0{10}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: product
note: 产品ID
range: 0{7},1,2,3
prefix: ""
postfix: ""
loop: 0
format: ""
- field: project
note: 项目ID
range: 0{8},1,2
prefix: ""
postfix: ""
loop: 0
format: ""
- field: execution
note: 执行ID
range: 0{8},1,2
prefix: ""
postfix: ""
loop: 0
format: ""
- field: name
note: 文档库名称
range: 文档库{10}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: baseUrl
note: 基础URL
range: '[]'
prefix: ""
postfix: ""
loop: 0
format: ""
- field: acl
note: 访问控制
range: open{3},custom{3},private{2},default{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: groups
note: 分组权限
range: '[]{6},1{2},1,2{2}'
prefix: ""
postfix: ""
loop: 0
format: ""
- field: users
note: 用户权限
range: '[]{6},admin{2},user1{1},admin,user1{1}'
prefix: ""
postfix: ""
loop: 0
format: ""
- field: main
note: 是否主库
range: 0{9},1
prefix: ""
postfix: ""
loop: 0
format: ""
- field: collector
note: 收藏者
range: '[]'
prefix: ""
postfix: ""
loop: 0
format: ""
- field: desc
note: 描述
range: '[]'
prefix: ""
postfix: ""
loop: 0
format: ""
- field: order
note: 排序
range: 1-10
prefix: ""
postfix: ""
loop: 0
format: ""
- field: addedBy
note: 创建者
range: admin{5},user1{3},user2{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: addedDate
note: 创建时间
range: (-1Y)-(0):60D
prefix: ""
postfix: ""
loop: 0
format: YYYY-MM-DD hh:mm:ss
- field: deleted
note: 是否删除
range: 0{10}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: archived
note: 是否归档
range: 0{10}
prefix: ""
postfix: ""
loop: 0
format: ""
@@ -0,0 +1,119 @@
---
title: 执行数据定义
desc: checkPrivForCreate方法测试数据
author: Claude
version: 1.0
fields:
- field: id
note: 执行ID
range: 1-5
prefix: ""
postfix: ""
loop: 0
format: ""
- field: project
note: 项目ID
range: 1,1,2,2,3
prefix: ""
postfix: ""
loop: 0
format: ""
- field: model
note: 执行模型
range: scrum{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: type
note: 执行类型
range: sprint{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: parent
note: 父执行ID
range: 0{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: name
note: 执行名称
range: 执行{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: code
note: 执行代号
range: EXEC{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: begin
note: 开始时间
range: (-1Y)-(0):60D
prefix: ""
postfix: ""
loop: 0
format: YYYY-MM-DD
- field: end
note: 结束时间
range: (0)-(+1Y):60D
prefix: ""
postfix: ""
loop: 0
format: YYYY-MM-DD
- field: status
note: 状态
range: doing{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: desc
note: 描述
range: '[]'
prefix: ""
postfix: ""
loop: 0
format: ""
- field: acl
note: 访问控制
range: open{3},private{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: whitelist
note: 白名单
range: '[]'
prefix: ""
postfix: ""
loop: 0
format: ""
- field: openedBy
note: 创建者
range: admin{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: openedDate
note: 创建时间
range: (-1Y)-(0):60D
prefix: ""
postfix: ""
loop: 0
format: YYYY-MM-DD hh:mm:ss
- field: deleted
note: 是否删除
range: 0{5}
prefix: ""
postfix: ""
loop: 0
format: ""
@@ -0,0 +1,98 @@
---
title: 产品数据定义
desc: checkPrivForCreate方法测试数据
author: Claude
version: 1.0
fields:
- field: id
note: 产品ID
range: 1-5
prefix: ""
postfix: ""
loop: 0
format: ""
- field: program
note: 项目集ID
range: 0{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: name
note: 产品名称
range: 产品{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: code
note: 产品代号
range: PROD{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: line
note: 产品线
range: 0{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: type
note: 产品类型
range: normal{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: status
note: 状态
range: normal{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: desc
note: 描述
range: '[]'
prefix: ""
postfix: ""
loop: 0
format: ""
- field: acl
note: 访问控制
range: open{3},private{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: whitelist
note: 白名单
range: '[]'
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdBy
note: 创建者
range: admin{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdDate
note: 创建时间
range: (-1Y)-(0):60D
prefix: ""
postfix: ""
loop: 0
format: YYYY-MM-DD hh:mm:ss
- field: deleted
note: 是否删除
range: 0{5}
prefix: ""
postfix: ""
loop: 0
format: ""
@@ -0,0 +1,119 @@
---
title: 项目数据定义
desc: checkPrivForCreate方法测试数据
author: Claude
version: 1.0
fields:
- field: id
note: 项目ID
range: 1-5
prefix: ""
postfix: ""
loop: 0
format: ""
- field: project
note: 项目ID
range: 0{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: model
note: 项目模型
range: scrum{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: type
note: 项目类型
range: project{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: parent
note: 父项目ID
range: 0{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: name
note: 项目名称
range: 项目{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: code
note: 项目代号
range: PROJ{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: begin
note: 开始时间
range: (-1Y)-(0):60D
prefix: ""
postfix: ""
loop: 0
format: YYYY-MM-DD
- field: end
note: 结束时间
range: (0)-(+1Y):60D
prefix: ""
postfix: ""
loop: 0
format: YYYY-MM-DD
- field: status
note: 状态
range: doing{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: desc
note: 描述
range: '[]'
prefix: ""
postfix: ""
loop: 0
format: ""
- field: acl
note: 访问控制
range: open{3},private{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: whitelist
note: 白名单
range: '[]'
prefix: ""
postfix: ""
loop: 0
format: ""
- field: openedBy
note: 创建者
range: admin{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: openedDate
note: 创建时间
range: (-1Y)-(0):60D
prefix: ""
postfix: ""
loop: 0
format: YYYY-MM-DD hh:mm:ss
- field: deleted
note: 是否删除
range: 0{5}
prefix: ""
postfix: ""
loop: 0
format: ""
@@ -0,0 +1,28 @@
---
title: 用户分组数据定义
desc: checkPrivForCreate方法测试数据
author: Claude
version: 1.0
fields:
- field: account
note: 用户账号
range: admin{2},user1{2},user2{2},user3{1}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: group
note: 分组ID
range: 1,2,1,2,3,3,4
prefix: ""
postfix: ""
loop: 0
format: ""
- field: project
note: 项目ID
range: '[]'
prefix: ""
postfix: ""
loop: 0
format: ""