* userTest: refactor script to test the resetPassword method.

This commit is contained in:
liugang
2023-12-19 13:31:51 +08:00
parent d640adb59b
commit cf95e1d66d
2 changed files with 48 additions and 47 deletions
+37 -32
View File
@@ -1,44 +1,49 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/user.class.php';
su('admin');
zdTable('user')->gen(10);
/**
title=测试 userModel->resetPassword();
cid=1
pid=1
重设用户密码,返回重设后的加密后的密码 >> 367ef140036b0feb2f90d70d33255eea
两次密码不相同的情况 >> 两次密码应该相同。<br/>
密码强度小于系统设定 >> 密码必须6位及以上,且包含大小写字母、数字。<br/>
使用常见简单密码,给出错误提示 >> 密码不能使用【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 用户密码重置成功。
+11 -15
View File
@@ -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);
}
/**