I use RBAC and create permissions and roles.
When I use checkAccess() to test a user_id, an error is occur:
d:\xampp\htdocs\trackstar\protected\tests>phpunit unit/permissionTest.php
PHPUnit 3.7.24 by Sebastian Bergmann.
Configuration read from D:\xampp\htdocs\trackstar\protected\tests\phpunit.xml
E
Time: 1.99 seconds, Memory: 5.00Mb
There was 1 error:
- PermissionTest::testCreate
Illegal string offset ‘userId’
D:\xampp\htdocs\YII\framework\web\auth\CDbAuthManager.php:97
D:\xampp\htdocs\YII\framework\web\auth\CDbAuthManager.php:75
D:\xampp\htdocs\YII\framework\web\auth\CWebUser.php:815
D:\xampp\htdocs\trackstar\protected\tests\unit\PermissionTest.php:119
FAILURES!
Tests: 1, Assertions: 14, Errors: 1.
my php code :
<?php
$this->_authManager->assign('systemManage', $user->getId());
$projectId = 1;
$assignmentWithProject = array('project_id' => $projectId, 'user_id' => 1, 'role' => 'systemManage');
$result = Yii::app()->db->createCommand()
->insert('tbl_project_user_role', $assignmentWithProject);
$project = Project::model()->findByPk($projectId);
$bizRulesForProject = 'return isset($project) && !empty($project) && $project->isUserInRole("member", $projectId);';
line 119: [b]$this->assertTrue($user->checkAccess('createIssue', $bizRulesForProject, false));[/b]
?>
<?php
class Project extends TrackstarAR
{
....
public function isUserInRole($role, $id){
$role = Yii::app()->db->createCommand()
->select('role')
->from('tbl_project_user_role')
->where('id = :id AND role = :role', array(':id' => $id, ':role' => $role))
->queryRow()
->role;
return $role;
}
}
?>