From eb10cf75440109fc5ebd730dab03fc081aabeaba Mon Sep 17 00:00:00 2001 From: tianshujie Date: Tue, 28 Nov 2023 16:38:27 +0800 Subject: [PATCH] + Add doc::checkPrivLib unit test. --- module/doc/test/doc.class.php | 16 ++++++++++ module/doc/test/model/checkprivlib.php | 44 ++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 module/doc/test/model/checkprivlib.php diff --git a/module/doc/test/doc.class.php b/module/doc/test/doc.class.php index 6e1e171748..30069a91c7 100644 --- a/module/doc/test/doc.class.php +++ b/module/doc/test/doc.class.php @@ -675,4 +675,20 @@ class docTest if(dao::isError()) return dao::getError(); return $libs; } + + /** + * 检查是否有权限访问文档库。 + * Check priv for lib. + * + * @param string $type lib|doc + * @param int $objectID + * @param string $extra notdoc + * @access public + * @return bool + */ + public function checkPrivLibTest(string $type, int $objectID, string $extra = ''): bool + { + $object = $type == 'lib' ? $this->objectModel->getLibByID($objectID) : $this->objectModel->getByID($objectID); + return $this->objectModel->checkPrivLib($object, $extra); + } } diff --git a/module/doc/test/model/checkprivlib.php b/module/doc/test/model/checkprivlib.php new file mode 100644 index 0000000000..0eab79cf15 --- /dev/null +++ b/module/doc/test/model/checkprivlib.php @@ -0,0 +1,44 @@ +#!/usr/bin/env php +checkPrivLib(); +timeout=0 +cid=1 + +*/ + +include dirname(__FILE__, 5) . '/test/lib/init.php'; +include dirname(__FILE__, 2) . '/doc.class.php'; + +$doclibTable = zdTable('doclib')->config('doclib'); +$doclibTable->acl->range('open, default'); +$doclibTable->gen(20); + +zdTable('doc')->config('doc')->gen(45); +zdTable('project')->config('execution')->gen(10); +zdTable('product')->config('product')->gen(5); +zdTable('user')->gen(5); +su('admin'); + +$libIdList = array(1, 5, 6, 11, 20); +$docIdList = array(1, 18, 21, 23, 41); + +$docTester = new docTest(); +r($docTester->checkPrivLibTest('lib', $libIdList[0])) && p() && e('1'); // 测试ID=1的文档库的权限 +r($docTester->checkPrivLibTest('lib', $libIdList[1])) && p() && e('1'); // 测试ID=5的文档库的权限 +r($docTester->checkPrivLibTest('lib', $libIdList[2])) && p() && e('1'); // 测试ID=6的文档库的权限 +r($docTester->checkPrivLibTest('lib', $libIdList[3])) && p() && e('1'); // 测试ID=11的文档库的权限 +r($docTester->checkPrivLibTest('lib', $libIdList[4])) && p() && e('1'); // 测试ID=20的文档库的权限 + +r($docTester->checkPrivLibTest('doc', $docIdList[0])) && p() && e('1'); // 测试ID=1的文档的权限 +r($docTester->checkPrivLibTest('doc', $docIdList[1])) && p() && e('1'); // 测试ID=18的文档的权限 +r($docTester->checkPrivLibTest('doc', $docIdList[2])) && p() && e('1'); // 测试ID=21的文档的权限 +r($docTester->checkPrivLibTest('doc', $docIdList[3])) && p() && e('1'); // 测试ID=23的文档的权限 +r($docTester->checkPrivLibTest('doc', $docIdList[4])) && p() && e('1'); // 测试ID=41的文档的权限 + +r($docTester->checkPrivLibTest('doc', $docIdList[0], 'notdoc')) && p() && e('1'); // 测试ID=1的文档的权限 +r($docTester->checkPrivLibTest('doc', $docIdList[1], 'notdoc')) && p() && e('1'); // 测试ID=18的文档的权限 +r($docTester->checkPrivLibTest('doc', $docIdList[2], 'notdoc')) && p() && e('1'); // 测试ID=21的文档的权限 +r($docTester->checkPrivLibTest('doc', $docIdList[3], 'notdoc')) && p() && e('1'); // 测试ID=23的文档的权限 +r($docTester->checkPrivLibTest('doc', $docIdList[4], 'notdoc')) && p() && e('1'); // 测试ID=41的文档的权限