diff --git a/module/search/test/lib/tao.class.php b/module/search/test/lib/tao.class.php index a3eb69e132..22ef88c066 100644 --- a/module/search/test/lib/tao.class.php +++ b/module/search/test/lib/tao.class.php @@ -156,4 +156,19 @@ class searchTaoTest extends baseTest if(dao::isError()) return dao::getError(); return $result; } + + /** + * Test checkProjectPriv method. + * + * @param array $results + * @param array $objectIdList + * @access public + * @return array + */ + public function checkProjectPrivTest(array $results, array $objectIdList): array + { + $result = $this->invokeArgs('checkProjectPriv', [$results, $objectIdList]); + if(dao::isError()) return dao::getError(); + return $result; + } } diff --git a/module/search/test/tao/checkprojectpriv.php b/module/search/test/tao/checkprojectpriv.php new file mode 100755 index 0000000000..70a65bf35f --- /dev/null +++ b/module/search/test/tao/checkprojectpriv.php @@ -0,0 +1,71 @@ +#!/usr/bin/env php +id = 1; +$result1->objectType = 'project'; +$result1->objectID = 101; + +$result2 = new stdclass(); +$result2->id = 2; +$result2->objectType = 'project'; +$result2->objectID = 102; + +$result3 = new stdclass(); +$result3->id = 3; +$result3->objectType = 'project'; +$result3->objectID = 103; + +// 测试步骤1: 用户有权限访问所有项目 +$results = array(1 => $result1, 2 => $result2, 3 => $result3); +$objectIdList = array(101 => 1, 102 => 2, 103 => 3); +$app->user->view = new stdclass(); +$app->user->view->projects = '101,102,103'; +r(count($searchTest->checkProjectPrivTest($results, $objectIdList))) && p() && e('3'); + +// 测试步骤2: 用户有权限访问部分项目(项目1和2) +$results = array(1 => $result1, 2 => $result2, 3 => $result3); +$objectIdList = array(101 => 1, 102 => 2, 103 => 3); +$app->user->view->projects = '101,102'; +r(count($searchTest->checkProjectPrivTest($results, $objectIdList))) && p() && e('2'); + +// 测试步骤3: 用户没有任何项目权限 +$results = array(1 => $result1, 2 => $result2, 3 => $result3); +$objectIdList = array(101 => 1, 102 => 2, 103 => 3); +$app->user->view->projects = ''; +r(count($searchTest->checkProjectPrivTest($results, $objectIdList))) && p() && e('0'); + +// 测试步骤4: 空的结果数组 +$results = array(); +$objectIdList = array(101 => 1, 102 => 2); +$app->user->view->projects = '101,102'; +r(count($searchTest->checkProjectPrivTest($results, $objectIdList))) && p() && e('0'); + +// 测试步骤5: 空的对象ID列表 +$results = array(1 => $result1, 2 => $result2); +$objectIdList = array(); +$app->user->view->projects = '101,102'; +r(count($searchTest->checkProjectPrivTest($results, $objectIdList))) && p() && e('2'); \ No newline at end of file