lawPermissionChecker->hasPermission($this->clientRight); } public function setUp(): void { $this->clientRight = new Right(); $this->law = new Law(); $this->lawPermissionChecker = new LawPermissionCheckerService($this->law); $this->clientSource = $this->getSourceMock(); $this->clientRight->setSource($this->clientSource); $this->clientRight->setLayer(LayerType::SOURCE); $this->clientRight->setType(RightType::READ); } public function testGeneralPermission(): void { $this->assertFalse($this->checkClientPermission()); $lawRight = clone $this->clientRight; $lawRight->setReciever($this->clientSource); $this->law->getRights()->add($lawRight); $this->assertTrue($this->checkClientPermission()); $this->clientRight->setType(RightType::WRITE); $this->assertFalse($this->checkClientPermission()); } public function testMemberPermission(): void { $parentSource = $this->getSourceMock(); $this->clientRight->getSource()->getMemberRelation()->getMemberships()->add($parentSource); $parentSource->getMemberRelation()->getMembers()->add($this->clientRight->getSource()); $lawRight = clone $this->clientRight; $lawRight->setReciever($parentSource); $this->law->getRights()->add($lawRight); $permission = $this->lawPermissionChecker->hasPermission($this->clientRight); $this->assertTrue($permission); $this->law->setRights(new ArrayCollection()); $permission = $this->lawPermissionChecker->hasPermission($this->clientRight); $this->assertFalse($permission); } public function testSort(): void { $right1 = clone $this->clientRight; $right1->setPriority(123); $right1->setGrant(false); $right1->setReciever($this->clientSource); $right2 = clone $this->clientRight; $right2->setPriority(456); $right2->setGrant(true); $right2->setReciever($this->clientSource); $this->law->setRights(new ArrayCollection([$right1, $right2])); $this->assertFalse($this->checkClientPermission()); $right2->setPriority(789); $right1->setPriority(101112); $this->assertTrue($this->checkClientPermission()); } }