mirror of
				https://github.com/kevinveenbirkenbach/infinito.git
				synced 2025-10-31 09:19:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			107 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Tests\Unit\Domain\RightManagement;
 | |
| 
 | |
| use PHPUnit\Framework\TestCase;
 | |
| use App\Entity\Meta\RightInterface;
 | |
| use App\Entity\Meta\Right;
 | |
| use App\Entity\Source\SourceInterface;
 | |
| use App\Entity\Source\AbstractSource;
 | |
| use App\DBAL\Types\LayerType;
 | |
| use App\Domain\RightManagement\RightCheckerInterface;
 | |
| use App\Domain\RightManagement\RightChecker;
 | |
| use App\DBAL\Types\RightType;
 | |
| 
 | |
| class RightCheckerTest extends TestCase
 | |
| {
 | |
|     /**
 | |
|      * @var string
 | |
|      */
 | |
|     private $type;
 | |
| 
 | |
|     /**
 | |
|      * @var string
 | |
|      */
 | |
|     private $layer;
 | |
| 
 | |
|     /**
 | |
|      * @var SourceInterface
 | |
|      */
 | |
|     private $source;
 | |
| 
 | |
|     /**
 | |
|      * @var RightInterface
 | |
|      */
 | |
|     private $right;
 | |
| 
 | |
|     /**
 | |
|      * @var RightCheckerInterface
 | |
|      */
 | |
|     private $rightManager;
 | |
| 
 | |
|     private function getSourceMock(): SourceInterface
 | |
|     {
 | |
|         return new class() extends AbstractSource {
 | |
|         };
 | |
|     }
 | |
| 
 | |
|     public function setUp(): void
 | |
|     {
 | |
|         $this->layer = LayerType::RELATION;
 | |
|         $this->type = RightType::READ;
 | |
|         $this->source = $this->getSourceMock();
 | |
|         $this->right = new Right();
 | |
|         $this->right->setReciever($this->source);
 | |
|         $this->right->setType($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, RightType::WRITE, $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, $this->getSourceMock());
 | |
|         $this->assertFalse($notGranted4);
 | |
|     }
 | |
| 
 | |
|     public function testSecondDimension(): void
 | |
|     {
 | |
|         $secondSource = $this->getSourceMock();
 | |
|         $this->source->getMemberRelation()->getMembers()->add($secondSource);
 | |
|         $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, RightType::WRITE, $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 = $this->getSourceMock();
 | |
|         $secondSource = $this->getSourceMock();
 | |
|         $secondSource->getMemberRelation()->getMembers()->add($thirdSource);
 | |
|         $this->source->getMemberRelation()->getMembers()->add($secondSource);
 | |
|         $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, RightType::WRITE, $thirdSource);
 | |
|         $this->assertFalse($notGranted2);
 | |
|         $this->right->setGrant(false);
 | |
|         $notGranted3 = $this->rightManager->isGranted($this->layer, $this->type, $thirdSource);
 | |
|         $this->assertFalse($notGranted3);
 | |
|     }
 | |
| }
 |