<?php 
require_once __DIR__."/base.php"; 
class LibRbacUsersTest extends PHPRBAC_Test 
{ 
    function testAssign() 
    { 
        $ID1 = jf::$RBAC->Roles->Add ( "role1", "" ); 
        $ID11 = jf::$RBAC->Roles->Add ( "role1-1", "", $ID1 ); 
        $ID111 = jf::$RBAC->Roles->Add ( "role1-1-1", "", $ID11 ); 
         
        $ID2 = jf::$RBAC->Roles->Add ( "role2", "" ); 
        $ID21 = jf::$RBAC->Roles->Add ( "role2-1", "", $ID2 ); 
        $ID211 = jf::$RBAC->Roles->Add ( "role2-1-1", "", $ID21 ); 
         
 
        $UID = 3; 
        $this->assertTrue ( jf::$RBAC->Users->Assign ( $ID21, $UID ) ); 
        $this->assertFalse ( jf::$RBAC->Users->Assign ( $ID21, $UID ) ); 
    } 
     
    /** 
     * @depends testAssign 
     */ 
    function testUnassign() 
    { 
        $ID1 = jf::$RBAC->Roles->Add ( "role1", "" ); 
        $ID11 = jf::$RBAC->Roles->Add ( "role1-1", "", $ID1 ); 
        $ID111 = jf::$RBAC->Roles->Add ( "role1-1-1", "", $ID11 ); 
         
        $ID2 = jf::$RBAC->Roles->Add ( "role2", "" ); 
        $ID21 = jf::$RBAC->Roles->Add ( "role2-1", "", $ID2 ); 
        $ID211 = jf::$RBAC->Roles->Add ( "role2-1-1", "", $ID21 ); 
         
 
        $UID = 2; 
        $this->assertTrue ( jf::$RBAC->Users->Assign ( $ID21, $UID ) ); 
        $this->assertTrue ( jf::$RBAC->Users->Unassign ( $ID21, $UID ) ); 
        $this->assertFalse ( jf::$RBAC->Users->Unassign ( $ID21, $UID ) ); 
        $this->assertTrue ( jf::$RBAC->Users->Assign ( $ID21, $UID ) ); 
    } 
    function testAllRoles() 
    { 
        $ID1 = jf::$RBAC->Roles->Add ( "role1", "" ); 
        $ID11 = jf::$RBAC->Roles->Add ( "role1-1", "", $ID1 ); 
        $ID111 = jf::$RBAC->Roles->Add ( "role1-1-1", "", $ID11 ); 
         
        $ID2 = jf::$RBAC->Roles->Add ( "role2", "" ); 
        $ID21 = jf::$RBAC->Roles->Add ( "role2-1", "", $ID2 ); 
        $ID211 = jf::$RBAC->Roles->Add ( "role2-1-1", "", $ID21 ); 
         
         
        $UID = 2; 
         
        $this->assertEquals ( null, jf::$RBAC->Users->AllRoles($UID) ); 
         
        jf::$RBAC->Users->Assign ( $ID21, $UID ); 
        $res=jf::$RBAC->Users->AllRoles( $UID ); 
        $this->assertArrayHasKey("Title", $res[0]); 
        $this->assertArrayHasKey("ID", $res[0]); 
        $this->assertEquals($ID21, $res[0]['ID']); 
         
         
        #new 
        jf::$RBAC->Users->Assign ( $ID211, $UID ); 
        $this->assertEquals ( 2, count(jf::$RBAC->Users->AllRoles ( $UID ) )); 
         
    } 
    function testRoleCount() 
    { 
        $ID1 = jf::$RBAC->Roles->Add ( "role1", "" ); 
        $ID11 = jf::$RBAC->Roles->Add ( "role1-1", "", $ID1 ); 
        $ID111 = jf::$RBAC->Roles->Add ( "role1-1-1", "", $ID11 ); 
         
        $ID2 = jf::$RBAC->Roles->Add ( "role2", "" ); 
        $ID21 = jf::$RBAC->Roles->Add ( "role2-1", "", $ID2 ); 
        $ID211 = jf::$RBAC->Roles->Add ( "role2-1-1", "", $ID21 ); 
         
 
        $UID = 2; 
        $this->assertEquals ( 0, jf::$RBAC->Users->RoleCount ( $UID ) ); 
         
        jf::$RBAC->Users->Assign ( $ID21, $UID ); 
        $this->assertEquals ( 1, jf::$RBAC->Users->RoleCount ( $UID ) ); 
         
        #same 
        jf::$RBAC->Users->Assign ( $ID21, $UID ); 
        $this->assertEquals ( 1, jf::$RBAC->Users->RoleCount ( $UID ) ); 
         
        #new 
        jf::$RBAC->Users->Assign ( $ID211, $UID ); 
        $this->assertEquals ( 2, jf::$RBAC->Users->RoleCount ( $UID ) ); 
         
        #to another user 
        jf::$RBAC->Users->Assign ( $ID211, 1 ); 
        $this->assertEquals ( 2, jf::$RBAC->Users->RoleCount ( $UID ) ); 
    } 
     
    /** 
     * @depends testAssign 
     */ 
    function testHasRole() 
    { 
        $ID1 = jf::$RBAC->Roles->Add ( "role1", "" ); 
        $ID11 = jf::$RBAC->Roles->Add ( "role1-1", "", $ID1 ); 
        $ID111 = jf::$RBAC->Roles->Add ( "role1-1-1", "", $ID11 ); 
         
        $ID2 = jf::$RBAC->Roles->Add ( "role2", "" ); 
        $ID21 = jf::$RBAC->Roles->Add ( "role2-1", "", $ID2 ); 
        $ID211 = jf::$RBAC->Roles->Add ( "role2-1-1", "", $ID21 ); 
         
 
        $UID = 2; 
        jf::$RBAC->Users->Assign ( $ID21, $UID ); 
         
        $this->assertTrue ( jf::$RBAC->Users->HasRole ( $ID21, $UID ) ); 
        $this->assertTrue ( jf::$RBAC->Users->HasRole ( $ID211, $UID ) ); 
         
        $this->assertFalse ( jf::$RBAC->Users->HasRole ( $ID2, $UID ) ); 
        $this->assertFalse ( jf::$RBAC->Users->HasRole ( $ID111, $UID ) ); 
         
        jf::$RBAC->Users->Unassign ( $ID21, $UID ); 
        $this->assertFalse ( jf::$RBAC->Users->HasRole ( $ID21, $UID ) ); 
    } 
     
     
    function testResetAssignments() 
    { 
        $ID1 = jf::$RBAC->Roles->Add ( "role1", "" ); 
        $ID11 = jf::$RBAC->Roles->Add ( "role1-1", "", $ID1 ); 
        $ID111 = jf::$RBAC->Roles->Add ( "role1-1-1", "", $ID11 ); 
         
        $ID2 = jf::$RBAC->Roles->Add ( "role2", "" ); 
        $ID21 = jf::$RBAC->Roles->Add ( "role2-1", "", $ID2 ); 
        $ID211 = jf::$RBAC->Roles->Add ( "role2-1-1", "", $ID21 ); 
         
         
        $UID = 2; 
        jf::$RBAC->Users->Assign ( $ID21, $UID ); 
         
        jf::$RBAC->Users->ResetAssignments(true); 
        $this->assertEquals(1,count(jf::$RBAC->Users->AllRoles(1))); 
        $this->assertEquals(0,count(jf::$RBAC->Users->AllRoles($UID))); 
    } 
}
 
 |