diff --git a/module/user/test/model/updatepassword.php b/module/user/test/model/updatepassword.php index 143f142ef6..d555851b36 100755 --- a/module/user/test/model/updatepassword.php +++ b/module/user/test/model/updatepassword.php @@ -1,36 +1,61 @@ #!/usr/bin/env php gen(10); - /** - title=测试 userModel->updatePassword(); cid=1 pid=1 - -编辑用户密码,返回编辑后的密码 >> dcf859ce8dd8f998bdfe4ae6c22c329e -两次密码不相同的情况 >> 两次密码应该相同。
-密码小于设定强度的情况 >> 密码必须6位及以上,且包含大小写字母、数字。
- */ +include dirname(__FILE__, 5) . '/test/lib/init.php'; +include dirname(__FILE__, 2) . '/user.class.php'; -$user = new userTest(); -$normalUser = array(); -$normalUser['originalPassword'] = 'bac0bbaaf7192f219bebd5387e88c5d7'; -$normalUser['password1'] = 'dcf859ce8dd8f998bdfe4ae6c22c329e'; -$normalUser['password2'] = 'dcf859ce8dd8f998bdfe4ae6c22c329e'; -$normalUser['passwordStrength'] = 1; +zdTable('user')->gen(1); -$weakPassword = $normalUser; -$weakPassword['passwordStrength'] = 0; +su('admin'); -$differentPassword = $normalUser; -$differentPassword['password2'] = 'asdasfasf!@#!@#asfasf'; +global $app; -r($user->updatePasswordTest(10, $normalUser)) && p('password') && e('dcf859ce8dd8f998bdfe4ae6c22c329e'); //编辑用户密码,返回编辑后的密码 -r($user->updatePasswordTest(10, $differentPassword)) && p('password1:0') && e('两次密码应该相同。'); //两次密码不相同的情况 -r($user->updatePasswordTest(10, $weakPassword)) && p('password1:0') && e('密码必须6位及以上,且包含大小写字母、数字。'); //密码小于设定强度的情况 +$userTest = new userTest(); + +/* 安全配置相关功能在 checkPassword 单元测试用例中有详细测试,此处重置为默认值以减少对当前用例的影响。*/ +unset($config->safe->mode); +unset($config->safe->weak); + +$random = updateSessionRandom(); +$password = md5(654321); +$original = md5($app->user->password . $random); + +$user1 = (object)array('originalPassword' => $original, 'password' => $password, 'password1' => '', 'password2' => $password, 'passwordStrength' => 0, 'passwordLength' => 6); +$user2 = (object)array('originalPassword' => $original, 'password' => $password, 'password1' => $password, 'password2' => $password, 'passwordStrength' => 0, 'passwordLength' => 5); +$user3 = (object)array('originalPassword' => $original, 'password' => $password, 'password1' => $password, 'password2' => '', 'passwordStrength' => 0, 'passwordLength' => 6); +$user4 = (object)array('originalPassword' => '', 'password' => $password, 'password1' => $password, 'password2' => $password, 'passwordStrength' => 0, 'passwordLength' => 6); +$user5 = (object)array('originalPassword' => $original, 'password' => $password, 'password1' => $password, 'password2' => $password, 'passwordStrength' => 0, 'passwordLength' => 6); + +$result = $userTest->updatePasswordTest($user1); +r($result) && p('result') && e(0); // 密码为空,返回 false。 +r($result) && p('errors:password1') && e('『密码』不能为空。'); // 密码为空,提示错误信息。 + +$result = $userTest->updatePasswordTest($user2); +r($result) && p('result') && e(0); // 密码长度不够,返回 false。 +r($result) && p('errors:password1') && e('密码须6位及以上。'); // 密码长度不够,提示错误信息。 + +$result = $userTest->updatePasswordTest($user3); +r($result) && p('result') && e(0); // 两次密码不相同,返回 false。 +r($result) && p('errors:password1') && e('两次密码应该相同。'); // 两次密码不相同,提示错误信息。 + +$result = $userTest->updatePasswordTest($user4); +r($result) && p('result') && e(0); // 原密码不正确,返回 false。 +r($result) && p('errors:originalPassword') && e('原密码不正确'); // 原密码不正确,提示错误信息。 + +$result = $userTest->updatePasswordTest($user5); +r($result) && p('result') && e(1); // 密码符合要求,返回 true。 +r($result) && p('errors:0') && e('~~'); // 密码符合要求,不提示错误信息。 +r($result) && p('errors:password1') && e('~~'); // 密码符合要求,不提示错误信息。 + +$resetUser = $userTest->getByIdTest($app->user->account); +r($resetUser->password == $password) && p() && e(1); // 数据库中的密码修改成功。 + +r($app->user->password == $password) && p() && e(1); // app 中的密码修改成功。 +r($app->user->modifyPassword) && p() && e(0); // app 中的是否强制修改免密重置为 false。 +r($app->user->modifyPasswordReason) && p() && e(0); // app 中的强制修改密码原因重置为空。 + +r($_SESSION['user']->password == $password) && p() && e(1); // session 中的密码修改成功。 diff --git a/module/user/test/user.class.php b/module/user/test/user.class.php index fcdbeb47d0..60d41b9c4d 100755 --- a/module/user/test/user.class.php +++ b/module/user/test/user.class.php @@ -339,28 +339,24 @@ class userTest } /** - * Test edit a user password. + * 测试更新当前用户的密码。 + * Test update password of current user. * - * @param int $userID - * @param array $params + * @param object $user * @access public - * @return void + * @return array */ - public function updatePasswordTest($userID, $params = array()) + public function updatePasswordTest(object $user): array { - $_POST = $params; + $result = $this->objectModel->updatePassword($user); + $errors = dao::getError(); - $this->objectModel->updatePassword($userID); - unset($_POST); + foreach($errors as $key => $error) + { + if(is_array($error)) $errors[$key] = implode('', $error); + } - if(dao::isError()) - { - return dao::getError(); - } - else - { - return $this->objectModel->getByID($userID, 'id'); - } + return array('result' => (int)$result, 'errors' => $errors); } /**