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

171 lines
9.2 KiB
PHP
Raw Permalink Normal View History

#!/usr/bin/env php
<?php
/**
title=测试 userModel->identifyByCookie();
cid=19641
- 空用户验证失败,返回 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);
global $app;
$userTest = new userModelTest();
$password = sha1(123456);
$admin = $userTest->getByIdTest('admin');
$user1 = $userTest->getByIdTest('user1');
/**
* 检测验证空用户。
*/
$tester->cookie->set('za', '');
$tester->cookie->set('zp', $password);
r($userTest->identifyByCookieTest()) && p() && e(0); // 空用户验证失败,返回 false。
/**
* 检测验证 guest 用户。
*/
$tester->cookie->set('za', 'guest');
$tester->cookie->set('zp', $password);
r($userTest->identifyByCookieTest()) && p() && e(0); // guest 用户验证失败,返回 false。
/**
* 检测验证不存在的用户。
*/
$tester->cookie->set('za', 'user2');
$tester->cookie->set('zp', $password);
r($userTest->identifyByCookieTest()) && p() && e(0); // user2 用户验证失败,返回 false。
/**
* 检测验证 admin 用户。
*/
$tester->cookie->set('za', $admin->account);
$tester->cookie->set('zp', sha1($admin->account . $admin->password . strtotime($admin->last)));
r($userTest->identifyByCookieTest()) && 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->cookie->set('za', $user1->account);
$tester->cookie->set('zp', sha1($user1->account . $user1->password . strtotime($user1->last)));
r($userTest->identifyByCookieTest()) && 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->cookie->set('za', $user1->account);
$tester->cookie->set('zp', sha1($user1->password));
r($userTest->identifyByCookieTest()) && p() && e(0); // user1 用户使用错误密码验证失败,返回 false。
/* 检测 user1 用户使用空密码验证。*/
$tester->cookie->set('za', $user1->account);
$tester->cookie->set('zp', '');
r($userTest->identifyByCookieTest()) && p() && e(0); // user1 用户使用空密码验证失败,返回 false。