From cf95e1d66d1037398e3c19e0b5e78e6dc12416e8 Mon Sep 17 00:00:00 2001 From: liugang Date: Tue, 19 Dec 2023 13:31:51 +0800 Subject: [PATCH] * userTest: refactor script to test the resetPassword method. --- module/user/test/model/resetpassword.php | 69 +++++++++++++----------- module/user/test/user.class.php | 26 ++++----- 2 files changed, 48 insertions(+), 47 deletions(-) diff --git a/module/user/test/model/resetpassword.php b/module/user/test/model/resetpassword.php index c456ece5f1..b138816b05 100755 --- a/module/user/test/model/resetpassword.php +++ b/module/user/test/model/resetpassword.php @@ -1,44 +1,49 @@ #!/usr/bin/env php gen(10); - /** - title=测试 userModel->resetPassword(); cid=1 pid=1 - -重设用户密码,返回重设后的加密后的密码 >> 367ef140036b0feb2f90d70d33255eea -两次密码不相同的情况 >> 两次密码应该相同。
-密码强度小于系统设定 >> 密码必须6位及以上,且包含大小写字母、数字。
-使用常见简单密码,给出错误提示 >> 密码不能使用【123456,password,12345,12345678,qwerty,123456789,1234,1234567,abc123,111111,123123】这些常用弱口令。 - */ +include dirname(__FILE__, 5) . '/test/lib/init.php'; +include dirname(__FILE__, 2) . '/user.class.php'; -$user = new userTest(); -$normalUser = array(); -$normalUser['account'] = 'admin'; -$normalUser['password1'] = '367ef140036b0feb2f90d70d33255eea'; -$normalUser['password2'] = '367ef140036b0feb2f90d70d33255eea'; -$normalUser['passwordStrength'] = 1; +zdTable('user')->gen(2); -$weakPassword = $normalUser; -$weakPassword['password1'] = '367ef140036b0feb2f90d70d33255eea'; -$weakPassword['password2'] = '367ef140036b0feb2f90d70d33255eea'; -$weakPassword['passwordStrength'] = 0; +su('admin'); -$differentPassword = $normalUser; -$differentPassword['password2'] = '!@#!@#asfasf'; +$userTest = new userTest(); -$simplePassword = $normalUser; -$simplePassword['password1'] = 'e10adc3949ba59abbe56e057f20f883e'; -$simplePassword['password2'] = 'e10adc3949ba59abbe56e057f20f883e'; +unset($config->safe->mode); +unset($config->safe->weak); -r($user->resetPasswordTest($normalUser)) && p('password') && e('367ef140036b0feb2f90d70d33255eea'); //重设用户密码,返回重设后的加密后的密码 -r($user->resetPasswordTest($differentPassword)) && p('password1:0') && e('两次密码应该相同。'); //两次密码不相同的情况 -r($user->resetPasswordTest($weakPassword)) && p('password1:0') && e('密码必须6位及以上,且包含大小写字母、数字。'); //密码强度小于系统设定 -r($user->resetPasswordTest($simplePassword)) && p('password1', '-') && e('密码不能使用【123456,password,12345,12345678,qwerty,123456789,1234,1234567,abc123,111111,123123】这些常用弱口令。'); //使用常见简单密码,给出错误提示 +$password = md5(123456); +$user1 = (object)array('account' => 'user2', 'password' => $password, 'password1' => $password, 'password2' => $password, 'passwordStrength' => 0, 'passwordLength' => 6); +$user2 = (object)array('account' => 'admin', 'password' => $password, 'password1' => '', 'password2' => $password, 'passwordStrength' => 0, 'passwordLength' => 6); +$user3 = (object)array('account' => 'admin', 'password' => $password, 'password1' => $password, 'password2' => $password, 'passwordStrength' => 0, 'passwordLength' => 5); +$user4 = (object)array('account' => 'admin', 'password' => $password, 'password1' => $password, 'password2' => '123456', 'passwordStrength' => 0, 'passwordLength' => 6); +$user5 = (object)array('account' => 'user1', 'password' => $password, 'password1' => $password, 'password2' => $password, 'passwordStrength' => 0, 'passwordLength' => 6); + +$result = $userTest->resetPasswordTest($user1); +r($result) && p('result') && e(0); // user2 用户不存在,返回 false。 +r($result) && p('errors:0') && e('用户不存在'); // user2 用户不存在,提示错误信息。 + +$result = $userTest->resetPasswordTest($user2); +r($result) && p('result') && e(0); // admin 用户存在,但密码为空,返回 false。 +r($result) && p('errors:password1') && e('『密码』不能为空。'); // admin 用户存在,但密码为空,提示错误信息。 + +$result = $userTest->resetPasswordTest($user3); +r($result) && p('result') && e(0); // admin 用户存在,但密码长度不够,返回 false。 +r($result) && p('errors:password1') && e('密码须6位及以上。'); // admin 用户存在,但密码长度不够,提示错误信息。 + +$result = $userTest->resetPasswordTest($user4); +r($result) && p('result') && e(0); // admin 用户存在,但两次密码不相同,返回 false。 +r($result) && p('errors:password1') && e('两次密码应该相同。'); // admin 用户存在,但两次密码不相同,提示错误信息。 + +$result = $userTest->resetPasswordTest($user5); +r($result) && p('result') && e(1); // user1 用户存在,且密码符合要求,返回 true。 +r($result) && p('errors:0') && e('~~'); // user1 用户存在,且密码符合要求,不提示错误信息。 +r($result) && p('errors:password1') && e('~~'); // user1 用户存在,且密码符合要求,不提示错误信息。 + +$resetUser = $userTest->getByIdTest($user5->account); +r($resetUser->password == $password) && p() && e(1); // user1 用户密码重置成功。 diff --git a/module/user/test/user.class.php b/module/user/test/user.class.php index db60292287..fcdbeb47d0 100755 --- a/module/user/test/user.class.php +++ b/module/user/test/user.class.php @@ -364,28 +364,24 @@ class userTest } /** + * 重置用户密码。 * Reset user password. * - * @param array $params + * @param object $user * @access public - * @return void + * @return array */ - public function resetPasswordTest($params = array()) + public function resetPasswordTest(object $user): array { - $_POST = $params; + $result = $this->objectModel->resetPassword($user); + $errors = dao::getError(); - $this->objectModel->resetPassword(); - unset($_POST); + foreach($errors as $key => $error) + { + if(is_array($error)) $errors[$key] = implode('', $error); + } - if(dao::isError()) - { - return dao::getError(); - } - else - { - $account = $params['account']; - return $this->objectModel->getByID($account, 'account'); - } + return array('result' => (int)$result, 'errors' => $errors); } /**