* Adjust user unit test `` to ~~.
This commit is contained in:
+11
-6
@@ -293,9 +293,9 @@ class userModel extends model
|
||||
* @param int $maxCount
|
||||
* @param int $userCount
|
||||
* @access public
|
||||
* @return void
|
||||
* @return bool
|
||||
*/
|
||||
public function processMoreLink(string $params, string|array $usersToAppended, int $maxCount, int $userCount): void
|
||||
public function processMoreLink(string $params, string|array $usersToAppended, int $maxCount, int $userCount): bool
|
||||
{
|
||||
unset($this->config->user->moreLink);
|
||||
if($maxCount && $maxCount == $userCount)
|
||||
@@ -306,6 +306,8 @@ class userModel extends model
|
||||
$moreLink = helper::createLink('user', 'ajaxGetMore');
|
||||
$this->config->user->moreLink = $moreLink . (strpos($moreLink, '?') === false ? '?' : '&') . "params=" . base64_encode($moreLinkParams);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1200,13 +1202,14 @@ class userModel extends model
|
||||
*
|
||||
* @param object $user
|
||||
* @access public
|
||||
* @return void
|
||||
* @return bool
|
||||
*/
|
||||
public function keepLogin(object $user): void
|
||||
public function keepLogin(object $user): bool
|
||||
{
|
||||
helper::setcookie('keepLogin', 'on');
|
||||
helper::setcookie('za', $user->account);
|
||||
helper::setcookie('zp', sha1($user->account . $user->password . $this->server->request_time));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2883,15 +2886,17 @@ class userModel extends model
|
||||
* Set the first super admin as current user.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @return bool
|
||||
*/
|
||||
public function su()
|
||||
public function su(): bool
|
||||
{
|
||||
$company = $this->dao->select('admins')->from(TABLE_COMPANY)->fetch();
|
||||
$admins = explode(',', trim($company->admins, ','));
|
||||
if(empty($admins[0])) helper::end('No admin users.');
|
||||
|
||||
$this->app->user = $this->getById($admins[0]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -51,6 +51,8 @@ $verifyPassword = md5(md5('123456') . $random);
|
||||
|
||||
$userTest = new userTest();
|
||||
|
||||
$config->safe = new stdclass();
|
||||
$config->safe->mode = 0;
|
||||
$result = $userTest->checkBeforeBatchCreateTest($users1, '');
|
||||
r($result) && p('result') && e(0); // 检查未通过,返回 false。
|
||||
r($result) && p('errors:account[0]') && e('『用户名』只能是字母、数字或下划线的组合三位以上。'); // 用户名不符合规则错误提示。
|
||||
@@ -67,40 +69,39 @@ r($result) && p('errors:mobile[4]') && e('『手机』应当为合法的手
|
||||
r($result) && p('errors:verifyPassword') && e('验证失败,请检查您的系统登录密码是否正确'); // 验证密码错误提示。
|
||||
|
||||
/* 未设置密码安全属性。*/
|
||||
$config->safe = new stdclass();
|
||||
$result = $userTest->checkBeforeBatchCreateTest($users2, $verifyPassword);
|
||||
r($result) && p('result') && e(1); // 未设置密码安全属性,返回 false。
|
||||
r($result) && p('errors:password[0]') && e('``'); // 未设置密码安全属性,密码只包含数字,无错误提示。
|
||||
r($result) && p('errors:password[1]') && e('``'); // 未设置密码安全属性,密码包含大小写字母和数字,无错误提示。
|
||||
r($result) && p('errors:password[2]') && e('``'); // 未设置密码安全属性,密码包含大小写字母、数字和特殊字符,无错误提示。
|
||||
r($result) && p('errors:password[0]') && e('~~'); // 未设置密码安全属性,密码只包含数字,无错误提示。
|
||||
r($result) && p('errors:password[1]') && e('~~'); // 未设置密码安全属性,密码包含大小写字母和数字,无错误提示。
|
||||
r($result) && p('errors:password[2]') && e('~~'); // 未设置密码安全属性,密码包含大小写字母、数字和特殊字符,无错误提示。
|
||||
|
||||
/* 密码安全属性设为小于不检查的自定义数字。*/
|
||||
$config->safe->mode = -1;
|
||||
$result = $userTest->checkBeforeBatchCreateTest($users2, $verifyPassword);
|
||||
r($result) && p('errors:password[0]') && e('``'); // 密码安全属性设为小于不检查的自定义数字,密码只包含数字,无错误提示。
|
||||
r($result) && p('errors:password[1]') && e('``'); // 密码安全属性设为小于不检查的自定义数字,密码包含大小写字母和数字,无错误提示。
|
||||
r($result) && p('errors:password[2]') && e('``'); // 密码安全属性设为小于不检查的自定义数字,密码包含大小写字母、数字和特殊字符,无错误提示。
|
||||
r($result) && p('errors:password[0]') && e('~~'); // 密码安全属性设为小于不检查的自定义数字,密码只包含数字,无错误提示。
|
||||
r($result) && p('errors:password[1]') && e('~~'); // 密码安全属性设为小于不检查的自定义数字,密码包含大小写字母和数字,无错误提示。
|
||||
r($result) && p('errors:password[2]') && e('~~'); // 密码安全属性设为小于不检查的自定义数字,密码包含大小写字母、数字和特殊字符,无错误提示。
|
||||
|
||||
/* 密码安全属性设为不检查。*/
|
||||
$config->safe->mode = 0;
|
||||
$result = $userTest->checkBeforeBatchCreateTest($users2, $verifyPassword);
|
||||
r($result) && p('errors:password[0]') && e('``'); // 密码安全属性设为不检查,密码只包含数字,无错误提示。
|
||||
r($result) && p('errors:password[1]') && e('``'); // 密码安全属性设为不检查,密码包含大小写字母和数字,无错误提示。
|
||||
r($result) && p('errors:password[2]') && e('``'); // 密码安全属性设为不检查,密码包含大小写字母、数字和特殊字符,无错误提示。
|
||||
r($result) && p('errors:password[0]') && e('~~'); // 密码安全属性设为不检查,密码只包含数字,无错误提示。
|
||||
r($result) && p('errors:password[1]') && e('~~'); // 密码安全属性设为不检查,密码包含大小写字母和数字,无错误提示。
|
||||
r($result) && p('errors:password[2]') && e('~~'); // 密码安全属性设为不检查,密码包含大小写字母、数字和特殊字符,无错误提示。
|
||||
|
||||
/* 密码安全属性设为中。*/
|
||||
$config->safe->mode = 1;
|
||||
$result = $userTest->checkBeforeBatchCreateTest($users2, $verifyPassword);
|
||||
r($result) && p('errors:password[0]') && e('密码强度小于系统设定。'); // 密码安全属性设为中,密码只包含数字,密码强度小于系统设定,有错误提示。
|
||||
r($result) && p('errors:password[1]') && e('``'); // 密码安全属性设为中,密码包含大小写字母和数字,密码强度符合系统设定,无错误提示。
|
||||
r($result) && p('errors:password[2]') && e('``'); // 密码安全属性设为中,密码包含大小写字母、数字和特殊字符,密码强度符合系统设定,无错误提示。
|
||||
r($result) && p('errors:password[1]') && e('~~'); // 密码安全属性设为中,密码包含大小写字母和数字,密码强度符合系统设定,无错误提示。
|
||||
r($result) && p('errors:password[2]') && e('~~'); // 密码安全属性设为中,密码包含大小写字母、数字和特殊字符,密码强度符合系统设定,无错误提示。
|
||||
|
||||
/* 密码安全属性设为强。*/
|
||||
$config->safe->mode = 2;
|
||||
$result = $userTest->checkBeforeBatchCreateTest($users2, $verifyPassword);
|
||||
r($result) && p('errors:password[0]') && e('密码强度小于系统设定。'); // 密码安全属性设为强,密码只包含数字,密码强度小于系统设定,有错误提示。
|
||||
r($result) && p('errors:password[1]') && e('密码强度小于系统设定。'); // 密码安全属性设为强,密码包含大小写字母和数字,密码强度小于系统设定,有错误提示。
|
||||
r($result) && p('errors:password[2]') && e('``'); // 密码安全属性设为强,密码包含大小写字母、数字和特殊字符,密码强度符合系统设定,无错误提示。
|
||||
r($result) && p('errors:password[2]') && e('~~'); // 密码安全属性设为强,密码包含大小写字母、数字和特殊字符,密码强度符合系统设定,无错误提示。
|
||||
|
||||
/* 密码安全属性设为大于强的自定义数字。*/
|
||||
$config->safe->mode = 3;
|
||||
@@ -115,22 +116,22 @@ $config->safe->mode = 0; // 密码安全属性设为不检查,防止影响后
|
||||
unset($config->safe->changeWeak);
|
||||
$result = $userTest->checkBeforeBatchCreateTest($users3, $verifyPassword);
|
||||
r($result) && p('result') && e(1); // 未设置修改弱口令密码属性,返回 false。
|
||||
r($result) && p('errors:password[0]') && e('``'); // 未设置修改弱口令密码属性,无错误提示。
|
||||
r($result) && p('errors:password[1]') && e('``'); // 未设置修改弱口令密码属性,无错误提示。
|
||||
r($result) && p('errors:password[0]') && e('~~'); // 未设置修改弱口令密码属性,无错误提示。
|
||||
r($result) && p('errors:password[1]') && e('~~'); // 未设置修改弱口令密码属性,无错误提示。
|
||||
|
||||
/* 修改弱口令密码属性设为不强制。*/
|
||||
$config->safe->changeWeak = 0;
|
||||
$result = $userTest->checkBeforeBatchCreateTest($users3, $verifyPassword);
|
||||
r($result) && p('result') && e(1); // 修改弱口令密码属性设为不强制,返回 false。
|
||||
r($result) && p('errors:password[0]') && e('``'); // 修改弱口令密码属性设为不强制,无错误提示。
|
||||
r($result) && p('errors:password[1]') && e('``'); // 修改弱口令密码属性设为不强制,无错误提示。
|
||||
r($result) && p('errors:password[0]') && e('~~'); // 修改弱口令密码属性设为不强制,无错误提示。
|
||||
r($result) && p('errors:password[1]') && e('~~'); // 修改弱口令密码属性设为不强制,无错误提示。
|
||||
|
||||
/* 修改弱口令密码属性设为必须修改,使用系统内置常用弱口令检查。*/
|
||||
$config->safe->changeWeak = 1;
|
||||
$result = $userTest->checkBeforeBatchCreateTest($users3, $verifyPassword);
|
||||
r($result) && p('result') && e(0); // 修改弱口令密码属性设为必须修改,使用系统内置常用弱口令检查,返回 false。
|
||||
r($result) && p('errors:password[0]', '|') && e('密码不能使用【123456,password,12345,12345678,qwerty,123456789,1234,1234567,abc123,111111,123123】这些常用弱口令。'); // 修改弱口令密码属性设为必须修改,使用系统内置常用弱口令检查,有错误提示。
|
||||
r($result) && p('errors:password[1]') && e('``'); // 修改弱口令密码属性设为必须修改,使用系统内置常用弱口令检查,无错误提示。
|
||||
r($result) && p('errors:password[1]') && e('~~'); // 修改弱口令密码属性设为必须修改,使用系统内置常用弱口令检查,无错误提示。
|
||||
|
||||
/* 修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查。*/
|
||||
$config->safe->changeWeak = 1;
|
||||
@@ -138,7 +139,7 @@ zdTable('config')->config('config')->gen(1); // 生成自定义常用弱口令
|
||||
$tester->loadConfigFromDB(); // 加载自定义常用弱口令。
|
||||
$result = $userTest->checkBeforeBatchCreateTest($users3, $verifyPassword);
|
||||
r($result) && p('result') && e(0); // 修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,返回 false。
|
||||
r($result) && p('errors:password[0]') && e('``'); // 修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,无错误提示。
|
||||
r($result) && p('errors:password[0]') && e('~~'); // 修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,无错误提示。
|
||||
r($result) && p('errors:password[1]', '|') && e('密码不能使用【password,12345,12345678,qwerty,123456789,1234,1234567,abc123,111111,123123,1234567890】这些常用弱口令。'); // 修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,有错误提示。
|
||||
|
||||
/* 密码安全属性设为强,修改弱口令密码属性设为必须修改,符合所有检查项的用户。*/
|
||||
@@ -146,11 +147,11 @@ $config->safe->mode = 2;
|
||||
$config->safe->changeWeak = 1;
|
||||
$result = $userTest->checkBeforeBatchCreateTest($users4, $verifyPassword);
|
||||
r($result) && p('result') && e(1); // 检查通过,返回 true。
|
||||
r($result) && p('errors:account[0]') && e('``'); // 用户名无错误提示。
|
||||
r($result) && p('errors:realname[0]') && e('``'); // 姓名无错误提示。
|
||||
r($result) && p('errors:visions[0][]') && e('``'); // 界面类型无错误提示。
|
||||
r($result) && p('errors:password[0]') && e('``'); // 密码无错误提示。
|
||||
r($result) && p('errors:email[0]') && e('``'); // 邮箱无错误提示。
|
||||
r($result) && p('errors:phone[0]') && e('``'); // 电话无错误提示。
|
||||
r($result) && p('errors:mobile[0]') && e('``'); // 手机无错误提示。
|
||||
r($result) && p('errors:verifyPassword') && e('``'); // 验证密码无错误提示。
|
||||
r($result) && p('errors:account[0]') && e('~~'); // 用户名无错误提示。
|
||||
r($result) && p('errors:realname[0]') && e('~~'); // 姓名无错误提示。
|
||||
r($result) && p('errors:visions[0][]') && e('~~'); // 界面类型无错误提示。
|
||||
r($result) && p('errors:password[0]') && e('~~'); // 密码无错误提示。
|
||||
r($result) && p('errors:email[0]') && e('~~'); // 邮箱无错误提示。
|
||||
r($result) && p('errors:phone[0]') && e('~~'); // 电话无错误提示。
|
||||
r($result) && p('errors:mobile[0]') && e('~~'); // 手机无错误提示。
|
||||
r($result) && p('errors:verifyPassword') && e('~~'); // 验证密码无错误提示。
|
||||
|
||||
@@ -42,27 +42,27 @@ $result = $userTest->checkBeforeBatchUpdateTest($users1, '');
|
||||
r($result) && p('result') && e(0); // 检查未通过,返回 false。
|
||||
r($result) && p('errors:realname[0]') && e('『姓名』不能为空。'); // 姓名为空错误提示。
|
||||
r($result) && p('errors:visions[0][]') && e('『界面类型』不能为空。'); // 界面类型为空错误提示。
|
||||
r($result) && p('errors:email[0]') && e('``'); // 邮箱无错误提示。
|
||||
r($result) && p('errors:phone[0]') && e('``'); // 电话无错误提示。
|
||||
r($result) && p('errors:mobile[0]') && e('``'); // 手机无错误提示。
|
||||
r($result) && p('errors:email[0]') && e('~~'); // 邮箱无错误提示。
|
||||
r($result) && p('errors:phone[0]') && e('~~'); // 电话无错误提示。
|
||||
r($result) && p('errors:mobile[0]') && e('~~'); // 手机无错误提示。
|
||||
r($result) && p('errors:verifyPassword') && e('验证失败,请检查您的系统登录密码是否正确'); // 验证密码错误提示。
|
||||
|
||||
/* 联系方式不符合格式的用户。*/
|
||||
$result = $userTest->checkBeforeBatchUpdateTest($users2, $verifyPassword);
|
||||
r($result) && p('result') && e(0); // 检查未通过,返回 false。
|
||||
r($result) && p('errors:realname[0]') && e('``'); // 姓名无错误提示。
|
||||
r($result) && p('errors:visions[0][]') && e('``'); // 界面类型无错误提示。
|
||||
r($result) && p('errors:realname[0]') && e('~~'); // 姓名无错误提示。
|
||||
r($result) && p('errors:visions[0][]') && e('~~'); // 界面类型无错误提示。
|
||||
r($result) && p('errors:email[0]') && e('『邮箱』应当为合法的EMAIL。'); // 邮箱格式错误提示。
|
||||
r($result) && p('errors:phone[0]') && e('『电话』应当为合法的电话号码。'); // 电话格式错误提示。
|
||||
r($result) && p('errors:mobile[0]') && e('『手机』应当为合法的手机号码。'); // 手机格式错误提示。
|
||||
r($result) && p('errors:verifyPassword') && e('``'); // 验证密码无错误提示。
|
||||
r($result) && p('errors:verifyPassword') && e('~~'); // 验证密码无错误提示。
|
||||
|
||||
/* 符合所有检查项的用户。*/
|
||||
$result = $userTest->checkBeforeBatchUpdateTest($users3, $verifyPassword);
|
||||
r($result) && p('result') && e(1); // 检查通过,返回 true。
|
||||
r($result) && p('errors:realname[0]') && e('``'); // 姓名无错误提示。
|
||||
r($result) && p('errors:visions[0][]') && e('``'); // 界面类型无错误提示。
|
||||
r($result) && p('errors:email[0]') && e('``'); // 邮箱无错误提示。
|
||||
r($result) && p('errors:phone[0]') && e('``'); // 电话无错误提示。
|
||||
r($result) && p('errors:mobile[0]') && e('``'); // 手机无错误提示。
|
||||
r($result) && p('errors:verifyPassword') && e('``'); // 验证密码无错误提示。
|
||||
r($result) && p('errors:realname[0]') && e('~~'); // 姓名无错误提示。
|
||||
r($result) && p('errors:visions[0][]') && e('~~'); // 界面类型无错误提示。
|
||||
r($result) && p('errors:email[0]') && e('~~'); // 邮箱无错误提示。
|
||||
r($result) && p('errors:phone[0]') && e('~~'); // 电话无错误提示。
|
||||
r($result) && p('errors:mobile[0]') && e('~~'); // 手机无错误提示。
|
||||
r($result) && p('errors:verifyPassword') && e('~~'); // 验证密码无错误提示。
|
||||
|
||||
@@ -22,27 +22,27 @@ $config->safe->modifyPasswordFirstLogin = 0;
|
||||
$config->safe->changeWeak = 0;
|
||||
$config->safe->mode = 0;
|
||||
|
||||
r($userTest->checkNeedModifyPasswordTest($user1, 0)) && p('modifyPassword,modifyPasswordReason') && e('``,``'); // 首次登录修改密码功能关闭,首次登录无需修改密码。
|
||||
r($userTest->checkNeedModifyPasswordTest(clone($user1), 0)) && p('account,modifyPassword,modifyPasswordReason') && e('user1,~~,~~'); // 首次登录修改密码功能关闭,首次登录无需修改密码。
|
||||
|
||||
$config->safe->modifyPasswordFirstLogin = 1;
|
||||
r($userTest->checkNeedModifyPasswordTest($user1, 0)) && p('modifyPassword,modifyPasswordReason') && e('1,modifyPasswordFirstLogin'); // 首次登录修改密码功能开启,首次登录需要修改密码。
|
||||
r($userTest->checkNeedModifyPasswordTest($user2, 0)) && p('modifyPassword,modifyPasswordReason') && e('``,``'); // 首次登录修改密码功能开启,非首次登录无需修改密码。
|
||||
r($userTest->checkNeedModifyPasswordTest(clone($user1), 0)) && p('modifyPassword,modifyPasswordReason') && e('1,modifyPasswordFirstLogin'); // 首次登录修改密码功能开启,首次登录需要修改密码。
|
||||
r($userTest->checkNeedModifyPasswordTest(clone($user2), 0)) && p('modifyPassword,modifyPasswordReason') && e('~~,~~'); // 首次登录修改密码功能开启,非首次登录无需修改密码。
|
||||
|
||||
r($userTest->checkNeedModifyPasswordTest($user3, 0)) && p('modifyPassword,modifyPasswordReason') && e('``,``'); // 修改弱密码功能关闭,弱密码无需修改密码。
|
||||
r($userTest->checkNeedModifyPasswordTest(clone($user3), 0)) && p('modifyPassword,modifyPasswordReason') && e('~~,~~'); // 修改弱密码功能关闭,弱密码无需修改密码。
|
||||
|
||||
unset($config->safe->weak); // 重置弱密码设置,防止数据库中的设置影响单元测试。
|
||||
$config->safe->changeWeak = 1;
|
||||
r($userTest->checkNeedModifyPasswordTest($user3, 0)) && p('modifyPassword,modifyPasswordReason') && e('1,weak'); // 修改弱密码功能开启,弱密码需要修改密码。
|
||||
r($userTest->checkNeedModifyPasswordTest($user4, 0)) && p('modifyPassword,modifyPasswordReason') && e('``,``'); // 修改弱密码功能开启,强密码无需修改密码。
|
||||
r($userTest->checkNeedModifyPasswordTest(clone($user3), 0)) && p('modifyPassword,modifyPasswordReason') && e('1,weak'); // 修改弱密码功能开启,弱密码需要修改密码。
|
||||
r($userTest->checkNeedModifyPasswordTest(clone($user4), 0)) && p('modifyPassword,modifyPasswordReason') && e('~~,~~'); // 修改弱密码功能开启,强密码无需修改密码。
|
||||
|
||||
$config->safe->mode = 1;
|
||||
$app->setModuleName('index');
|
||||
$app->setMethodName('index');
|
||||
r($userTest->checkNeedModifyPasswordTest($user4, 0)) && p('modifyPassword,modifyPasswordReason') && e('``,``'); // 密码强度检查功能设为 1,密码强度为 0,模块为 index,方法为 index,无需修改密码。
|
||||
r($userTest->checkNeedModifyPasswordTest(clone($user4), 0)) && p('modifyPassword,modifyPasswordReason') && e('~~,~~'); // 密码强度检查功能设为 1,密码强度为 0,模块为 index,方法为 index,无需修改密码。
|
||||
|
||||
$app->setModuleName('user');
|
||||
r($userTest->checkNeedModifyPasswordTest($user4, 0)) && p('modifyPassword,modifyPasswordReason') && e('``,``'); // 密码强度检查功能设为 1,密码强度为 0,模块为 user,方法为 index,无需修改密码。
|
||||
r($userTest->checkNeedModifyPasswordTest(clone($user4), 0)) && p('modifyPassword,modifyPasswordReason') && e('~~,~~'); // 密码强度检查功能设为 1,密码强度为 0,模块为 user,方法为 index,无需修改密码。
|
||||
|
||||
$app->setMethodName('login');
|
||||
r($userTest->checkNeedModifyPasswordTest($user4, 0)) && p('modifyPassword,modifyPasswordReason') && e('1,passwordStrengthWeak'); // 密码强度检查功能设为 1,密码强度为 0,模块为 user,方法为 login,需要修改密码。
|
||||
r($userTest->checkNeedModifyPasswordTest($user4, 1)) && p('modifyPassword,modifyPasswordReason') && e('``,``'); // 密码强度检查功能设为 1,密码强度为 1,模块为 user,方法为 login,无需修改密码。
|
||||
r($userTest->checkNeedModifyPasswordTest(clone($user4), 0)) && p('modifyPassword,modifyPasswordReason') && e('1,passwordStrengthWeak'); // 密码强度检查功能设为 1,密码强度为 0,模块为 user,方法为 login,需要修改密码。
|
||||
r($userTest->checkNeedModifyPasswordTest(clone($user4), 1)) && p('modifyPassword,modifyPasswordReason') && e('~~,~~'); // 密码强度检查功能设为 1,密码强度为 1,模块为 user,方法为 login,无需修改密码。
|
||||
|
||||
@@ -33,7 +33,7 @@ r($result) && p('errors:password1') && e('『密码』不能为空。'); // 密
|
||||
/* 密码为空,允许密码为空。*/
|
||||
$result = $userTest->checkPasswordTest($user1, true);
|
||||
r($result) && p('result') && e(1); // 密码为空,允许密码为空,返回 true。
|
||||
r($result) && p('errors:password1') && e('``'); // 密码为空,允许密码为空,无错误提示。
|
||||
r($result) && p('errors:password1') && e('~~'); // 密码为空,允许密码为空,无错误提示。
|
||||
|
||||
$config->safe = new stdclass();
|
||||
|
||||
@@ -82,14 +82,14 @@ $config->safe->mode = 0;
|
||||
unset($config->safe->changeWeak);
|
||||
$result = $userTest->checkPasswordTest($user4);
|
||||
r($result) && p('result') && e(1); // 密码不为空,两次密码相同,未设置修改弱口令密码属性,返回 true。
|
||||
r($result) && p('errors:password1') && e('``'); // 密码不为空,两次密码相同,未设置修改弱口令密码属性,无错误提示。
|
||||
r($result) && p('errors:password1') && e('~~'); // 密码不为空,两次密码相同,未设置修改弱口令密码属性,无错误提示。
|
||||
|
||||
/* 密码不为空,两次密码相同,修改弱口令密码属性设置为不强制。*/
|
||||
$config->safe->mode = 0;
|
||||
$config->safe->changeWeak = 0;
|
||||
$result = $userTest->checkPasswordTest($user4);
|
||||
r($result) && p('result') && e(1); // 密码不为空,两次密码相同,修改弱口令密码属性设为不强制,返回 true。
|
||||
r($result) && p('errors:password1') && e('``'); // 密码不为空,两次密码相同,修改弱口令密码属性设为不强制,无错误提示。
|
||||
r($result) && p('errors:password1') && e('~~'); // 密码不为空,两次密码相同,修改弱口令密码属性设为不强制,无错误提示。
|
||||
|
||||
/* 密码不为空,两次密码相同,密码为明文,修改弱口令密码属性设为必须修改,使用系统内置常用弱口令检查。*/
|
||||
$config->safe->mode = 0;
|
||||
@@ -99,7 +99,7 @@ r($result) && p('result') && e(0);
|
||||
r($result) && p('errors:password1', '|') && e('密码不能使用【123456,password,12345,12345678,qwerty,123456789,1234,1234567,abc123,111111,123123】这些常用弱口令。'); // 密码不为空,两次密码相同,密码为明文,修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,有错误提示。
|
||||
$result = $userTest->checkPasswordTest($user5);
|
||||
r($result) && p('result') && e(1); // 密码不为空,两次密码相同,密码为明文,修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,返回 true。
|
||||
r($result) && p('errors:password1', '|') && e('``'); // 密码不为空,两次密码相同,密码为明文,修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,无错误提示。
|
||||
r($result) && p('errors:password1', '|') && e('~~'); // 密码不为空,两次密码相同,密码为明文,修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,无错误提示。
|
||||
|
||||
/* 密码不为空,两次密码相同,密码为 md5 加密,修改弱口令密码属性设为必须修改,使用系统内置常用弱口令检查。*/
|
||||
$config->safe->mode = 0;
|
||||
@@ -109,7 +109,7 @@ r($result) && p('result') && e(0);
|
||||
r($result) && p('errors:password1', '|') && e('密码不能使用【123456,password,12345,12345678,qwerty,123456789,1234,1234567,abc123,111111,123123】这些常用弱口令。'); // 密码不为空,两次密码相同,密码为 md5 加密,修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,有错误提示。
|
||||
$result = $userTest->checkPasswordTest($user7);
|
||||
r($result) && p('result') && e(1); // 密码不为空,两次密码相同,密码为 md5 加密,修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,返回 true。
|
||||
r($result) && p('errors:password1', '|') && e('``'); // 密码不为空,两次密码相同,密码为 md5 加密,修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,无错误提示。
|
||||
r($result) && p('errors:password1', '|') && e('~~'); // 密码不为空,两次密码相同,密码为 md5 加密,修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,无错误提示。
|
||||
|
||||
zdTable('config')->config('config')->gen(1); // 生成自定义常用弱口令。
|
||||
$tester->loadConfigFromDB(); // 加载自定义常用弱口令。
|
||||
@@ -119,7 +119,7 @@ $config->safe->mode = 0;
|
||||
$config->safe->changeWeak = 1;
|
||||
$result = $userTest->checkPasswordTest($user4);
|
||||
r($result) && p('result') && e(1); // 密码不为空,两次密码相同,密码为明文,修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,返回 true。
|
||||
r($result) && p('errors:password1', '|') && e('``'); // 密码不为空,两次密码相同,密码为明文,修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,无错误提示。
|
||||
r($result) && p('errors:password1', '|') && e('~~'); // 密码不为空,两次密码相同,密码为明文,修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,无错误提示。
|
||||
$result = $userTest->checkPasswordTest($user5);
|
||||
r($result) && p('result') && e(0); // 密码不为空,两次密码相同,密码为明文,修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,返回 false。
|
||||
r($result) && p('errors:password1', '|') && e('密码不能使用【password,12345,12345678,qwerty,123456789,1234,1234567,abc123,111111,123123,1234567890】这些常用弱口令。'); // 密码不为空,两次密码相同,密码为明文,修改弱口令密码属性设为必须修改,使用自定义常用弱口令检查,有错误提示。
|
||||
@@ -129,7 +129,7 @@ $config->safe->mode = 0;
|
||||
$config->safe->changeWeak = 1;
|
||||
$result = $userTest->checkPasswordTest($user6);
|
||||
r($result) && p('result') && e(1); // 密码不为空,两次密码相同,密码为 md5 加密,修改弱口令密码属性设为必须修改,使用系统内置常用弱口令检查,返回 true。
|
||||
r($result) && p('errors:password1', '|') && e('``'); // 密码不为空,两次密码相同,密码为 md5 加密,修改弱口令密码属性设为必须修改,使用系统内置常用弱口令检查,无错误提示。
|
||||
r($result) && p('errors:password1', '|') && e('~~'); // 密码不为空,两次密码相同,密码为 md5 加密,修改弱口令密码属性设为必须修改,使用系统内置常用弱口令检查,无错误提示。
|
||||
$result = $userTest->checkPasswordTest($user7);
|
||||
r($result) && p('result') && e(0); // 密码不为空,两次密码相同,密码为 md5 加密,修改弱口令密码属性设为必须修改,使用系统内置常用弱口令检查,返回 false。
|
||||
r($result) && p('errors:password1', '|') && e('密码不能使用【password,12345,12345678,qwerty,123456789,1234,1234567,abc123,111111,123123,1234567890】这些常用弱口令。'); // 密码不为空,两次密码相同,密码为 md5 加密,修改弱口令密码属性设为必须修改,使用系统内置常用弱口令检查,有错误提示。
|
||||
|
||||
@@ -46,4 +46,4 @@ r($result7) && p('errors:verifyPassword') && e('验证失败,请检查您的
|
||||
|
||||
$result8 = $userTest->checkVerifyPasswordTest(md5(md5('123456') . $random));
|
||||
r($result8) && p('result') && e(1); // 验证密码包含正确的密码和正确的随机数返回 true。
|
||||
r($result8) && p('errors:verifyPassword') && e('``'); // 验证密码包含正确的密码和正确的随机数提示信息。
|
||||
r($result8) && p('errors:verifyPassword') && e('~~'); // 验证密码包含正确的密码和正确的随机数提示信息。
|
||||
|
||||
@@ -27,8 +27,8 @@ $userTest->cleanLockedTest('admin'); // 清除 admin 用户的失败次数和锁
|
||||
$userTest->cleanLockedTest('user1'); // 清除 user1 用户的失败次数和锁定时间。
|
||||
|
||||
$users = $userTest->getListTest();
|
||||
r($users) && p('0:account,fails,locked') && e('admin,0,``'); // admin 用户的失败次数为 0,锁定时间为空。
|
||||
r($users) && p('1:account,fails,locked') && e('user1,0,``'); // user1 用户的失败次数为 0,锁定时间为空。
|
||||
r($users) && p('0:account,fails,locked') && e('admin,0,~~'); // admin 用户的失败次数为 0,锁定时间为空。
|
||||
r($users) && p('1:account,fails,locked') && e('user1,0,~~'); // user1 用户的失败次数为 0,锁定时间为空。
|
||||
|
||||
r(isset($_SESSION['loginFails'])) && p() && e(0); // session 中记录的失败次数为空。
|
||||
r(isset($_SESSION['admin.loginLocked'])) && p() && e(0); // session 中记录的 admin 用户锁定时间为空。
|
||||
|
||||
@@ -96,7 +96,7 @@ r($result) && p('errors:newCompany') && e('『所属公司』不能为空。');
|
||||
$user6->newCompany = 'newCompany';
|
||||
$result = $userTest->createTest($user6);
|
||||
r($result) && p('result') && e(2); // 创建外部公司,公司名称不为空,返回创建的用户 id。
|
||||
r($result) && p('errors:newCompany') && e('``'); // 创建外部公司,公司名称不为空,没有错误信息。
|
||||
r($result) && p('errors:newCompany') && e('~~'); // 创建外部公司,公司名称不为空,没有错误信息。
|
||||
|
||||
/* 检测必填项。*/
|
||||
$user7 = clone $template;
|
||||
@@ -162,7 +162,7 @@ $users13->account = 'user2';
|
||||
$users13->group = array(0, 1, 2);
|
||||
$result = $userTest->createTest($users13);
|
||||
r($result) && p('result') && e(3); // 创建用户成功,返回创建的用户 id。
|
||||
r($result) && p('errors:account') && e('``'); // 创建用户成功,没有错误信息。
|
||||
r($result) && p('errors:account') && e('~~'); // 创建用户成功,没有错误信息。
|
||||
|
||||
$groups = $tester->dao->select('*')->from(TABLE_USERGROUP)->fetchAll();
|
||||
r(count($groups)) && p() && e(2); // 生成用户权限组成功,返回 2 条记录。
|
||||
|
||||
@@ -26,31 +26,31 @@ $contact4 = (object)array('account' => 'user1', 'listName' => '联系人列表2'
|
||||
/* 测试必填项为空的情况。*/
|
||||
$result = $userTest->createContactListTest($contact1);
|
||||
r($result) && p('result') && e(0); // 列表名称和用户列表为空,返回 false。
|
||||
r($result) && p('errors:account') && e('``'); // 创建人无错误提示。
|
||||
r($result) && p('errors:account') && e('~~'); // 创建人无错误提示。
|
||||
r($result) && p('errors:listName') && e('『列表名称』不能为空。'); // 列表名称不能为空。
|
||||
r($result) && p('errors:userList') && e('『用户列表』不能为空。'); // 用户列表不能为空。
|
||||
r($result) && p('errors:public') && e('``'); // 公共联系人无错误提示。
|
||||
r($result) && p('errors:public') && e('~~'); // 公共联系人无错误提示。
|
||||
|
||||
/* 测试列表名称已存在的情况。*/
|
||||
$result = $userTest->createContactListTest($contact2);
|
||||
r($result) && p('result') && e(0); // 列表名称已存在,返回 false。
|
||||
r($result) && p('errors:account') && e('``'); // 创建人无错误提示。
|
||||
r($result) && p('errors:account') && e('~~'); // 创建人无错误提示。
|
||||
r($result) && p('errors:listName') && e('『列表名称』已经有『联系人列表1』这条记录了。如果您确定该记录已删除,请到后台-系统设置-回收站还原。'); // 列表名称已存在。
|
||||
r($result) && p('errors:userList') && e('``'); // 用户列表无错误提示。
|
||||
r($result) && p('errors:public') && e('``'); // 公共联系人无错误提示。
|
||||
r($result) && p('errors:userList') && e('~~'); // 用户列表无错误提示。
|
||||
r($result) && p('errors:public') && e('~~'); // 公共联系人无错误提示。
|
||||
|
||||
/* 测试数据格式不符合数据库字段设置的情况。*/
|
||||
$result = $userTest->createContactListTest($contact3);
|
||||
r($result) && p('result') && e(0); // 创建人和列表名称过长,返回 false。
|
||||
r($result) && p('errors:account') && e('『创建人』长度应当不超过『30』,且大于『0』。'); // 创建人过长。
|
||||
r($result) && p('errors:listName') && e('『列表名称』长度应当不超过『60』,且大于『0』。'); // 列表名称过长。
|
||||
r($result) && p('errors:userList') && e('``'); // 用户列表无错误提示。
|
||||
r($result) && p('errors:userList') && e('~~'); // 用户列表无错误提示。
|
||||
r($result) && p('errors:public') && e('『公共联系人』应当是数字。'); // 公共联系人应当是数字。
|
||||
|
||||
/* 测试创建成功的情况。*/
|
||||
$result = $userTest->createContactListTest($contact4);
|
||||
r($result) && p('result') && e(1); // 创建成功,返回 true。
|
||||
r($result) && p('errors:account') && e('``'); // 创建人无错误提示。
|
||||
r($result) && p('errors:listName') && e('``'); // 列表名称无错误提示。
|
||||
r($result) && p('errors:userList') && e('``'); // 用户列表无错误提示。
|
||||
r($result) && p('errors:public') && e('``'); // 公共联系人无错误提示。
|
||||
r($result) && p('errors:account') && e('~~'); // 创建人无错误提示。
|
||||
r($result) && p('errors:listName') && e('~~'); // 列表名称无错误提示。
|
||||
r($result) && p('errors:userList') && e('~~'); // 用户列表无错误提示。
|
||||
r($result) && p('errors:public') && e('~~'); // 公共联系人无错误提示。
|
||||
|
||||
@@ -40,14 +40,14 @@ r($userModel->failPlus($account3)) && p() && e(1); // 用户名合
|
||||
r($_SESSION['loginFails']) && p() && e(2); // 用户名合法且存在时,session 中失败次数为 2 。
|
||||
r(isset($_SESSION["{$account3}.loginLocked"])) && p() && e(0); // 用户名合法且存在时,session 中失败次数未达到最大失败次数限制,session 中该账号锁定时间为空 。
|
||||
$user = $userModel->dao->select('fails, locked')->from(TABLE_USER)->where('account')->eq($account3)->fetch();
|
||||
r($user) && p('fails, locked') && e('1,``'); // 用户名合法且存在时,$account3 账号未达到最大失败次数限制,数据库中失败次数为 1 ,账号未锁定。
|
||||
r($user) && p('fails, locked') && e('1,~~'); // 用户名合法且存在时,$account3 账号未达到最大失败次数限制,数据库中失败次数为 1 ,账号未锁定。
|
||||
|
||||
/* 第二次测试用户名合法且存在的情况,未达到最大失败次数限制。*/
|
||||
r($userModel->failPlus($account3)) && p() && e(2); // 用户名合法且存在时,第二次失败返回 2 。
|
||||
r($_SESSION['loginFails']) && p() && e(3); // 用户名合法且存在时,session 中失败次数为 3 。
|
||||
r($_SESSION["{$account3}.loginLocked"] == date('Y-m-d H:i:s')) && p() && e(1); // 用户名合法且存在时,session 中失败次数达到最大失败次数限制,session 中该账号锁定时间为当前时间 。
|
||||
$user = $userModel->dao->select('fails, locked')->from(TABLE_USER)->where('account')->eq($account3)->fetch();
|
||||
r($user) && p('fails, locked') && e('2,``'); // 用户名合法且存在时,$account3 账号未达到最大失败次数限制,数据库中失败次数为 2 ,账号未锁定。
|
||||
r($user) && p('fails, locked') && e('2,~~'); // 用户名合法且存在时,$account3 账号未达到最大失败次数限制,数据库中失败次数为 2 ,账号未锁定。
|
||||
|
||||
/* 第三次测试用户名合法且存在的情况,达到最大失败次数限制。*/
|
||||
r($userModel->failPlus($account3)) && p() && e(3); // 用户名合法且存在时,第三次失败返回 3 。
|
||||
|
||||
@@ -29,10 +29,10 @@ $users = $userTest->fetchExtraUsersTest(array('admin', 'user1'), 'id, account',
|
||||
r(count($users)) && p() && e(2); // usersToAppended 参数为数组,包含 2 个用户,指定查找 id 和 account 字段,返回 2 个用户。
|
||||
r($users) && p('0:id') && e(1); // 返回的第 1 个用户的 id 字段值为 1。
|
||||
r($users) && p('0:account') && e('admin'); // 返回的第 1 个用户的 account 字段值为 admin。
|
||||
r($users) && p('0:realname') && e('``'); // 返回的第 1 个用户没有 realname 字段。
|
||||
r($users) && p('0:realname') && e('~~'); // 返回的第 1 个用户没有 realname 字段。
|
||||
r($users) && p('1:id') && e(2); // 返回的第 2 个用户的 id 字段值为 2。
|
||||
r($users) && p('1:account') && e('user1'); // 返回的第 2 个用户的 account 字段值为 user1。
|
||||
r($users) && p('0:realname') && e('``'); // 返回的第 2 个用户没有 realname 字段。
|
||||
r($users) && p('0:realname') && e('~~'); // 返回的第 2 个用户没有 realname 字段。
|
||||
|
||||
$users = $userTest->fetchExtraUsersTest(array('admin', 'user1'), 'id, account', 'id');
|
||||
r(count($users)) && p() && e(2); // usersToAppended 参数为数组,包含 2 个用户,指定查找 id 和 account 字段,指定以 id 字段为键,返回 2 个用户。
|
||||
|
||||
@@ -12,7 +12,7 @@ zdTable('company')->gen(1);
|
||||
|
||||
$userTable = zdTable('user');
|
||||
$userTable->account->range('admin,user1,user2,user3,user4,user5,user6,user7,user8,user9');
|
||||
$userTable->realname->range('admin,user1,user2,user3,user4,user5,user6,user7,``{2}');
|
||||
$userTable->realname->range('admin,user1,user2,user3,user4,user5,user6,user7,~~{2}');
|
||||
$userTable->deleted->range('0{9},1');
|
||||
$userTable->gen(10);
|
||||
|
||||
@@ -33,11 +33,11 @@ $users = $userTest->getCanCreateStoryUsersTest();
|
||||
r(count($users)) && p() && e(4); // 有创建需求权限的用户数为 4。
|
||||
r($users) && p('admin') && e('A:admin'); // admin 用户是超级管理员,有创建需求权限。
|
||||
r($users) && p('user1') && e('U:user1'); // user1 用户在权限组 1 中,有创建需求权限。
|
||||
r($users) && p('user2') && e('``'); // user2 用户在权限组 2 和 3 中,没有创建需求权限。
|
||||
r($users) && p('user3') && e('``'); // user3 用户在权限组 3 中,没有创建需求权限。
|
||||
r($users) && p('user2') && e('~~'); // user2 用户在权限组 2 和 3 中,没有创建需求权限。
|
||||
r($users) && p('user3') && e('~~'); // user3 用户在权限组 3 中,没有创建需求权限。
|
||||
r($users) && p('user4') && e('U:user4'); // user4 用户在权限组 3 和 4 中,有创建需求权限。
|
||||
r($users) && p('user5') && e('U:user5'); // user5 用户在权限组 5 中,有创建需求权限。
|
||||
r($users) && p('user6') && e('``'); // user6 用户在权限组 6 中,没有创建需求权限。
|
||||
r($users) && p('user7') && e('``'); // user7 用户不在权限组中,没有创建需求权限。
|
||||
r($users) && p('user8') && e('``'); // user8 用户真实姓名为空,没有创建需求权限。
|
||||
r($users) && p('user9') && e('``'); // user9 用户被删除,没有创建需求权限。
|
||||
r($users) && p('user6') && e('~~'); // user6 用户在权限组 6 中,没有创建需求权限。
|
||||
r($users) && p('user7') && e('~~'); // user7 用户不在权限组中,没有创建需求权限。
|
||||
r($users) && p('user8') && e('~~'); // user8 用户真实姓名为空,没有创建需求权限。
|
||||
r($users) && p('user9') && e('~~'); // user9 用户被删除,没有创建需求权限。
|
||||
|
||||
@@ -61,8 +61,8 @@ $config->vision = 'rnd';
|
||||
$executions = $userTest->getExecutionsTest('admin');
|
||||
r(count($executions)) && p() && e(5); // 研发综合界面下 admin 用户参与的执行有 5 个。
|
||||
|
||||
r($executions) && p('6:status,delay,projectName,assignedToMeTasks') && e('wait,``,项目1,3'); // 执行 6 的状态为 wait,没有延期,项目名称为项目 1,指派给 admin 的任务数是 3。
|
||||
r($executions) && p('6:status,delay,projectName,assignedToMeTasks') && e('wait,~~,项目1,3'); // 执行 6 的状态为 wait,没有延期,项目名称为项目 1,指派给 admin 的任务数是 3。
|
||||
r($executions) && p('7:status,delay,projectName,assignedToMeTasks') && e('wait,1,项目2,2'); // 执行 7 的状态为 wait,延期 1 天,项目名称为项目 2,指派给 admin 的任务数是 2。
|
||||
r($executions) && p('8:status,delay,projectName,assignedToMeTasks') && e('doing,1,项目2,1'); // 执行 8 的状态为 doing,延期 1 天,项目名称为项目 2,指派给 admin 的任务数是 1。
|
||||
r($executions) && p('9:status,delay,projectName,assignedToMeTasks') && e('suspended,``,项目2,1'); // 执行 9 的状态为 suspended,没有延期,项目名称为项目 2,指派给 admin 的任务数是 1。
|
||||
r($executions) && p('10:status,delay,projectName,assignedToMeTasks') && e('closed,``,项目3,1'); // 执行 10 的状态为 closed,没有延期,项目名称为项目 3,指派给 admin 的任务数是 1。
|
||||
r($executions) && p('9:status,delay,projectName,assignedToMeTasks') && e('suspended,~~,项目2,1'); // 执行 9 的状态为 suspended,没有延期,项目名称为项目 2,指派给 admin 的任务数是 1。
|
||||
r($executions) && p('10:status,delay,projectName,assignedToMeTasks') && e('closed,~~,项目3,1'); // 执行 10 的状态为 closed,没有延期,项目名称为项目 3,指派给 admin 的任务数是 1。
|
||||
|
||||
@@ -31,18 +31,18 @@ $users = $userTest->getListByAccountsTest($accounts);
|
||||
r(count($users)) && p() && e(5); // 传入参数为非空数组,包含 5 个账号,返回数组包含 5 个用户。
|
||||
r($users) && p('1001:id,account') && e('1001,user1'); // 传入参数为非空数组,包含 5 个账号,返回数组键为 1001 的用户 id 是 1001,账号是 user1。
|
||||
r($users) && p('1005:id,account') && e('1005,user5'); // 传入参数为非空数组,包含 5 个账号,返回数组键为 1005 的用户 id 是 1005,账号是 user5。
|
||||
r($users) && p('user1') && e('``');
|
||||
r($users) && p('user1') && e('~~');
|
||||
|
||||
/* $keyField 参数设为 id 后查询。*/
|
||||
$users = $userTest->getListByAccountsTest($accounts, 'id');
|
||||
r(count($users)) && p() && e(5); // 传入参数为非空数组,包含 5 个账号,返回数组包含 5 个用户。
|
||||
r($users) && p('1001:id,account') && e('1001,user1'); // 传入参数为非空数组,包含 5 个账号,返回数组键为 1001 的用户 id 是 1001,账号是 user1。
|
||||
r($users) && p('1005:id,account') && e('1005,user5'); // 传入参数为非空数组,包含 5 个账号,返回数组键为 1005 的用户 id 是 1005,账号是 user5。
|
||||
r($users) && p('user1') && e('``');
|
||||
r($users) && p('user1') && e('~~');
|
||||
|
||||
/* $keyField 参数设为 account 后查询。*/
|
||||
$users = $userTest->getListByAccountsTest($accounts, 'account');
|
||||
r(count($users)) && p() && e(5); // 传入参数为非空数组,包含 5 个账号,返回数组包含 5 个用户。
|
||||
r($users) && p('user1:id,account') && e('1001,user1'); // 传入参数为非空数组,包含 5 个账号,返回数组键为 1001 的用户 id 是 1001,账号是 user1。
|
||||
r($users) && p('user5:id,account') && e('1005,user5'); // 传入参数为非空数组,包含 5 个账号,返回数组键为 1005 的用户 id 是 1005,账号是 user5。
|
||||
r($users) && p('1001') && e('``');
|
||||
r($users) && p('1001') && e('~~');
|
||||
|
||||
@@ -53,11 +53,11 @@ $config->vision = 'rnd';
|
||||
$projects = $userTest->getProjectsTest('admin');
|
||||
r(count($projects)) && p() && e(5); // 研发综合界面下 admin 用户参与的项目有 5 个。
|
||||
|
||||
r($projects) && p('1:status,delay,storyCount,executionCount') && e('wait,``,118,5'); // 项目 1 的状态为 wait,没有延期,需求规模总和为 118,执行数为 5。
|
||||
r($projects) && p('1:status,delay,storyCount,executionCount') && e('wait,~~,118,5'); // 项目 1 的状态为 wait,没有延期,需求规模总和为 118,执行数为 5。
|
||||
r($projects) && p('2:status,delay,storyCount,executionCount') && e('wait,1,122,5'); // 项目 2 的状态为 wait,延期 1 天,需求规模总和为 122,执行数为 5。
|
||||
r($projects) && p('3:status,delay,storyCount,executionCount') && e('doing,1,126,5'); // 项目 3 的状态为 doing,延期 1 天,需求规模总和为 126,执行数为 5。
|
||||
r($projects) && p('4:status,delay,storyCount,executionCount') && e('suspended,``,130,5'); // 项目 4 的状态为 suspended,没有延期,需求规模总和为 130,执行数为 5。
|
||||
r($projects) && p('5:status,delay,storyCount,executionCount') && e('closed,``,0,0'); // 项目 5 的状态为 closed,没有延期,需求规模总和为 0,执行数为 0。
|
||||
r($projects) && p('4:status,delay,storyCount,executionCount') && e('suspended,~~,130,5'); // 项目 4 的状态为 suspended,没有延期,需求规模总和为 130,执行数为 5。
|
||||
r($projects) && p('5:status,delay,storyCount,executionCount') && e('closed,~~,0,0'); // 项目 5 的状态为 closed,没有延期,需求规模总和为 0,执行数为 0。
|
||||
|
||||
$config->vision = 'lite';
|
||||
$projects = $userTest->getProjectsTest('admin');
|
||||
|
||||
@@ -34,7 +34,7 @@ r($users) && p('user6') && e('测试主管'); // user6 账号的角色
|
||||
r($users) && p('user7') && e('高层管理'); // user7 账号的角色是 高层管理。
|
||||
r($users) && p('user8') && e('其他'); // user8 账号的角色是 其他。
|
||||
r($users) && p('user9') && e('role'); // user9 账号的角色是 role。
|
||||
r($users) && p('user10') && e('``'); // user10 账号不存在。
|
||||
r($users) && p('user10') && e('~~'); // user10 账号不存在。
|
||||
|
||||
/* 参数为数组。*/
|
||||
$users = $userTest->getUserRolesTest(array('admin', 'user1', 'user2', 'user3', 'user4', 'user5', 'user6', 'user7', 'user8', 'user9'));
|
||||
@@ -49,7 +49,7 @@ r($users) && p('user6') && e('测试主管'); // user6 账号的角色
|
||||
r($users) && p('user7') && e('高层管理'); // user7 账号的角色是 高层管理。
|
||||
r($users) && p('user8') && e('其他'); // user8 账号的角色是 其他。
|
||||
r($users) && p('user9') && e('role'); // user9 账号的角色是 role。
|
||||
r($users) && p('user10') && e('``'); // user10 账号不存在。
|
||||
r($users) && p('user10') && e('~~'); // user10 账号不存在。
|
||||
|
||||
/* 参数为字符串。*/
|
||||
$users = $userTest->getUserRolesTest('admin, user1, user10');
|
||||
|
||||
@@ -53,7 +53,7 @@ r($tester->session->user) && p('account,admin') && e('admin,1'); // 登录成功
|
||||
|
||||
/* 检测 admin 用户锁定状态。*/
|
||||
$user2 = $userTest->getByIdTest($user2->account);
|
||||
r($user2) && p('account,fails,locked') && e('admin,0,``'); // 数据库中记录的 admin 用户登录失败次数为 0,锁定时间为空。
|
||||
r($user2) && p('account,fails,locked') && e('admin,0,~~'); // 数据库中记录的 admin 用户登录失败次数为 0,锁定时间为空。
|
||||
r($tester->session->loginFails) && p() && e(0); // session 中未记录登录失败次数。
|
||||
r($tester->session->{'admin.loginLocked'}) && p() && e(0); // session 中未记录 admin 用户锁定时间。
|
||||
|
||||
@@ -87,13 +87,13 @@ r($tester->cookie->zp) && p() && e('0'); // 未勾选保持登录状态
|
||||
* 检测 user1 用户登录后的信息。
|
||||
*/
|
||||
$result = $userTest->loginTest($user3, false, true); // 不记录日志,勾选保持登录状态。
|
||||
r($result) && p('account,admin') && e('user1,``'); // 登录成功,返回的用户是 user1,不是超级管理员。
|
||||
r($app->user) && p('account,admin') && e('user1,``'); // 登录成功,$app 对象的中的用户是 user1,不是超级管理员。
|
||||
r($tester->session->user) && p('account,admin') && e('user1,``'); // 登录成功,session 中的用户是 user1,不是超级管理员。
|
||||
r($result) && p('account,admin') && e('user1,~~'); // 登录成功,返回的用户是 user1,不是超级管理员。
|
||||
r($app->user) && p('account,admin') && e('user1,~~'); // 登录成功,$app 对象的中的用户是 user1,不是超级管理员。
|
||||
r($tester->session->user) && p('account,admin') && e('user1,~~'); // 登录成功,session 中的用户是 user1,不是超级管理员。
|
||||
|
||||
/* 检测 user1 用户锁定状态。*/
|
||||
$user3 = $userTest->getByIdTest($user3->account);
|
||||
r($user3) && p('account,fails,locked') && e('user1,0,``'); // 数据中记录的 user1 用户登录失败次数为 0,锁定时间为空。
|
||||
r($user3) && p('account,fails,locked') && e('user1,0,~~'); // 数据中记录的 user1 用户登录失败次数为 0,锁定时间为空。
|
||||
r($tester->session->loginFails) && p() && e(0); // session 中未记录登录失败次数。
|
||||
r($tester->session->{'user1.loginLocked'}) && p() && e(0); // session 中未记录 user1 用户锁定时间。
|
||||
|
||||
|
||||
@@ -16,13 +16,13 @@ $usersToAppend = array('user1', 'user2', 'user3');
|
||||
$userModel = $tester->loadModel('user');
|
||||
|
||||
$userModel->processMoreLink($params, $usersToAppend, 0, 0);
|
||||
r($config->user) && p('moreLink') && e('``'); // maxCount 参数为 0,更多链接为空。
|
||||
r($config->user) && p('batchCreate,moreLink') && e('10,~~'); // maxCount 参数为 0,更多链接为空。
|
||||
|
||||
$userModel->processMoreLink($params, $usersToAppend, 1, 2);
|
||||
r($config->user) && p('moreLink') && e('``'); // maxCount 参数不为 0 且小于 userCount 参数,更多链接为空。
|
||||
r($config->user) && p('moreLink') && e('~~'); // maxCount 参数不为 0 且小于 userCount 参数,更多链接为空。
|
||||
|
||||
$userModel->processMoreLink($params, $usersToAppend, 2, 1);
|
||||
r($config->user) && p('moreLink') && e('``'); // maxCount 参数不为 0 且大于 userCount 参数,更多链接为空。
|
||||
r($config->user) && p('moreLink') && e('~~'); // maxCount 参数不为 0 且大于 userCount 参数,更多链接为空。
|
||||
|
||||
$config->webRoot = '/';
|
||||
$config->requestType = 'GET';
|
||||
|
||||
@@ -43,8 +43,8 @@ r($result) && p('errors:password1') && e('两次密码应该相同。'); // admi
|
||||
|
||||
$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 用户存在,且密码符合要求,不提示错误信息。
|
||||
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 用户密码重置成功。
|
||||
|
||||
@@ -29,20 +29,20 @@ $template4 = (object)array('account' => 'admin', 'type' => 'story', 'title' => '
|
||||
/* 测试必填项为空的情况。*/
|
||||
$result = $userTest->saveUserTemplateTest($template1);
|
||||
r($result) && p('result') && e(0); // 模板名称和模板内容为空,返回 false。
|
||||
r($result) && p('errors:account') && e('``'); // 创建人无错误提示。
|
||||
r($result) && p('errors:type') && e('``'); // 模板类型无错误提示。
|
||||
r($result) && p('errors:account') && e('~~'); // 创建人无错误提示。
|
||||
r($result) && p('errors:type') && e('~~'); // 模板类型无错误提示。
|
||||
r($result) && p('errors:title') && e('『模板名称』不能为空。'); // 模板名称不能为空。
|
||||
r($result) && p('errors:content') && e('『模板内容』不能为空。'); // 模板内容不能为空。
|
||||
r($result) && p('errors:public') && e('``'); // 公共模板无错误提示。
|
||||
r($result) && p('errors:public') && e('~~'); // 公共模板无错误提示。
|
||||
|
||||
/* 测试模板名称已存在的情况。*/
|
||||
$result = $userTest->saveUserTemplateTest($template2);
|
||||
r($result) && p('result') && e(0); // 模板名称已存在,返回 false。
|
||||
r($result) && p('errors:account') && e('``'); // 创建人无错误提示。
|
||||
r($result) && p('errors:type') && e('``'); // 创建人无错误提示。
|
||||
r($result) && p('errors:account') && e('~~'); // 创建人无错误提示。
|
||||
r($result) && p('errors:type') && e('~~'); // 创建人无错误提示。
|
||||
r($result) && p('errors:title') && e('『模板名称』已经有『模板名称1』这条记录了。如果您确定该记录已删除,请到后台-系统设置-回收站还原。'); // 模板名称已存在。
|
||||
r($result) && p('errors:content') && e('``'); // 模板内容无错误提示。
|
||||
r($result) && p('errors:public') && e('``'); // 公共模板无错误提示。
|
||||
r($result) && p('errors:content') && e('~~'); // 模板内容无错误提示。
|
||||
r($result) && p('errors:public') && e('~~'); // 公共模板无错误提示。
|
||||
|
||||
/* 测试数据格式不符合数据库字段设置的情况。*/
|
||||
$result = $userTest->saveUserTemplateTest($template3);
|
||||
@@ -50,14 +50,14 @@ r($result) && p('result') && e(0);
|
||||
r($result) && p('errors:account') && e('『创建人』长度应当不超过『30』,且大于『0』。'); // 创建人过长。
|
||||
r($result) && p('errors:type') && e('『模板类型』长度应当不超过『30』,且大于『0』。'); // 模板类型过长。
|
||||
r($result) && p('errors:title') && e('『模板名称』长度应当不超过『150』,且大于『0』。'); // 模板名称过长。
|
||||
r($result) && p('errors:content') && e('``'); // 模板内容无错误提示。
|
||||
r($result) && p('errors:content') && e('~~'); // 模板内容无错误提示。
|
||||
r($result) && p('errors:public') && e('『公共模板』不符合格式,应当为:『/0|1/』。'); // 公共模板应当是数字。
|
||||
|
||||
/* 测试创建成功的情况。*/
|
||||
$result = $userTest->saveUserTemplateTest($template4);
|
||||
r($result) && p('result') && e(1); // 创建成功,返回 true。
|
||||
r($result) && p('errors:account') && e('``'); // 创建人无错误提示。
|
||||
r($result) && p('errors:type') && e('``'); // 模板类型无错误提示。
|
||||
r($result) && p('errors:title') && e('``'); // 模板名称无错误提示。
|
||||
r($result) && p('errors:content') && e('``'); // 模板内容无错误提示。
|
||||
r($result) && p('errors:public') && e('``'); // 公共模板无错误提示。
|
||||
r($result) && p('errors:account') && e('~~'); // 创建人无错误提示。
|
||||
r($result) && p('errors:type') && e('~~'); // 模板类型无错误提示。
|
||||
r($result) && p('errors:title') && e('~~'); // 模板名称无错误提示。
|
||||
r($result) && p('errors:content') && e('~~'); // 模板内容无错误提示。
|
||||
r($result) && p('errors:public') && e('~~'); // 公共模板无错误提示。
|
||||
|
||||
@@ -29,31 +29,31 @@ $contact4 = (object)array('id' => 1, 'account' => 'user1', 'listName' => '联系
|
||||
/* 测试必填项为空的情况。*/
|
||||
$result = $userTest->updateContactListTest($contact1);
|
||||
r($result) && p('result') && e(0); // 列表名称和用户列表为空,返回 false。
|
||||
r($result) && p('errors:account') && e('``'); // 创建人无错误提示。
|
||||
r($result) && p('errors:account') && e('~~'); // 创建人无错误提示。
|
||||
r($result) && p('errors:listName') && e('『列表名称』不能为空。'); // 列表名称不能为空。
|
||||
r($result) && p('errors:userList') && e('『用户列表』不能为空。'); // 用户列表不能为空。
|
||||
r($result) && p('errors:public') && e('``'); // 是否公开无错误提示。
|
||||
r($result) && p('errors:public') && e('~~'); // 是否公开无错误提示。
|
||||
|
||||
/* 测试列表名称已存在的情况。*/
|
||||
$result = $userTest->updateContactListTest($contact2);
|
||||
r($result) && p('result') && e(0); // 列表名称已存在,返回 false。
|
||||
r($result) && p('errors:account') && e('``'); // 创建人无错误提示。
|
||||
r($result) && p('errors:account') && e('~~'); // 创建人无错误提示。
|
||||
r($result) && p('errors:listName') && e('『列表名称』已经有『联系人列表2』这条记录了。如果您确定该记录已删除,请到后台-系统设置-回收站还原。'); // 列表名称已存在。
|
||||
r($result) && p('errors:userList') && e('``'); // 用户列表无错误提示。
|
||||
r($result) && p('errors:public') && e('``'); // 是否公开无错误提示。
|
||||
r($result) && p('errors:userList') && e('~~'); // 用户列表无错误提示。
|
||||
r($result) && p('errors:public') && e('~~'); // 是否公开无错误提示。
|
||||
|
||||
/* 测试数据格式不符合数据库字段设置的情况。*/
|
||||
$result = $userTest->updateContactListTest($contact3);
|
||||
r($result) && p('result') && e(0); // 创建人和列表名称过长,返回 false。
|
||||
r($result) && p('errors:account') && e('『创建人』长度应当不超过『30』,且大于『0』。'); // 创建人过长。
|
||||
r($result) && p('errors:listName') && e('『列表名称』长度应当不超过『60』,且大于『0』。'); // 列表名称过长。
|
||||
r($result) && p('errors:userList') && e('``'); // 用户列表无错误提示。
|
||||
r($result) && p('errors:userList') && e('~~'); // 用户列表无错误提示。
|
||||
r($result) && p('errors:public') && e('『公共联系人』应当是数字。'); // 是否公开应当是数字。
|
||||
|
||||
/* 测试创建成功的情况。*/
|
||||
$result = $userTest->updateContactListTest($contact4);
|
||||
r($result) && p('result') && e(1); // 创建成功,返回 true。
|
||||
r($result) && p('errors:account') && e('``'); // 创建人无错误提示。
|
||||
r($result) && p('errors:listName') && e('``'); // 列表名称无错误提示。
|
||||
r($result) && p('errors:userList') && e('``'); // 用户列表无错误提示。
|
||||
r($result) && p('errors:public') && e('``'); // 是否公开无错误提示。
|
||||
r($result) && p('errors:account') && e('~~'); // 创建人无错误提示。
|
||||
r($result) && p('errors:listName') && e('~~'); // 列表名称无错误提示。
|
||||
r($result) && p('errors:userList') && e('~~'); // 用户列表无错误提示。
|
||||
r($result) && p('errors:public') && e('~~'); // 是否公开无错误提示。
|
||||
|
||||
@@ -48,8 +48,8 @@ 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('``'); // 密码符合要求,不提示错误信息。
|
||||
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); // 数据库中的密码修改成功。
|
||||
|
||||
Reference in New Issue
Block a user