From 19bd7e5023ed11088b94f7ebceed67835997d0ce Mon Sep 17 00:00:00 2001 From: liugang Date: Thu, 21 Dec 2023 16:07:53 +0800 Subject: [PATCH] * userTest: refactor script to test the identifyByCookie method. --- module/user/test/model/identifybycookie.php | 135 ++++++++++++++++---- module/user/test/user.class.php | 3 +- 2 files changed, 112 insertions(+), 26 deletions(-) diff --git a/module/user/test/model/identifybycookie.php b/module/user/test/model/identifybycookie.php index b59f98d2ef..a974de6e43 100755 --- a/module/user/test/model/identifybycookie.php +++ b/module/user/test/model/identifybycookie.php @@ -1,37 +1,122 @@ #!/usr/bin/env php gen(300); -su('admin'); - /** - title=测试 userModel->identifyByCookie(); cid=1 pid=1 - -验证admin用户 >> 1 -验证游客用户 >> 0 -获取不存在的用户 >> 0 - */ +include dirname(__FILE__, 5) . '/test/lib/init.php'; +include dirname(__FILE__, 2) . '/user.class.php'; -$user = new userTest(); +zdTable('user')->gen(2); +zdTable('company')->gen(1); +zdTable('group')->gen(3); -$_COOKIE['za'] = 'admin'; -$_COOKIE['zp'] = 'a0933c1218a4e745bacdcf572b10eba7'; -$normalUser = $user->identifyByCookieTest('admin'); +$userGroupTable = zdTable('usergroup'); +$userGroupTable->account->range('admin{2},user1{2}'); +$userGroupTable->group->range('1,2{2},3'); +$userGroupTable->gen(4); -$_COOKIE['za'] = 'guest'; -$_COOKIE['zp'] = ''; -$guest = $user->identifyByCookieTest('guest'); +$groupPrivTable = zdTable('grouppriv'); +$groupPrivTable->group->range('1-3{3}'); +$groupPrivTable->module->range('company,dept,group,program,product,execution,qa,bug,testcase'); +$groupPrivTable->method->range('browse{5},all,index,browse{2}'); +$groupPrivTable->gen(9); -$_COOKIE['za'] = 'asdqwe'; -$_COOKIE['zp'] = 'a0933c1218a4e745bacdcf572b10eba7'; -$notExistUser = $user->identifyByCookieTest('asdqwe'); +global $app; -r($normalUser) && p() && e('1'); //验证admin用户 -r($guest) && p() && e('0'); //验证游客用户 -r($notExistUser) && p() && e('0'); //获取不存在的用户 +$userTest = new userTest(); +$password = sha1(123456); +$admin = $userTest->getByIdTest('admin'); +$user1 = $userTest->getByIdTest('user1'); + +/** + * 检测验证空用户。 + */ +$tester->cookie->set('za', ''); +$tester->cookie->set('zp', $password); +r($userTest->identifyByCookieTest()) && p() && e(0); // 空用户验证失败,返回 false。 + +/** + * 检测验证 guest 用户。 + */ +$tester->cookie->set('za', 'guest'); +$tester->cookie->set('zp', $password); +r($userTest->identifyByCookieTest()) && p() && e(0); // guest 用户验证失败,返回 false。 + +/** + * 检测验证不存在的用户。 + */ +$tester->cookie->set('za', 'user2'); +$tester->cookie->set('zp', $password); +r($userTest->identifyByCookieTest()) && p() && e(0); // user2 用户验证失败,返回 false。 + +/** + * 检测验证 admin 用户。 + */ +$tester->cookie->set('za', $admin->account); +$tester->cookie->set('zp', sha1($admin->account . $admin->password . strtotime($admin->last))); +r($userTest->identifyByCookieTest()) && p() && e(1); // admin 用户验证成功,返回 true。 +r($app->user) && p('account') && e('admin'); // admin 用户验证成功,$app 对象的中的用户是 admin。 +r($tester->session->user) && p('account') && e('admin'); // admin 用户验证成功,session 中的用户是 admin。 + +/* 检测 admin 用户权限。*/ +r(count($app->user->rights['rights'])) && p() && e(8); // admin 用户具有 6 个模块的权限。 +r(isset($app->user->rights['rights']['index']['index'])) && p() && e(1); // admin 用户具有 index 模块的 index 动作的权限。 +r(isset($app->user->rights['rights']['my']['index'])) && p() && e(1); // admin 用户具有 my 模块的 index 动作的权限。 +r(isset($app->user->rights['rights']['company']['browse'])) && p() && e(1); // admin 用户具有 company 模块的 all 动作的权限。 +r(isset($app->user->rights['rights']['dept']['browse'])) && p() && e(1); // admin 用户具有 dept 模块的 browse 动作的权限。 +r(isset($app->user->rights['rights']['group']['browse'])) && p() && e(1); // admin 用户具有 group 模块的 browse 动作的权限。 +r(isset($app->user->rights['rights']['program']['browse'])) && p() && e(1); // admin 用户具有 program 模块的 browse 动作的权限。 +r(isset($app->user->rights['rights']['product']['browse'])) && p() && e(1); // admin 用户具有 product 模块的 browse 动作的权限。 +r(isset($app->user->rights['rights']['execution']['all'])) && p() && e(1); // admin 用户具有 execution 模块的 browse 动作的权限。 + +/* 检测 admin 用户权限组。*/ +r(count($app->user->groups)) && p() && e(2); // admin 用户具有 2 个权限组。 +r($app->user->groups) && p('1,2') && e('1,2'); // admin 用户具有的权限组 id 分别是 1 和 2。 + +/* 检测 admin 用户视图功能在 computeUserView 和 grantUserView 方法的单元测试中实现。*/ + +/* 检测是否记录 admin 登录日志。*/ +$action = $tester->dao->select('*')->from(TABLE_ACTION)->orderBy('id_desc')->limit(1)->fetch(); +r($action) && p('objectType,objectID,action') && e('user,1,login'); // 记录日志,最后一条日志对象类型是 user,对象 ID 是 1,动作是 login。 + +/** + * 检测验证 user1 用户。 + */ +$tester->cookie->set('za', $user1->account); +$tester->cookie->set('zp', sha1($user1->account . $user1->password . strtotime($user1->last))); +r($userTest->identifyByCookieTest()) && p() && e(1); // user1 用户验证成功,返回 true。 +r($app->user) && p('account') && e('user1'); // user1 用户验证成功,$app 对象的中的用户是 user1。 +r($tester->session->user) && p('account') && e('user1'); // user1 用户验证成功,session 中的用户是 user1。 + +/* 检测 user1 用户权限。*/ +r(count($app->user->rights['rights'])) && p() && e(8); // user1 用户具有 2 个模块的权限。 +r(isset($app->user->rights['rights']['index']['index'])) && p() && e(1); // user1 用户具有 index 模块的 index 动作的权限。 +r(isset($app->user->rights['rights']['my']['index'])) && p() && e(1); // user1 用户具有 my 模块的 index 动作的权限。 +r(isset($app->user->rights['rights']['program']['browse'])) && p() && e(1); // user1 用户具有 program 模块的 browse 动作的权限。 +r(isset($app->user->rights['rights']['product']['browse'])) && p() && e(1); // user1 用户具有 product 模块的 browse 动作的权限。 +r(isset($app->user->rights['rights']['execution']['all'])) && p() && e(1); // user1 用户具有 execution 模块的 all 动作的权限。 +r(isset($app->user->rights['rights']['qa']['index'])) && p() && e(1); // user1 用户具有 qa 模块的 index 动作的权限。 +r(isset($app->user->rights['rights']['bug']['browse'])) && p() && e(1); // user1 用户具有 bug 模块的 browse 动作的权限。 +r(isset($app->user->rights['rights']['testcase']['browse'])) && p() && e(1); // user1 用户具有 testcase 模块的 browse 动作的权限。 + +/* 检测 user1 用户权限组。*/ +r(count($app->user->groups)) && p() && e(2); // user1 用户具有 2 个权限组。 +r($app->user->groups) && p('2,3') && e('2,3'); // user1 用户具有的权限组 id 分别是 2 和 3。 + +/* 检测 user1 用户视图功能在 computeUserView 和 grantUserView 方法的单元测试中实现。*/ + +/* 检测是否记录 user1 登录日志。*/ +$action = $tester->dao->select('*')->from(TABLE_ACTION)->orderBy('id_desc')->limit(1)->fetch(); +r($action) && p('objectType,objectID,action') && e('user,2,login'); // 记录日志,最后一条日志对象类型是 user,对象 ID 是 2,动作是 login。 + +/* 检测 user1 用户使用错误密码验证。*/ +$tester->cookie->set('za', $user1->account); +$tester->cookie->set('zp', sha1($user1->password)); +r($userTest->identifyByCookieTest()) && p() && e(0); // user1 用户使用错误密码验证失败,返回 false。 + +/* 检测 user1 用户使用空密码验证。*/ +$tester->cookie->set('za', $user1->account); +$tester->cookie->set('zp', ''); +r($userTest->identifyByCookieTest()) && p() && e(0); // user1 用户使用空密码验证失败,返回 false。 diff --git a/module/user/test/user.class.php b/module/user/test/user.class.php index f4632b9033..b6fb3530ce 100755 --- a/module/user/test/user.class.php +++ b/module/user/test/user.class.php @@ -1058,12 +1058,13 @@ class userTest } /** + * 测试根据 cookie 验证用户。 * Identify user by cookie. * * @access public * @return bool */ - public function identifyByCookieTest() + public function identifyByCookieTest(): bool { return $this->objectModel->identifyByCookie(); }