mirror of
				https://github.com/kevinveenbirkenbach/infinito.git
				synced 2025-11-04 11:17:58 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			116 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Tests\Unit\Domain\RightManagement;
 | 
						|
 | 
						|
use PHPUnit\Framework\TestCase;
 | 
						|
use Infinito\Entity\Meta\RightInterface;
 | 
						|
use Infinito\Entity\Meta\Right;
 | 
						|
use Infinito\Entity\Source\SourceInterface;
 | 
						|
use Infinito\DBAL\Types\Meta\Right\LayerType;
 | 
						|
use Infinito\Domain\RightManagement\RightCheckerInterface;
 | 
						|
use Infinito\Domain\RightManagement\RightChecker;
 | 
						|
use Infinito\DBAL\Types\Meta\Right\CRUDType;
 | 
						|
use Infinito\Entity\Source\PureSource;
 | 
						|
 | 
						|
/**
 | 
						|
 * @author kevinfrantz
 | 
						|
 */
 | 
						|
class RightCheckerTest extends TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    private $type;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    private $layer;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var SourceInterface
 | 
						|
     */
 | 
						|
    private $source;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var RightInterface
 | 
						|
     */
 | 
						|
    private $right;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var RightCheckerInterface
 | 
						|
     */
 | 
						|
    private $rightManager;
 | 
						|
 | 
						|
    public function setUp(): void
 | 
						|
    {
 | 
						|
        $this->layer = LayerType::MEMBER;
 | 
						|
        $this->type = CRUDType::READ;
 | 
						|
        $this->source = new PureSource();
 | 
						|
        $this->right = new Right();
 | 
						|
        $this->right->setReciever($this->source);
 | 
						|
        $this->right->setActionType($this->type);
 | 
						|
        $this->right->setLayer($this->layer);
 | 
						|
        $this->rightManager = new RightChecker($this->right);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testFirstDimension(): void
 | 
						|
    {
 | 
						|
        $granted = $this->rightManager->isGranted($this->layer, $this->type, $this->source);
 | 
						|
        $this->assertTrue($granted);
 | 
						|
        $notGranted = $this->rightManager->isGranted(LayerType::SOURCE, $this->type, $this->source);
 | 
						|
        $this->assertFalse($notGranted);
 | 
						|
        $notGranted2 = $this->rightManager->isGranted($this->layer, CRUDType::UPDATE, $this->source);
 | 
						|
        $this->assertFalse($notGranted2);
 | 
						|
        $this->right->setGrant(false);
 | 
						|
        $notGranted3 = $this->rightManager->isGranted($this->layer, $this->type, $this->source);
 | 
						|
        $this->assertFalse($notGranted3);
 | 
						|
        $notGranted4 = $this->rightManager->isGranted($this->layer, $this->type, new PureSource());
 | 
						|
        $this->assertFalse($notGranted4);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSecondDimension(): void
 | 
						|
    {
 | 
						|
        $secondSource = new PureSource();
 | 
						|
        $this->source->getMemberRelation()->getMembers()->add($secondSource->getMemberRelation());
 | 
						|
        $granted = $this->rightManager->isGranted($this->layer, $this->type, $secondSource);
 | 
						|
        $this->assertTrue($granted);
 | 
						|
        $notGranted = $this->rightManager->isGranted(LayerType::SOURCE, $this->type, $secondSource);
 | 
						|
        $this->assertFalse($notGranted);
 | 
						|
        $notGranted2 = $this->rightManager->isGranted($this->layer, CRUDType::UPDATE, $secondSource);
 | 
						|
        $this->assertFalse($notGranted2);
 | 
						|
        $this->right->setGrant(false);
 | 
						|
        $notGranted3 = $this->rightManager->isGranted($this->layer, $this->type, $secondSource);
 | 
						|
        $this->assertFalse($notGranted3);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testThirdDimension(): void
 | 
						|
    {
 | 
						|
        $thirdSource = new PureSource();
 | 
						|
        $secondSource = new PureSource();
 | 
						|
        $secondSource->getMemberRelation()->getMembers()->add($thirdSource->getMemberRelation());
 | 
						|
        $this->source->getMemberRelation()->getMembers()->add($secondSource->getMemberRelation());
 | 
						|
        $granted = $this->rightManager->isGranted($this->layer, $this->type, $thirdSource);
 | 
						|
        $this->assertTrue($granted);
 | 
						|
        $notGranted = $this->rightManager->isGranted(LayerType::SOURCE, $this->type, $thirdSource);
 | 
						|
        $this->assertFalse($notGranted);
 | 
						|
        $notGranted2 = $this->rightManager->isGranted($this->layer, CRUDType::UPDATE, $thirdSource);
 | 
						|
        $this->assertFalse($notGranted2);
 | 
						|
        $this->right->setGrant(false);
 | 
						|
        $notGranted3 = $this->rightManager->isGranted($this->layer, $this->type, $thirdSource);
 | 
						|
        $this->assertFalse($notGranted3);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testAppliesToAll(): void
 | 
						|
    {
 | 
						|
        $this->assertNull($this->right->setReciever(null));
 | 
						|
        $this->assertTrue($this->rightManager->isGranted($this->layer, $this->type, $this->source));
 | 
						|
        $source2 = new PureSource();
 | 
						|
        $this->assertTrue($this->rightManager->isGranted($this->layer, $this->type, $source2));
 | 
						|
        $source3 = new PureSource();
 | 
						|
        $this->assertNull($this->right->setReciever($source3));
 | 
						|
        $this->assertTrue($this->rightManager->isGranted($this->layer, $this->type, $source3));
 | 
						|
        $this->assertFalse($this->rightManager->isGranted($this->layer, $this->type, $source2));
 | 
						|
    }
 | 
						|
}
 |