<?php
require_once __DIR__."/base.php";
class PHPRBACRolesTest extends PHPRBACBaseTest
{
/**
*
* @return \jf\RoleManager
*/
protected function Instance()
{
return jf::$RBAC->Roles;
}
protected function Type()
{
return "role";
}
function testAssignPermission()
{
$ID1 = jf::$RBAC->Roles->Add ( "role1", "description of role1" );
$ID2 = jf::$RBAC->Roles->Add ( "role2", "description of role2" );
$ID11 = jf::$RBAC->Roles->Add ( "role1-1", "description of role", $ID1 );
$ID12 = jf::$RBAC->Roles->Add ( "role1-2", "description of role", $ID1 );
$ID121 = jf::$RBAC->Roles->Add ( "role1-2-1", "description of role", $ID12 );
$PID1 = jf::$RBAC->Permissions->Add ( "permission1", "description" );
$PID2 = jf::$RBAC->Permissions->Add ( "permission2", "description" );
$PID21 = jf::$RBAC->Permissions->Add ( "permission2-1", "description", $PID2 );
jf::$RBAC->Roles->Assign ( $ID121, $PID2 );
$this->assertTrue ( jf::$RBAC->Roles->HasPermission ( $ID121, $PID2 ) );
$this->assertTrue ( jf::$RBAC->Roles->HasPermission ( $ID1, $PID21 ) );
$this->assertTrue ( jf::$RBAC->Roles->HasPermission ( $ID12, $PID2 ) );
$this->assertTrue ( jf::$RBAC->Roles->HasPermission ( $ID121, $PID21 ) );
$this->assertFalse ( jf::$RBAC->Roles->HasPermission ( $ID11, $PID21 ) );
$this->assertFalse ( jf::$RBAC->Roles->HasPermission ( $ID2, $PID1 ) );
$this->assertFalse ( jf::$RBAC->Roles->HasPermission ( $ID2, $PID2 ) );
$this->assertFalse ( jf::$RBAC->Roles->HasPermission ( $ID2, $PID21 ) );
}
function testHasPermission()
{
$ID1 = jf::$RBAC->Roles->Add ( "role1", "description of role1" );
$ID2 = jf::$RBAC->Roles->Add ( "role2", "description of role2" );
$ID11 = jf::$RBAC->Roles->Add ( "role1-1", "description of role", $ID1 );
$ID12 = jf::$RBAC->Roles->Add ( "role1-2", "description of role", $ID1 );
$ID121 = jf::$RBAC->Roles->Add ( "role1-2-1", "description of role", $ID12 );
$PID1 = jf::$RBAC->Permissions->Add ( "permission1", "description" );
$PID2 = jf::$RBAC->Permissions->Add ( "permission2", "description" );
$PID21 = jf::$RBAC->Permissions->Add ( "permission2-1", "description", $PID2 );
jf::$RBAC->Roles->Assign ( $ID121, $PID2 );
$this->assertTrue ( jf::$RBAC->Roles->HasPermission ( $ID1, $PID21 ) );
$this->assertTrue ( jf::$RBAC->Roles->HasPermission ( $ID12, $PID2 ) );
$this->assertTrue ( jf::$RBAC->Roles->HasPermission ( $ID121, $PID21 ) );
}
// @depends LibRbacBaseTest::testAssign # how can i depend on another class'
// test?
/**
* @depends testHasPermission
*/
function testUnassignPermissions()
{
$ID1 = jf::$RBAC->Roles->Add ( "role1", "description of role1" );
$ID2 = jf::$RBAC->Roles->Add ( "role2", "description of role2" );
$ID11 = jf::$RBAC->Roles->Add ( "role1-1", "description of role", $ID1 );
$ID12 = jf::$RBAC->Roles->Add ( "role1-2", "description of role", $ID1 );
$ID121 = jf::$RBAC->Roles->Add ( "role1-2-1", "description of role", $ID12 );
$PID1 = jf::$RBAC->Permissions->Add ( "permission1", "description" );
$PID2 = jf::$RBAC->Permissions->Add ( "permission2", "description" );
$PID21 = jf::$RBAC->Permissions->Add ( "permission2-1", "description", $PID2 );
jf::$RBAC->Roles->Assign ( $ID121, $PID2 );
jf::$RBAC->Roles->UnassignPermissions ( $ID121 );
$this->assertFalse ( jf::$RBAC->Roles->HasPermission ( $ID1, $PID21 ) );
$this->assertFalse ( jf::$RBAC->Roles->HasPermission ( $ID12, $PID2 ) );
$this->assertFalse ( jf::$RBAC->Roles->HasPermission ( $ID121, $PID21 ) );
}
/**
* depends LibRbacUsersTest::testAssign
*/
function testUnassignUsers()
{
$UID = 2;
$ID1 = jf::$RBAC->Roles->Add ( "role1", "description of role1" );
$ID2 = jf::$RBAC->Roles->Add ( "role2", "description of role2" );
$ID11 = jf::$RBAC->Roles->Add ( "role1-1", "description of role", $ID1 );
$ID12 = jf::$RBAC->Roles->Add ( "role1-2", "description of role", $ID1 );
$ID121 = jf::$RBAC->Roles->Add ( "role1-2-1", "description of role", $ID12 );
$this->assertTrue ( jf::$RBAC->Users->Assign ( $ID1, $UID ) );
$this->assertTrue ( jf::$RBAC->Users->HasRole ( $ID1, $UID ) );
jf::$RBAC->Roles->UnassignUsers ( $ID1 );
$this->assertFalse ( jf::$RBAC->Users->HasRole ( $ID1, $UID ) );
}
function testPermissions()
{
$ID1 = jf::$RBAC->Roles->Add ( "role1", "description of role1" );
$ID2 = jf::$RBAC->Roles->Add ( "role2", "description of role2" );
$ID11 = jf::$RBAC->Roles->Add ( "role1-1", "description of role", $ID1 );
$ID12 = jf::$RBAC->Roles->Add ( "role1-2", "description of role", $ID1 );
$ID121 = jf::$RBAC->Roles->Add ( "role1-2-1", "description of role", $ID12 );
$PID1 = jf::$RBAC->Permissions->Add ( "permission1", "description" );
$PID2 = jf::$RBAC->Permissions->Add ( "permission2", "description" );
$PID21 = jf::$RBAC->Permissions->Add ( "permission2-1", "description", $PID2 );
jf::$RBAC->Roles->Assign ( $ID121, $PID2 );
$this->assertEquals(jf::$RBAC->Roles->Permissions($ID121,true),array($PID2));
jf::$RBAC->Roles->Assign ( $ID121, $PID1 );
$this->assertEquals(jf::$RBAC->Roles->Permissions($ID121,true),array($PID1,$PID2));
$this->assertEquals(2,count(jf::$RBAC->Roles->Permissions($ID121)));
}
}
|