znt/module/user/test/model/identifybyphpauth.php

174 lines
9.3 KiB
PHP
Raw Permalink Normal View History

#!/usr/bin/env php
<?php
/**
title=测试 userModel->identifyByPhpAuth();
cid=19642
- 空用户验证失败,返回 false @0
- guest 用户验证失败,返回 false @0
- user2 用户验证失败,返回 false @0
- admin 用户验证成功,返回 true @1
- admin 用户验证成功,$app 对象的中的用户是 admin。属性account @admin
- admin 用户验证成功session 中的用户是 admin。属性account @admin
- admin 用户具有 6 个模块的权限。 @8
- admin 用户具有 index 模块的 index 动作的权限。 @1
- admin 用户具有 my 模块的 index 动作的权限。 @1
- admin 用户具有 company 模块的 all 动作的权限。 @1
- admin 用户具有 dept 模块的 browse 动作的权限。 @1
- admin 用户具有 group 模块的 browse 动作的权限。 @1
- admin 用户具有 program 模块的 browse 动作的权限。 @1
- admin 用户具有 product 模块的 browse 动作的权限。 @1
- admin 用户具有 execution 模块的 browse 动作的权限。 @1
- admin 用户具有 2 个权限组。 @2
- admin 用户具有的权限组 id 分别是 1 2
- 属性1 @1
- 属性2 @2
- 记录日志,最后一条日志对象类型是 user对象 ID 1,动作是 login。
- 属性objectType @user
- 属性objectID @1
- 属性action @login
- user1 用户验证成功,返回 true @1
- user1 用户验证成功,$app 对象的中的用户是 user1。属性account @user1
- user1 用户验证成功session 中的用户是 user1。属性account @user1
- user1 用户具有 2 个模块的权限。 @8
- user1 用户具有 index 模块的 index 动作的权限。 @1
- user1 用户具有 my 模块的 index 动作的权限。 @1
- user1 用户具有 program 模块的 browse 动作的权限。 @1
- user1 用户具有 product 模块的 browse 动作的权限。 @1
- user1 用户具有 execution 模块的 all 动作的权限。 @1
- user1 用户具有 qa 模块的 index 动作的权限。 @1
- user1 用户具有 bug 模块的 browse 动作的权限。 @1
- user1 用户具有 testcase 模块的 browse 动作的权限。 @1
- user1 用户具有 2 个权限组。 @2
- user1 用户具有的权限组 id 分别是 2 3
- 属性2 @2
- 属性3 @3
- 记录日志,最后一条日志对象类型是 user对象 ID 2,动作是 login。
- 属性objectType @user
- 属性objectID @2
- 属性action @login
- user1 用户使用错误密码验证失败,返回 false @0
- user1 用户使用空密码验证失败,返回 false @0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/model.class.php';
zenData('user')->gen(2);
zenData('company')->gen(1);
zenData('group')->gen(3);
$userGroupTable = zenData('usergroup');
$userGroupTable->account->range('admin{2},user1{2}');
$userGroupTable->group->range('1,2{2},3');
$userGroupTable->gen(4);
$groupPrivTable = zenData('grouppriv');
$groupPrivTable->group->range('1-3{3}');
$groupPrivTable->module->range('company,dept,group,program,product,execution,qa,bug,testcase');
$groupPrivTable->method->range('browse{5},all,index,browse{2}');
$groupPrivTable->gen(9);
su('admin');
global $app;
$userTest = new userModelTest();
$random = updateSessionRandom();
$password = md5(md5(123456) . $random);
$admin = $userTest->getByIdTest('admin');
$user1 = $userTest->getByIdTest('user1');
/**
* 检测验证空用户。
*/
$tester->server->php_auth_user = '';
$tester->server->php_auth_pw = $password;
r($userTest->identifyByPhpAuthTest()) && p() && e(0); // 空用户验证失败,返回 false。
/**
* 检测验证 guest 用户。
*/
$tester->server->php_auth_user = 'guest';
$tester->server->php_auth_pw = $password;
r($userTest->identifyByPhpAuthTest()) && p() && e(0); // guest 用户验证失败,返回 false。
/**
* 检测验证不存在的用户。
*/
$tester->server->php_auth_user = 'user2';
$tester->server->php_auth_pw = $password;
r($userTest->identifyByPhpAuthTest()) && p() && e(0); // user2 用户验证失败,返回 false。
/**
* 检测验证 admin 用户。
*/
$tester->server->php_auth_user = $admin->account;
$tester->server->php_auth_pw = md5($admin->password . $random);
r($userTest->identifyByPhpAuthTest()) && p() && e(1); // admin 用户验证成功,返回 true。
r($app->user) && p('account') && e('admin'); // admin 用户验证成功,$app 对象的中的用户是 admin。
r($tester->session->user) && p('account') && e('admin'); // admin 用户验证成功session 中的用户是 admin。
/* 检测 admin 用户权限。*/
r(count($app->user->rights['rights'])) && p() && e(8); // admin 用户具有 6 个模块的权限。
r(isset($app->user->rights['rights']['index']['index'])) && p() && e(1); // admin 用户具有 index 模块的 index 动作的权限。
r(isset($app->user->rights['rights']['my']['index'])) && p() && e(1); // admin 用户具有 my 模块的 index 动作的权限。
r(isset($app->user->rights['rights']['company']['browse'])) && p() && e(1); // admin 用户具有 company 模块的 all 动作的权限。
r(isset($app->user->rights['rights']['dept']['browse'])) && p() && e(1); // admin 用户具有 dept 模块的 browse 动作的权限。
r(isset($app->user->rights['rights']['group']['browse'])) && p() && e(1); // admin 用户具有 group 模块的 browse 动作的权限。
r(isset($app->user->rights['rights']['program']['browse'])) && p() && e(1); // admin 用户具有 program 模块的 browse 动作的权限。
r(isset($app->user->rights['rights']['product']['browse'])) && p() && e(1); // admin 用户具有 product 模块的 browse 动作的权限。
r(isset($app->user->rights['rights']['execution']['all'])) && p() && e(1); // admin 用户具有 execution 模块的 browse 动作的权限。
/* 检测 admin 用户权限组。*/
r(count($app->user->groups)) && p() && e(2); // admin 用户具有 2 个权限组。
r($app->user->groups) && p('1,2') && e('1,2'); // admin 用户具有的权限组 id 分别是 1 和 2。
/* 检测 admin 用户视图功能在 computeUserView 和 grantUserView 方法的单元测试中实现。*/
/* 检测是否记录 admin 登录日志。*/
$action = $tester->dao->select('*')->from(TABLE_ACTION)->orderBy('id_desc')->limit(1)->fetch();
r($action) && p('objectType,objectID,action') && e('user,1,login'); // 记录日志,最后一条日志对象类型是 user对象 ID 是 1动作是 login。
/**
* 检测验证 user1 用户。
*/
$tester->server->php_auth_user = $user1->account;
$tester->server->php_auth_pw = md5($user1->password . $random);
r($userTest->identifyByPhpAuthTest()) && p() && e(1); // user1 用户验证成功,返回 true。
r($app->user) && p('account') && e('user1'); // user1 用户验证成功,$app 对象的中的用户是 user1。
r($tester->session->user) && p('account') && e('user1'); // user1 用户验证成功session 中的用户是 user1。
/* 检测 user1 用户权限。*/
r(count($app->user->rights['rights'])) && p() && e(8); // user1 用户具有 2 个模块的权限。
r(isset($app->user->rights['rights']['index']['index'])) && p() && e(1); // user1 用户具有 index 模块的 index 动作的权限。
r(isset($app->user->rights['rights']['my']['index'])) && p() && e(1); // user1 用户具有 my 模块的 index 动作的权限。
r(isset($app->user->rights['rights']['program']['browse'])) && p() && e(1); // user1 用户具有 program 模块的 browse 动作的权限。
r(isset($app->user->rights['rights']['product']['browse'])) && p() && e(1); // user1 用户具有 product 模块的 browse 动作的权限。
r(isset($app->user->rights['rights']['execution']['all'])) && p() && e(1); // user1 用户具有 execution 模块的 all 动作的权限。
r(isset($app->user->rights['rights']['qa']['index'])) && p() && e(1); // user1 用户具有 qa 模块的 index 动作的权限。
r(isset($app->user->rights['rights']['bug']['browse'])) && p() && e(1); // user1 用户具有 bug 模块的 browse 动作的权限。
r(isset($app->user->rights['rights']['testcase']['browse'])) && p() && e(1); // user1 用户具有 testcase 模块的 browse 动作的权限。
/* 检测 user1 用户权限组。*/
r(count($app->user->groups)) && p() && e(2); // user1 用户具有 2 个权限组。
r($app->user->groups) && p('2,3') && e('2,3'); // user1 用户具有的权限组 id 分别是 2 和 3。
/* 检测 user1 用户视图功能在 computeUserView 和 grantUserView 方法的单元测试中实现。*/
/* 检测是否记录 user1 登录日志。*/
$action = $tester->dao->select('*')->from(TABLE_ACTION)->orderBy('id_desc')->limit(1)->fetch();
r($action) && p('objectType,objectID,action') && e('user,2,login'); // 记录日志,最后一条日志对象类型是 user对象 ID 是 2动作是 login。
/* 检测 user1 用户使用错误密码验证。*/
$tester->server->php_auth_user = $user1->account;
$tester->server->php_auth_pw = md5($user1->password);
r($userTest->identifyByPhpAuthTest()) && p() && e(0); // user1 用户使用错误密码验证失败,返回 false。
/* 检测 user1 用户使用空密码验证。*/
$tester->server->php_auth_user = $user1->account;
$tester->server->php_auth_pw = '';
r($userTest->identifyByPhpAuthTest()) && p() && e(0); // user1 用户使用空密码验证失败,返回 false。