* Adjust sso unit test.

This commit is contained in:
wangyidong
2023-12-22 16:52:26 +08:00
parent 8e36c47fa5
commit 7ba8205889
9 changed files with 240 additions and 61 deletions
+6 -3
View File
@@ -26,8 +26,11 @@ class ssoTao extends ssoModel
return false;
}
$password = md5($data->bindPassword);
$user = $this->dao->select('*')->from(TABLE_USER)->where('account')->eq($data->bindUser)->andWhere('password')->eq($password)->andWhere('deleted')->eq('0')->fetch();
$user = $this->dao->select('*')->from(TABLE_USER)
->where('account')->eq($data->bindUser)
->andWhere('password')->eq(md5($data->bindPassword))
->andWhere('deleted')->eq('0')
->fetch();
if(empty($user))
{
dao::$errors[] = $this->lang->sso->bindNoUser;
@@ -49,7 +52,7 @@ class ssoTao extends ssoModel
*/
protected function addZTUser(object $data): object|false
{
if(!$this->loadModel('user')->checkPassword()) return false;
if(!$this->loadModel('user')->checkPassword($data)) return false;
$user = $this->dao->select('*')->from(TABLE_USER)->where('account')->eq($data->account)->fetch();
if($user)
{
+58
View File
@@ -0,0 +1,58 @@
#!/usr/bin/env php
<?php
/**
title=ssoModel->bind();
cid=0
- 绑定关联ranzhi账号。
- 属性account @admin
- 属性ranzhi @ranzhi1
- 添加关联ranzhi账号。
- 属性account @user10
- 属性ranzhi @ranzhi2
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
$user = zdTable('user');
$user->password->range('e10adc3949ba59abbe56e057f20f883e');
$user->gen(5);
global $tester;
$ssoModel = $tester->loadModel('sso');
$_POST = array();
$_POST['bindUser'] = 'admin';
$_POST['bindPassword'] = '123456';
$_POST['bindType'] = 'bind';
$ssoData = new stdclass();
$ssoData->account = 'ranzhi1';
$_SESSION['ssoData'] = $ssoData;
$ssoModel->bind();
r((array)$ssoModel->fetchById(1, 'user')) && p('account,ranzhi') && e('admin,ranzhi1'); //绑定关联ranzhi账号。
$_POST = array();
$_POST['account'] = 'user10';
$_POST['password1'] = '123456';
$_POST['password2'] = '123456';
$_POST['realname'] = 'admin';
$_POST['gender'] = 'm';
$_POST['email'] = 'admin@163.com';
$_POST['role'] = 'dev';
$_POST['bindType'] = 'add';
$_POST['passwordStrength'] = '2';
$_POST['passwordLength'] = strlen($_POST['password1']);
$ssoData = new stdclass();
$ssoData->account = 'ranzhi2';
$_SESSION['ssoData'] = $ssoData;
$ssoModel->config->safe = new stdclass();
$ssoModel->config->safe->mode = 2;
$ssoModel->bind();
r((array)$ssoModel->fetchById(6, 'user')) && p('account,ranzhi') && e('user10,ranzhi2'); //添加关联ranzhi账号。
+31
View File
@@ -0,0 +1,31 @@
#!/usr/bin/env php
<?php
/**
title=ssoModel->checkKey();
cid=0
- 不存在config->sso->turnon配置 @0
- 不存在config->sso->key @0
- hash和key不匹配 @0
- hash和key相等 @1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
global $tester;
$ssoModel = $tester->loadModel('sso');
r($ssoModel->checkKey()) && p() && e('0'); //不存在config->sso->turnon配置
$ssoModel->config->sso->turnon = true;
r($ssoModel->checkKey()) && p() && e('0'); //不存在config->sso->key
$ssoModel->config->sso->key = 'test';
$_GET['hash'] = '1234';
r($ssoModel->checkKey()) && p() && e('0'); //hash和key不匹配
$_GET['hash'] = 'test';
r($ssoModel->checkKey()) && p() && e('1'); //hash和key相等
+18 -29
View File
@@ -1,43 +1,32 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/sso.class.php';
su('admin');
/**
title=ssoModel->createUser();
cid=1
pid=1
用户存在的情况 >> fail
用户信息错误的情况 >> fail
用户不存在的情况 >> bindUser1
cid=0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/sso.class.php';
su('admin');
zdTable('user')->gen(5);
$sso = new ssoTest();
$existsUser = array(
'account' => 'admin'
);
$newUser = new stdclass();
$newUser->account = 'admin';
$newUser->realname = '绑定用户1';
$newUser->email = 'user@test.com';
$newUser->gender = 'm';
$newUser->ranzhi = 'bindUser1';
$newUser = array(
'account' => 'bindUser1',
'realname' => '绑定用户1',
'email' => 'user@test.com',
'gender' => 'm',
'ranzhi' => 'bindUser1'
);
r($sso->createTest($newUser)) && p('data') && e('该用户名已经存在,请更换用户名,或直接绑定到该用户。'); // 用户存在的情况
$failUser = array(
'account' => 'bindUser2',
'realname' => '绑定用户2',
'email' => 'user@test.com',
'gender' => '',
'ranzhi' => 'bindUser2'
);
$newUser->account = 'bindUser1';
r($sso->createTest($newUser)) && p('id') && e('6'); // 用户不存在的情况
r($sso->createTest($existsUser)) && p('status') && e('fail'); // 用户存在的情况
r($sso->createTest($failUser)) && p('status') && e('fail'); // 用户信息错误的情况
r($sso->createTest($newUser)) && p('account') && e('bindUser1'); // 用户不存在的情况
$newUser->account = 'bindUser2';
$newUser->gender = '';
r($sso->createTest($newUser)['data']['gender'][0]) && p() && e('『性别』不符合格式,应当为:『/f|m/』。'); // 用户信息错误的情况
+12 -12
View File
@@ -1,24 +1,24 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
/**
title=ssoModel->getBindUser();
cid=1
pid=1
cid=0
用户不存在绑定的情况 >> not user
用户存在绑定的情况 >> admin
- 传入空参数 @0
- 查询未绑定用户 @0
- 用户存在绑定的情况属性account @admin
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
$user = zdTable('user');
$user->ranzhi->range('1-20')->prefix('ranzhi');
$user->gen(5);
$sso = $tester->loadModel('sso');
$emptyUser = '';
$realUser = 'admin';
$res = $sso->getBindUser($emptyUser);
if(!$res) $res = 'not user';
r($res) && p() && e('not user'); // 用户不存在绑定的情况
r($sso->getBindUser($realUser)) && p('account') && e('admin'); // 用户存在绑定的情况
r($sso->getBindUser('')) && p() && e('0'); //传入空参数
r($sso->getBindUser('use1')) && p() && e('0'); //查询未绑定用户
r($sso->getBindUser('ranzhi1')) && p('account') && e('admin'); //用户存在绑定的情况
+11 -5
View File
@@ -1,17 +1,23 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
/**
title=ssoModel->getBindUsers();
cid=1
pid=1
cid=0
获取第一条记录账号 >> admin
- 查询记录条数 @4
- 获取ranzhi1绑定的用户属性ranzhi1 @user1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
$user = zdTable('user');
$user->ranzhi->range('``,ranzhi1,ranzhi2,ranzhi3,ranzhi4');
$user->gen(5);
$sso = $tester->loadModel('sso');
r($sso->getBindUsers()) && p('admin') && e('admin'); // 获取第一条记录账号
$users = $sso->getBindUsers();
r(count($users)) && p() && e('4'); // 查询记录条数
r($users) && p('ranzhi1') && e('user1'); // 获取ranzhi1绑定的用户
+4 -12
View File
@@ -10,20 +10,12 @@ class ssoTest
/**
* Test create a user.
*
* @param array $param
* @param object $user
* @access public
* @return void
* @return array
*/
public function createTest($param = array())
public function createTest($user)
{
foreach($param as $key => $value) $_POST[$key] = $value;
$result = $this->objectModel->createUser();
unset($_POST);
if($result['status'] == 'fail') return 'fail';
$object = $this->objectModel->getBindUser($param['account']);
return $object;
return $this->objectModel->createUser($user);
}
}
+58
View File
@@ -0,0 +1,58 @@
#!/usr/bin/env php
<?php
/**
title=ssoModel->addZTUser();
cid=0
- 低密码强度。第password1条的0属性 @密码必须10位及以上,且包含大小写字母、数字、特殊符号。
- 用户名已经存在。 @该用户名已经存在,请更换用户名,或直接绑定到该用户。
- 邮箱格式错误。第email条的0属性 @『邮箱』应当为合法的EMAIL。
- 正确关联ranzhi账号。
- 属性account @user10
- 属性ranzhi @ranzhi1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
zdTable('user')->gen(5);
global $tester;
$ssoModel = $tester->loadModel('sso');
$ssoModel->config->safe = new stdclass();
$ssoModel->config->safe->mode = 2;
$data = new stdclass();
$data->account = 'admin';
$data->password1 = '123456';
$data->password2 = '123456';
$data->realname = 'admin';
$data->gender = 'm';
$data->email = 'admin';
$data->role = 'dev';
$data->passwordStrength = '1';
$data->passwordLength = strlen($data->password1);
$ssoData = new stdclass();
$ssoData->account = 'ranzhi1';
$_SESSION['ssoData'] = $ssoData;
$ssoModel->addZTUser($data);
r(dao::getError()) && p('password1:0') && e('密码必须10位及以上,且包含大小写字母、数字、特殊符号。'); //低密码强度。
$data->password1 = 'Admin123';
$data->password2 = 'Admin123';
$data->passwordStrength = '2';
$data->passwordLength = strlen($data->password1);
$ssoModel->addZTUser($data);
r(dao::getError()) && p('0') && e('该用户名已经存在,请更换用户名,或直接绑定到该用户。'); //用户名已经存在。
$data->account = 'user10';
$ssoModel->addZTUser($data);
r(dao::getError()) && p('email:0') && e('『邮箱』应当为合法的EMAIL。'); //邮箱格式错误。
$data->email = 'admin@163.com';
$ssoModel->addZTUser($data);
r((array)$ssoModel->fetchById(6, 'user')) && p('account,ranzhi') && e('user10,ranzhi1'); //正确关联ranzhi账号。
+42
View File
@@ -0,0 +1,42 @@
#!/usr/bin/env php
<?php
/**
title=ssoModel->bindZTUser();
cid=0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
$user = zdTable('user');
$user->password->range('e10adc3949ba59abbe56e057f20f883e');
$user->gen(5);
global $tester;
$ssoModel = $tester->loadModel('sso');
$data = new stdclass();
$data->bindUser = 'admin';
$data->bindPassword = '';
$ssoData = new stdclass();
$ssoData->account = 'ranzhi1';
$_SESSION['ssoData'] = $ssoData;
$ssoModel->bindZTUser($data);
r(dao::getError()) && p('0') && e('密码不能为空'); //没有传入用户密码。
$data->bindPassword = '1234567';
$ssoModel->bindZTUser($data);
r(dao::getError()) && p('0') && e('该用户的登录密码错误,或该用户不存在!'); //传入用户密码错误。
$data->bindPassword = '123456';
$data->bindUser = 'user10';
$ssoModel->bindZTUser($data);
r(dao::getError()) && p('0') && e('该用户的登录密码错误,或该用户不存在!'); //传入用户账号错误。
$data->bindUser = 'admin';
$ssoModel->bindZTUser($data);
r((array)$ssoModel->fetchById(1, 'user')) && p('account,ranzhi') && e('admin,ranzhi1'); //正确关联ranzhi账号。