From 31beb37eca133ebdcf35e5746d2885ac91143bc6 Mon Sep 17 00:00:00 2001 From: xieqiyu Date: Wed, 3 Sep 2025 06:21:56 +0000 Subject: [PATCH] * [bug#65149] Add the unit test file of commonModel::checkPrivForOperateAction. --- module/common/model.php | 2 +- .../common/test/lib/common.unittest.class.php | 30 ++++++++++ .../test/model/checkprivforoperateaction.php | 58 +++++++++++++++++++ 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 module/common/test/lib/common.unittest.class.php create mode 100755 module/common/test/model/checkprivforoperateaction.php diff --git a/module/common/model.php b/module/common/model.php index 2eda630caf..4837bc872f 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -2570,7 +2570,7 @@ eof; * @access protected * @return array|bool */ - protected function checkPrivForOperateAction(array $actionData, string $action, string $moduleName, object $data, string $menu): array|bool + public function checkPrivForOperateAction(array $actionData, string $action, string $moduleName, object $data, string $menu): array|bool { $rawModule = $moduleName; if(!empty($actionData['url']) && is_array($actionData['url'])) diff --git a/module/common/test/lib/common.unittest.class.php b/module/common/test/lib/common.unittest.class.php new file mode 100644 index 0000000000..0049637c70 --- /dev/null +++ b/module/common/test/lib/common.unittest.class.php @@ -0,0 +1,30 @@ +objectModel = $tester->loadModel('common'); + } + + /** + * 检查详情页操作按钮的权限。 + * Check the privilege of the operate action. + * + * @param string $moduleName + * @param object $data + * @param object $menu + * @access protected + * @return array|bool + */ + public function checkPrivForOperateActionTest(string $moduleName, string $action, array $actionData) + { + global $config; + $object = $this->objectModel->dao->select('*')->from($config->objectTables[$moduleName])->where('id')->eq(1)->fetch(); + + $result = $this->objectModel->checkPrivForOperateAction($actionData, $action, $moduleName, $object, 'mainActions'); + return is_array($result) ? !empty($result['url']) : $result; + } +} diff --git a/module/common/test/model/checkprivforoperateaction.php b/module/common/test/model/checkprivforoperateaction.php new file mode 100755 index 0000000000..a4e5cde3f7 --- /dev/null +++ b/module/common/test/model/checkprivforoperateaction.php @@ -0,0 +1,58 @@ +#!/usr/bin/env php +gen(10); +su('admin'); + +/** + +title=测试 commonModel::checkPrivForOperateAction(); +timeout=0 +cid=1 + +- 测试研发需求创建日志按钮权限 @1 +- 测试任务开始按钮权限 @1 +- 测试确认BUG按钮权限 @1 +- 测试执行用例按钮权限 @0 +- 测试没有链接的情况 @0 + +*/ +zenData('task')->gen(1); +zenData('bug')->gen(1); +zenData('case')->gen(1); + +$storyData = zenData('story'); +$storyData->type->range('story,requirement,epic'); +$storyData->gen(3); + +$storyAction = array(); +$storyAction['url'] = array(); +$storyAction['url']['module'] = 'effort'; +$storyAction['url']['method'] = 'createForObject'; +$storyAction['url']['params'] = 'type=story&storyID=1'; + +$taskAction = array(); +$taskAction['url'] = array(); +$taskAction['url']['module'] = 'task'; +$taskAction['url']['method'] = 'start'; +$taskAction['url']['params'] = 'taskID=1'; + +$bugAction = array(); +$bugAction['url'] = array(); +$bugAction['url']['module'] = 'bug'; +$bugAction['url']['method'] = 'confirm'; +$bugAction['url']['params'] = 'bugID=1'; + +$caseAction = array(); +$caseAction['url'] = array(); +$caseAction['url']['module'] = 'testtask'; +$caseAction['url']['method'] = 'runCase'; +$caseAction['url']['params'] = 'runID=0&caseID=1'; + +$commonModel = new commonTest(); +r($commonModel->checkPrivForOperateActionTest('story', 'createeffort', $storyAction)) && p() && e('1'); //测试研发需求创建日志按钮权限 +r($commonModel->checkPrivForOperateActionTest('task', 'start', $taskAction)) && p() && e('1'); //测试任务开始按钮权限 +r($commonModel->checkPrivForOperateActionTest('bug', 'confirm', $bugAction)) && p() && e('1'); //测试确认BUG按钮权限 +r($commonModel->checkPrivForOperateActionTest('testcase', 'runCase', $caseAction)) && p() && e('0'); //测试执行用例按钮权限 +r($commonModel->checkPrivForOperateActionTest('bug', 'create', array())) && p() && e('0'); //测试没有链接的情况