* Adjust sso unit test.
This commit is contained in:
+6
-3
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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账号。
|
||||
@@ -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相等
|
||||
@@ -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/』。'); // 用户信息错误的情况
|
||||
|
||||
@@ -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'); //用户存在绑定的情况
|
||||
|
||||
@@ -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绑定的用户
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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账号。
|
||||
@@ -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账号。
|
||||
Reference in New Issue
Block a user