Expanded rights to also manage actions instead of just a cruds

This commit is contained in:
Kevin Frantz 2019-02-21 18:46:57 +01:00
parent 465d6d6d01
commit 3e91aed050
27 changed files with 91 additions and 98 deletions

View File

@ -16,7 +16,7 @@ doctrine:
collate: utf8mb4_unicode_ci collate: utf8mb4_unicode_ci
url: '%env(resolve:DATABASE_URL)%' url: '%env(resolve:DATABASE_URL)%'
types: types:
CRUDType: Infinito\DBAL\Types\Meta\Right\CRUDType ActionType: Infinito\DBAL\Types\ActionType
LayerType: Infinito\DBAL\Types\Meta\Right\LayerType LayerType: Infinito\DBAL\Types\Meta\Right\LayerType
orm: orm:
auto_generate_proxy_classes: '%kernel.debug%' auto_generate_proxy_classes: '%kernel.debug%'

View File

@ -4,11 +4,6 @@ namespace Infinito\Controller;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Infinito\Domain\MVCManagement\MVCRoutineServiceInterface;
use Infinito\Domain\RequestManagement\Action\RequestedActionServiceInterface;
use Infinito\DBAL\Types\ActionType;
use Infinito\Domain\FixtureManagement\FixtureSource\ImpressumFixtureSource;
use Infinito\DBAL\Types\Meta\Right\LayerType;
/** /**
* This controller offers the standart routes for the template. * This controller offers the standart routes for the template.
@ -17,22 +12,6 @@ use Infinito\DBAL\Types\Meta\Right\LayerType;
*/ */
final class DefaultController extends AbstractController final class DefaultController extends AbstractController
{ {
/**
* @deprecated Use load via source instead of fixed route
*
* @todo Optimize function!
* @Route("/imprint.{_format}", defaults={"_format"="json"}, name="imprint")
*/
public function imprint(MVCRoutineServiceInterface $mvcRoutineService, RequestedActionServiceInterface $requestedActionService): Response
{
$requestedActionService->setActionType(ActionType::READ);
$requestedActionService->setLayer(LayerType::SOURCE);
$requestedActionService->getRequestedEntity()->setSlug(ImpressumFixtureSource::SLUG);
$view = $mvcRoutineService->process();
return $this->handleView($view);
}
/** /**
* @Route("/", name="homepage") * @Route("/", name="homepage")
*/ */

View File

@ -6,6 +6,8 @@ use Fresh\DoctrineEnumBundle\DBAL\Types\AbstractEnumType;
/** /**
* @author kevinfrantz * @author kevinfrantz
*
* @see https://de.wikipedia.org/wiki/CRUD
*/ */
class CRUDType extends AbstractEnumType class CRUDType extends AbstractEnumType
{ {

View File

@ -6,7 +6,7 @@ use Infinito\Entity\Source\SourceInterface;
use Infinito\Entity\Source\Primitive\Text\TextSource; use Infinito\Entity\Source\Primitive\Text\TextSource;
use Infinito\Entity\Meta\Right; use Infinito\Entity\Meta\Right;
use Infinito\DBAL\Types\Meta\Right\LayerType; use Infinito\DBAL\Types\Meta\Right\LayerType;
use Infinito\DBAL\Types\Meta\Right\CRUDType; use Infinito\DBAL\Types\ActionType;
/** /**
* @author kevinfrantz * @author kevinfrantz
@ -28,7 +28,7 @@ final class ImpressumFixtureSource extends AbstractFixtureSource
$right = new Right(); $right = new Right();
$right->setSource($impressumSource); $right->setSource($impressumSource);
$right->setLayer(LayerType::SOURCE); $right->setLayer(LayerType::SOURCE);
$right->setCrud(CRUDType::READ); $right->setActionType(ActionType::READ);
$right->setLaw($impressumSource->getLaw()); $right->setLaw($impressumSource->getLaw());
$impressumSource->getLaw()->getRights()->add($right); $impressumSource->getLaw()->getRights()->add($right);

View File

@ -49,9 +49,9 @@ final class LawPermissionChecker implements LawPermissionCheckerInterface
* *
* @return Collection|RightInterface[] * @return Collection|RightInterface[]
*/ */
private function getRightsByCrud(Collection $rights, string $type): Collection private function getRightsByActionType(Collection $rights, string $type): Collection
{ {
return $this->getFilteredRights($rights, $type, 'Crud'); return $this->getFilteredRights($rights, $type, 'ActionType');
} }
/** /**
@ -149,7 +149,7 @@ final class LawPermissionChecker implements LawPermissionCheckerInterface
$right = $rights[0]; $right = $rights[0];
$rightChecker = new RightChecker($right); $rightChecker = new RightChecker($right);
return $rightChecker->isGranted($client->getLayer(), $client->getCrud(), $client->getReciever()); return $rightChecker->isGranted($client->getLayer(), $client->getActionType(), $client->getReciever());
} }
/** /**
@ -168,7 +168,7 @@ final class LawPermissionChecker implements LawPermissionCheckerInterface
public function hasPermission(RightInterface $clientRight): bool public function hasPermission(RightInterface $clientRight): bool
{ {
$rights = clone $this->law->getRights(); $rights = clone $this->law->getRights();
$rights = $this->getRightsByCrud($rights, $clientRight->getCrud()); $rights = $this->getRightsByActionType($rights, $clientRight->getActionType());
$rights = $this->getRightsByLayer($rights, $clientRight->getLayer()); $rights = $this->getRightsByLayer($rights, $clientRight->getLayer());
$rights = $this->getRightsByReciever($rights, $clientRight); $rights = $this->getRightsByReciever($rights, $clientRight);
$rights = $this->sortByPriority($rights); $rights = $this->sortByPriority($rights);

View File

@ -51,7 +51,7 @@ class RequestedAction extends RequestedUser implements RequestedActionInterface
private function setRequestedRightCrudType(string $actionType): void private function setRequestedRightCrudType(string $actionType): void
{ {
$crudType = $this->getCrudType($actionType); $crudType = $this->getCrudType($actionType);
$this->requestedRight->setCrud($crudType); $this->requestedRight->setActionType($crudType);
} }
/** /**

View File

@ -78,21 +78,21 @@ abstract class AbstractRequestedRightFacade implements RequestedRightInterface
/** /**
* {@inheritdoc} * {@inheritdoc}
* *
* @see \Infinito\Attribut\CrudAttributInterface::setCrud() * @see \Infinito\Attribut\ActionTypeAttributInterface::setActionType()
*/ */
public function setCrud(string $crud): void public function setActionType(string $actionType): void
{ {
$this->requestedRight->setCrud($crud); $this->requestedRight->setActionType($actionType);
} }
/** /**
* {@inheritdoc} * {@inheritdoc}
* *
* @see \Infinito\Attribut\CrudAttributInterface::getCrud() * @see \Infinito\Attribut\ActionTypeAttributInterface::getActionType()
*/ */
public function getCrud(): string public function getActionType(): string
{ {
return $this->requestedRight->getCrud(); return $this->requestedRight->getActionType();
} }
/** /**

View File

@ -3,7 +3,6 @@
namespace Infinito\Domain\RequestManagement\Right; namespace Infinito\Domain\RequestManagement\Right;
use Infinito\Entity\Source\SourceInterface; use Infinito\Entity\Source\SourceInterface;
use Infinito\Attribut\CrudAttribut;
use Infinito\Attribut\LayerAttribut; use Infinito\Attribut\LayerAttribut;
use Infinito\Attribut\RecieverAttribut; use Infinito\Attribut\RecieverAttribut;
use Infinito\Exception\PreconditionFailedException; use Infinito\Exception\PreconditionFailedException;
@ -12,6 +11,7 @@ use Infinito\Attribut\RequestedEntityAttribut;
use Infinito\Entity\Meta\MetaInterface; use Infinito\Entity\Meta\MetaInterface;
use Infinito\Exception\NotCorrectInstanceException; use Infinito\Exception\NotCorrectInstanceException;
use Infinito\Domain\RequestManagement\Entity\RequestedEntity; use Infinito\Domain\RequestManagement\Entity\RequestedEntity;
use Infinito\Attribut\ActionTypeAttribut;
/** /**
* @author kevinfrantz * @author kevinfrantz
@ -20,7 +20,7 @@ use Infinito\Domain\RequestManagement\Entity\RequestedEntity;
*/ */
class RequestedRight implements RequestedRightInterface class RequestedRight implements RequestedRightInterface
{ {
use CrudAttribut, LayerAttribut, RecieverAttribut, RequestedEntityAttribut; use ActionTypeAttribut, LayerAttribut, RecieverAttribut, RequestedEntityAttribut;
/** /**
* @var SourceInterface * @var SourceInterface

View File

@ -2,16 +2,16 @@
namespace Infinito\Domain\RequestManagement\Right; namespace Infinito\Domain\RequestManagement\Right;
use Infinito\Attribut\CrudAttributInterface;
use Infinito\Attribut\RecieverAttributInterface; use Infinito\Attribut\RecieverAttributInterface;
use Infinito\Attribut\LayerAttributInterface; use Infinito\Attribut\LayerAttributInterface;
use Infinito\Entity\Source\SourceInterface; use Infinito\Entity\Source\SourceInterface;
use Infinito\Attribut\RequestedEntityAttributInterface; use Infinito\Attribut\RequestedEntityAttributInterface;
use Infinito\Attribut\ActionTypeAttributInterface;
/** /**
* @author kevinfrantz * @author kevinfrantz
*/ */
interface RequestedRightInterface extends CrudAttributInterface, RecieverAttributInterface, LayerAttributInterface, RequestedEntityAttributInterface interface RequestedRightInterface extends ActionTypeAttributInterface, RecieverAttributInterface, LayerAttributInterface, RequestedEntityAttributInterface
{ {
/** /**
* {@inheritdoc} * {@inheritdoc}

View File

@ -60,7 +60,7 @@ final class RightChecker implements RightCheckerInterface
*/ */
private function isTypeEqual(string $type): bool private function isTypeEqual(string $type): bool
{ {
return $this->right->getCrud() === $type; return $this->right->getActionType() === $type;
} }
/** /**

View File

@ -2,7 +2,6 @@
namespace Infinito\Entity\Meta; namespace Infinito\Entity\Meta;
use Infinito\Attribut\CrudAttribut;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Fresh\DoctrineEnumBundle\Validator\Constraints as DoctrineAssert; use Fresh\DoctrineEnumBundle\Validator\Constraints as DoctrineAssert;
use Infinito\Attribut\LawAttribut; use Infinito\Attribut\LawAttribut;
@ -14,6 +13,7 @@ use Infinito\Attribut\LayerAttribut;
use Infinito\Attribut\RelationAttribut; use Infinito\Attribut\RelationAttribut;
use Infinito\Attribut\PriorityAttribut; use Infinito\Attribut\PriorityAttribut;
use Infinito\Entity\Source\SourceInterface; use Infinito\Entity\Source\SourceInterface;
use Infinito\Attribut\ActionTypeAttribut;
/** /**
* @todo Remove relation attribut! * @todo Remove relation attribut!
@ -24,7 +24,7 @@ use Infinito\Entity\Source\SourceInterface;
*/ */
class Right extends AbstractMeta implements RightInterface class Right extends AbstractMeta implements RightInterface
{ {
use CrudAttribut,LawAttribut, RelationAttribut, GrantAttribut,ConditionAttribut,RecieverAttribut,LayerAttribut,PriorityAttribut; use ActionTypeAttribut,LawAttribut, RelationAttribut, GrantAttribut,ConditionAttribut,RecieverAttribut,LayerAttribut,PriorityAttribut;
/** /**
* @ORM\OneToOne(targetEntity="Infinito\Entity\Source\AbstractSource",cascade={"persist", "remove"}) * @ORM\OneToOne(targetEntity="Infinito\Entity\Source\AbstractSource",cascade={"persist", "remove"})
@ -74,12 +74,12 @@ class Right extends AbstractMeta implements RightInterface
protected $grant; protected $grant;
/** /**
* @ORM\Column(name="crud", type="CRUDType", nullable=false) * @ORM\Column(name="action", type="ActionType", nullable=false)
* @DoctrineAssert\Enum(entity="Infinito\DBAL\Types\Meta\Right\CRUDType") * @DoctrineAssert\Enum(entity="Infinito\DBAL\Types\ActionType")
* *
* @var string * @var string
*/ */
protected $crud; protected $actionType;
/** /**
* @ORM\OneToOne(targetEntity="Infinito\Entity\Source\Operation\AbstractOperation",cascade={"persist"}) * @ORM\OneToOne(targetEntity="Infinito\Entity\Source\Operation\AbstractOperation",cascade={"persist"})

View File

@ -2,7 +2,6 @@
namespace Infinito\Entity\Meta; namespace Infinito\Entity\Meta;
use Infinito\Attribut\CrudAttributInterface;
use Infinito\Attribut\LawAttributInterface; use Infinito\Attribut\LawAttributInterface;
use Infinito\Attribut\RecieverAttributInterface; use Infinito\Attribut\RecieverAttributInterface;
use Infinito\Attribut\GrantAttributInterface; use Infinito\Attribut\GrantAttributInterface;
@ -10,10 +9,11 @@ use Infinito\Attribut\ConditionAttributInterface;
use Infinito\Attribut\LayerAttributInterface; use Infinito\Attribut\LayerAttributInterface;
use Infinito\Attribut\RelationAttributInterface; use Infinito\Attribut\RelationAttributInterface;
use Infinito\Attribut\PriorityAttributInterface; use Infinito\Attribut\PriorityAttributInterface;
use Infinito\Attribut\ActionTypeAttributInterface;
/** /**
* @author kevinfrantz * @author kevinfrantz
*/ */
interface RightInterface extends CrudAttributInterface, LawAttributInterface, GrantAttributInterface, RecieverAttributInterface, RelationAttributInterface, ConditionAttributInterface, LayerAttributInterface, MetaInterface, PriorityAttributInterface interface RightInterface extends ActionTypeAttributInterface, LawAttributInterface, GrantAttributInterface, RecieverAttributInterface, RelationAttributInterface, ConditionAttributInterface, LayerAttributInterface, MetaInterface, PriorityAttributInterface
{ {
} }

View File

@ -8,6 +8,7 @@ use Symfony\Component\Translation\TranslatorInterface;
use Knp\Menu\ItemInterface; use Knp\Menu\ItemInterface;
use Infinito\Event\Menu\MenuEvent; use Infinito\Event\Menu\MenuEvent;
use Infinito\DBAL\Types\MenuEventType; use Infinito\DBAL\Types\MenuEventType;
use Infinito\Domain\FixtureManagement\FixtureSource\ImpressumFixtureSource;
class UserMenuSubscriber implements EventSubscriberInterface class UserMenuSubscriber implements EventSubscriberInterface
{ {
@ -27,6 +28,9 @@ class UserMenuSubscriber implements EventSubscriberInterface
$this->translator = $translator; $this->translator = $translator;
} }
/**
* @param MenuEvent $event
*/
public function onUserMenuConfigure(MenuEvent $event): void public function onUserMenuConfigure(MenuEvent $event): void
{ {
$menu = $event->getItem(); $menu = $event->getItem();
@ -38,7 +42,7 @@ class UserMenuSubscriber implements EventSubscriberInterface
]); ]);
$menu->addChild($this->translator->trans('imprint'), [ $menu->addChild($this->translator->trans('imprint'), [
'route' => 'imprint', 'uri' => 'rest/api/source/'.strtolower(ImpressumFixtureSource::SLUG).'.html',
'attributes' => [ 'attributes' => [
'icon' => 'fas fa-address-card', 'icon' => 'fas fa-address-card',
], ],

View File

@ -30,7 +30,7 @@ class RequestedRightServiceIntegrationTest extends KernelTestCase
public function testClassAccessors(): void public function testClassAccessors(): void
{ {
$crud = CRUDType::READ; $crud = CRUDType::READ;
$this->assertNull($this->requestedRightService->setCrud($crud)); $this->assertNull($this->requestedRightService->setActionType($crud));
$this->assertEquals($crud, $this->requestedRightService->getCrud()); $this->assertEquals($crud, $this->requestedRightService->getActionType());
} }
} }

View File

@ -30,7 +30,7 @@ class RequestedUserServiceIntegrationTest extends KernelTestCase
public function testCrudAccessors(): void public function testCrudAccessors(): void
{ {
$crud = CRUDType::READ; $crud = CRUDType::READ;
$this->assertNull($this->requestedUserService->setCrud($crud)); $this->assertNull($this->requestedUserService->setActionType($crud));
$this->assertEquals($crud, $this->requestedUserService->getCrud()); $this->assertEquals($crud, $this->requestedUserService->getActionType());
} }
} }

View File

@ -38,11 +38,11 @@ class SecureRequestedRightCheckerServiceIntegrationTest extends KernelTestCase
$right = new Right(); $right = new Right();
$right->setSource($source); $right->setSource($source);
$right->setLayer($layer); $right->setLayer($layer);
$right->setCrud($crud); $right->setActionType($crud);
$right->setReciever($reciever); $right->setReciever($reciever);
$source->getLaw()->getRights()->add($right); $source->getLaw()->getRights()->add($right);
$requestedRight = new RequestedRight(); $requestedRight = new RequestedRight();
$requestedRight->setCrud($crud); $requestedRight->setActionType($crud);
$requestedRight->setLayer($layer); $requestedRight->setLayer($layer);
$requestedRight->setReciever($reciever); $requestedRight->setReciever($reciever);
$requestedEntity = $this->createMock(RequestedEntityInterface::class); $requestedEntity = $this->createMock(RequestedEntityInterface::class);
@ -64,11 +64,11 @@ class SecureRequestedRightCheckerServiceIntegrationTest extends KernelTestCase
$right = new Right(); $right = new Right();
$right->setSource($source); $right->setSource($source);
$right->setLayer($layer); $right->setLayer($layer);
$right->setCrud(CRUDType::CREATE); $right->setActionType(CRUDType::CREATE);
$right->setReciever($reciever); $right->setReciever($reciever);
$source->getLaw()->getRights()->add($right); $source->getLaw()->getRights()->add($right);
$requestedRight = new RequestedRight(); $requestedRight = new RequestedRight();
$requestedRight->setCrud($crud); $requestedRight->setActionType($crud);
$requestedRight->setLayer($layer); $requestedRight->setLayer($layer);
$requestedRight->setReciever($reciever); $requestedRight->setReciever($reciever);
$requestedEntity = $this->createMock(RequestedEntityInterface::class); $requestedEntity = $this->createMock(RequestedEntityInterface::class);

View File

@ -59,7 +59,7 @@ class RightRepositoryIntegrationTest extends KernelTestCase
$this->right = new Right(); $this->right = new Right();
$this->right->setPriority(self::PRIORITY); $this->right->setPriority(self::PRIORITY);
$this->right->setLayer(LayerType::SOURCE); $this->right->setLayer(LayerType::SOURCE);
$this->right->setCrud(CRUDType::READ); $this->right->setActionType(CRUDType::READ);
$this->law = new Law(); $this->law = new Law();
$this->entityManager->persist($this->law); $this->entityManager->persist($this->law);
} }

View File

@ -4,6 +4,7 @@ namespace Infinito\Tests\Unit\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Infinito\Controller\DefaultController; use Infinito\Controller\DefaultController;
use Infinito\DBAL\Types\RESTResponseType;
/** /**
* @author kevinfrantz * @author kevinfrantz
@ -30,7 +31,11 @@ class DefaultControllerTest extends WebTestCase
public function testImprint(): void public function testImprint(): void
{ {
$client = static::createClient(); $client = static::createClient();
$client->request('GET', '/imprint'); // foreach(RESTResponseType::getChoices() as $format){
$this->assertEquals(200, $client->getResponse()->getStatusCode()); $format = 'html';
$url = 'api/rest/source/imprint.'.$format;
$client->request('GET', $url);
$this->assertEquals(200, $client->getResponse()->getStatusCode(), "Route $url is not reachable.");
// }
} }
} }

View File

@ -87,7 +87,7 @@ class LawPermissionCheckerTest extends TestCase
{ {
$this->clientRight = new Right(); $this->clientRight = new Right();
$this->clientRight->setLayer(LayerType::SOURCE); $this->clientRight->setLayer(LayerType::SOURCE);
$this->clientRight->setCrud(CRUDType::READ); $this->clientRight->setActionType(CRUDType::READ);
$this->clientRight->setReciever($this->clientSource); $this->clientRight->setReciever($this->clientSource);
$this->clientRight->setSource($this->source); $this->clientRight->setSource($this->source);
} }
@ -107,7 +107,7 @@ class LawPermissionCheckerTest extends TestCase
{ {
$this->law->getRights()->add($this->getClonedClientRight()); $this->law->getRights()->add($this->getClonedClientRight());
$this->assertTrue($this->checkClientPermission()); $this->assertTrue($this->checkClientPermission());
$this->clientRight->setCrud(CRUDType::UPDATE); $this->clientRight->setActionType(CRUDType::UPDATE);
$this->assertFalse($this->checkClientPermission()); $this->assertFalse($this->checkClientPermission());
} }
@ -142,10 +142,10 @@ class LawPermissionCheckerTest extends TestCase
public function testGetRightsByType(): void public function testGetRightsByType(): void
{ {
$right = $this->getClonedClientRight(); $right = $this->getClonedClientRight();
$right->setCrud(CRUDType::UPDATE); $right->setActionType(CRUDType::UPDATE);
$this->law->getRights()->add($right); $this->law->getRights()->add($right);
$this->assertFalse($this->checkClientPermission()); $this->assertFalse($this->checkClientPermission());
$right->setCrud(CRUDType::READ); $right->setActionType(CRUDType::READ);
$this->assertTrue($this->checkClientPermission()); $this->assertTrue($this->checkClientPermission());
} }
@ -209,13 +209,13 @@ class LawPermissionCheckerTest extends TestCase
$clientSource = new PureSource(); $clientSource = new PureSource();
$clientRight = new Right(); $clientRight = new Right();
$clientRight->setLayer(LayerType::SOURCE); $clientRight->setLayer(LayerType::SOURCE);
$clientRight->setCrud(CRUDType::READ); $clientRight->setActionType(CRUDType::READ);
$clientRight->setSource($this->source); $clientRight->setSource($this->source);
$clientRight->setReciever($clientSource); $clientRight->setReciever($clientSource);
$this->assertFalse($this->lawPermissionChecker->hasPermission($clientRight)); $this->assertFalse($this->lawPermissionChecker->hasPermission($clientRight));
$right = new Right(); $right = new Right();
$right->setLayer(LayerType::SOURCE); $right->setLayer(LayerType::SOURCE);
$right->setCrud(CRUDType::READ); $right->setActionType(CRUDType::READ);
$right->setSource($this->source); $right->setSource($this->source);
$this->law->getRights()->add($right); $this->law->getRights()->add($right);
$this->assertTrue($this->lawPermissionChecker->hasPermission($clientRight)); $this->assertTrue($this->lawPermissionChecker->hasPermission($clientRight));

View File

@ -52,7 +52,7 @@ class RequestedActionTest extends TestCase
$list = ActionType::EXECUTE; $list = ActionType::EXECUTE;
$this->action->setActionType($list); $this->action->setActionType($list);
$this->assertEquals($list, $this->action->getActionType()); $this->assertEquals($list, $this->action->getActionType());
$this->assertEquals(CRUDType::READ, $this->requestedRight->getCrud()); $this->assertEquals(CRUDType::READ, $this->requestedRight->getActionType());
} }
public function testCrud(): void public function testCrud(): void
@ -60,7 +60,7 @@ class RequestedActionTest extends TestCase
foreach (CRUDType::getChoices() as $crud) { foreach (CRUDType::getChoices() as $crud) {
$this->action->setActionType($crud); $this->action->setActionType($crud);
$this->assertEquals($crud, $this->action->getActionType()); $this->assertEquals($crud, $this->action->getActionType());
$this->assertEquals($crud, $this->requestedRight->getCrud()); $this->assertEquals($crud, $this->requestedRight->getActionType());
} }
} }

View File

@ -43,7 +43,7 @@ class AbstractRequestedRightFacadeTest extends TestCase
$reciever = $this->createMock(AbstractSource::class); $reciever = $this->createMock(AbstractSource::class);
$requestedRight = $this->createMock(RequestedRightInterface::class); $requestedRight = $this->createMock(RequestedRightInterface::class);
$requestedRight->method('getLayer')->willReturn($layer); $requestedRight->method('getLayer')->willReturn($layer);
$requestedRight->method('getCrud')->willReturn($type); $requestedRight->method('getActionType')->willReturn($type);
$requestedRight->method('getSource')->willReturn($source); $requestedRight->method('getSource')->willReturn($source);
$requestedRight->method('getReciever')->willReturn($reciever); $requestedRight->method('getReciever')->willReturn($reciever);
$requestedRight->method('getRequestedEntity')->willReturn($requestedEntity); $requestedRight->method('getRequestedEntity')->willReturn($requestedEntity);
@ -51,7 +51,7 @@ class AbstractRequestedRightFacadeTest extends TestCase
$requestedRight->method('hasReciever')->willReturn(true); $requestedRight->method('hasReciever')->willReturn(true);
$requestedRightFacade = $this->getRequestedRightFacade($requestedRight); $requestedRightFacade = $this->getRequestedRightFacade($requestedRight);
$this->assertEquals($layer, $requestedRightFacade->getLayer()); $this->assertEquals($layer, $requestedRightFacade->getLayer());
$this->assertEquals($type, $requestedRightFacade->getCrud()); $this->assertEquals($type, $requestedRightFacade->getActionType());
$this->assertEquals($source, $requestedRightFacade->getSource()); $this->assertEquals($source, $requestedRightFacade->getSource());
$this->assertEquals($reciever, $requestedRightFacade->getReciever()); $this->assertEquals($reciever, $requestedRightFacade->getReciever());
$this->assertEquals($requestedEntity, $requestedRightFacade->getRequestedEntity()); $this->assertEquals($requestedEntity, $requestedRightFacade->getRequestedEntity());
@ -70,11 +70,11 @@ class AbstractRequestedRightFacadeTest extends TestCase
$requestedRight = new RequestedRight(); $requestedRight = new RequestedRight();
$requestedRightFacade = $this->getRequestedRightFacade($requestedRight); $requestedRightFacade = $this->getRequestedRightFacade($requestedRight);
$this->assertNull($requestedRightFacade->setLayer($layer)); $this->assertNull($requestedRightFacade->setLayer($layer));
$this->assertNull($requestedRightFacade->setCrud($type)); $this->assertNull($requestedRightFacade->setActionType($type));
$this->assertNull($requestedRightFacade->setRequestedEntity($requestedEntity)); $this->assertNull($requestedRightFacade->setRequestedEntity($requestedEntity));
$this->assertNull($requestedRightFacade->setReciever($reciever)); $this->assertNull($requestedRightFacade->setReciever($reciever));
$this->assertEquals($layer, $requestedRight->getLayer()); $this->assertEquals($layer, $requestedRight->getLayer());
$this->assertEquals($type, $requestedRight->getCrud()); $this->assertEquals($type, $requestedRight->getActionType());
$this->assertEquals($requestedEntity, $requestedRight->getRequestedEntity()); $this->assertEquals($requestedEntity, $requestedRight->getRequestedEntity());
$this->assertEquals($reciever, $requestedRight->getReciever()); $this->assertEquals($reciever, $requestedRight->getReciever());
$this->assertTrue($requestedRight->hasReciever()); $this->assertTrue($requestedRight->hasReciever());

View File

@ -44,11 +44,11 @@ class RequestedUserTest extends TestCase
$userSourceDirector->method('getUser')->willReturn($user); $userSourceDirector->method('getUser')->willReturn($user);
$requestedRight = $this->createMock(RequestedRightInterface::class); $requestedRight = $this->createMock(RequestedRightInterface::class);
$requestedRight->method('getLayer')->willReturn($layer); $requestedRight->method('getLayer')->willReturn($layer);
$requestedRight->method('getCrud')->willReturn($type); $requestedRight->method('getActionType')->willReturn($type);
$requestedRight->method('getSource')->willReturn($source); $requestedRight->method('getSource')->willReturn($source);
$requestedUserRightFacade = new RequestedUser($userSourceDirector, $requestedRight); $requestedUserRightFacade = new RequestedUser($userSourceDirector, $requestedRight);
$this->assertEquals($layer, $requestedUserRightFacade->getLayer()); $this->assertEquals($layer, $requestedUserRightFacade->getLayer());
$this->assertEquals($type, $requestedUserRightFacade->getCrud()); $this->assertEquals($type, $requestedUserRightFacade->getActionType());
$this->assertEquals($source, $requestedUserRightFacade->getSource()); $this->assertEquals($source, $requestedUserRightFacade->getSource());
$this->assertEquals($reciever, $requestedUserRightFacade->getReciever()); $this->assertEquals($reciever, $requestedUserRightFacade->getReciever());
} }
@ -66,10 +66,10 @@ class RequestedUserTest extends TestCase
$userSourceDirector = new UserSourceDirector($sourceRepository, $user); $userSourceDirector = new UserSourceDirector($sourceRepository, $user);
$requestedUserRightFacade = new RequestedUser($userSourceDirector, $requestedRight); $requestedUserRightFacade = new RequestedUser($userSourceDirector, $requestedRight);
$this->assertNull($requestedUserRightFacade->setLayer($layer)); $this->assertNull($requestedUserRightFacade->setLayer($layer));
$this->assertNull($requestedUserRightFacade->setCrud($type)); $this->assertNull($requestedUserRightFacade->setActionType($type));
$this->assertNull($requestedUserRightFacade->setRequestedEntity($requestedSource)); $this->assertNull($requestedUserRightFacade->setRequestedEntity($requestedSource));
$this->assertEquals($layer, $requestedRight->getLayer()); $this->assertEquals($layer, $requestedRight->getLayer());
$this->assertEquals($type, $requestedRight->getCrud()); $this->assertEquals($type, $requestedRight->getActionType());
$this->expectException(NotCorrectInstanceException::class); $this->expectException(NotCorrectInstanceException::class);
$this->assertNotInstanceOf(RequestedEntityInterface::class, $requestedRight->getSource()); $this->assertNotInstanceOf(RequestedEntityInterface::class, $requestedRight->getSource());
} }

View File

@ -49,7 +49,7 @@ class RightCheckerTest extends TestCase
$this->source = new PureSource(); $this->source = new PureSource();
$this->right = new Right(); $this->right = new Right();
$this->right->setReciever($this->source); $this->right->setReciever($this->source);
$this->right->setCrud($this->type); $this->right->setActionType($this->type);
$this->right->setLayer($this->layer); $this->right->setLayer($this->layer);
$this->rightManager = new RightChecker($this->right); $this->rightManager = new RightChecker($this->right);
} }

View File

@ -26,13 +26,13 @@ class RightTransformerServiceTest extends TestCase
$requestedEntity->method('getEntity')->willReturn($source); $requestedEntity->method('getEntity')->willReturn($source);
$requestedEntity->method('hasRequestedRight')->willReturn(true); $requestedEntity->method('hasRequestedRight')->willReturn(true);
$requestedRight = new RequestedRight(); $requestedRight = new RequestedRight();
$requestedRight->setCrud($crud); $requestedRight->setActionType($crud);
$requestedRight->setLayer($layer); $requestedRight->setLayer($layer);
$requestedRight->setRequestedEntity($requestedEntity); $requestedRight->setRequestedEntity($requestedEntity);
$requestedRight->setReciever($reciever); $requestedRight->setReciever($reciever);
$transformer = new RightTransformerService(); $transformer = new RightTransformerService();
$right = $transformer->transform($requestedRight); $right = $transformer->transform($requestedRight);
$this->assertEquals($crud, $right->getCrud()); $this->assertEquals($crud, $right->getActionType());
$this->assertEquals($layer, $right->getLayer()); $this->assertEquals($layer, $right->getLayer());
$this->assertEquals($reciever, $right->getReciever()); $this->assertEquals($reciever, $right->getReciever());
$this->assertEquals($source, $right->getSource()); $this->assertEquals($source, $right->getSource());

View File

@ -29,11 +29,11 @@ class SecureRequestedRightCheckerServiceTest extends TestCase
$right = new Right(); $right = new Right();
$right->setSource($source); $right->setSource($source);
$right->setLayer($layer); $right->setLayer($layer);
$right->setCrud($crud); $right->setActionType($crud);
$right->setReciever($reciever); $right->setReciever($reciever);
$source->getLaw()->getRights()->add($right); $source->getLaw()->getRights()->add($right);
$requestedRight = new RequestedRight(); $requestedRight = new RequestedRight();
$requestedRight->setCrud($crud); $requestedRight->setActionType($crud);
$requestedRight->setLayer($layer); $requestedRight->setLayer($layer);
$requestedRight->setReciever($reciever); $requestedRight->setReciever($reciever);
$requestedEntity = $this->createMock(RequestedEntityInterface::class); $requestedEntity = $this->createMock(RequestedEntityInterface::class);
@ -57,11 +57,11 @@ class SecureRequestedRightCheckerServiceTest extends TestCase
$right = new Right(); $right = new Right();
$right->setSource($source); $right->setSource($source);
$right->setLayer($layer); $right->setLayer($layer);
$right->setCrud(CRUDType::CREATE); $right->setActionType(CRUDType::CREATE);
$right->setReciever($reciever); $right->setReciever($reciever);
$source->getLaw()->getRights()->add($right); $source->getLaw()->getRights()->add($right);
$requestedRight = new RequestedRight(); $requestedRight = new RequestedRight();
$requestedRight->setCrud($crud); $requestedRight->setActionType($crud);
$requestedRight->setLayer($layer); $requestedRight->setLayer($layer);
$requestedRight->setReciever($reciever); $requestedRight->setReciever($reciever);
$requestedEntity = $this->createMock(RequestedEntityInterface::class); $requestedEntity = $this->createMock(RequestedEntityInterface::class);
@ -83,7 +83,7 @@ class SecureRequestedRightCheckerServiceTest extends TestCase
$source = new class() extends AbstractSource { $source = new class() extends AbstractSource {
}; };
$requestedRight = $this->createMock(RequestedRightInterface::class); $requestedRight = $this->createMock(RequestedRightInterface::class);
$requestedRight->method('getCrud')->willReturn($crud); $requestedRight->method('getActionType')->willReturn($crud);
$requestedRight->method('getLayer')->willReturn($layer); $requestedRight->method('getLayer')->willReturn($layer);
$requestedRight->method('getReciever')->willReturn($reciever); $requestedRight->method('getReciever')->willReturn($reciever);
$requestedRight->method('getSource')->willReturn($source); $requestedRight->method('getSource')->willReturn($source);
@ -91,7 +91,7 @@ class SecureRequestedRightCheckerServiceTest extends TestCase
$secureEntityChecker = new SecureRequestedRightCheckerService($rightTransformerService); $secureEntityChecker = new SecureRequestedRightCheckerService($rightTransformerService);
$this->assertFalse($secureEntityChecker->check($requestedRight)); $this->assertFalse($secureEntityChecker->check($requestedRight));
$right = new Right(); $right = new Right();
$right->setCrud($crud); $right->setActionType($crud);
$right->setLayer($layer); $right->setLayer($layer);
$right->setSource($source); $right->setSource($source);
$source->getLaw()->getRights()->add($right); $source->getLaw()->getRights()->add($right);

View File

@ -34,6 +34,9 @@ class SecureSourceCheckerTest extends TestCase
*/ */
private $securerSourceChecker; private $securerSourceChecker;
/**
* @return SourceInterface
*/
private function createSourceMock(): SourceInterface private function createSourceMock(): SourceInterface
{ {
return new class() extends AbstractSource implements SourceAttributInterface { return new class() extends AbstractSource implements SourceAttributInterface {
@ -52,13 +55,13 @@ class SecureSourceCheckerTest extends TestCase
{ {
$right = new Right(); $right = new Right();
$right->setLayer(LayerType::SOURCE); $right->setLayer(LayerType::SOURCE);
$right->setCrud(CRUDType::UPDATE); $right->setActionType(CRUDType::UPDATE);
$right->setReciever($this->recieverSource); $right->setReciever($this->recieverSource);
$right->setSource($this->source); $right->setSource($this->source);
$this->source->getLaw()->getRights()->add($right); $this->source->getLaw()->getRights()->add($right);
$requestedRight = clone $right; $requestedRight = clone $right;
$this->assertTrue($this->securerSourceChecker->hasPermission($requestedRight)); $this->assertTrue($this->securerSourceChecker->hasPermission($requestedRight));
$requestedRight->setCrud(CRUDType::READ); $requestedRight->setActionType(CRUDType::READ);
$this->assertFalse($this->securerSourceChecker->hasPermission($requestedRight)); $this->assertFalse($this->securerSourceChecker->hasPermission($requestedRight));
} }
@ -66,7 +69,7 @@ class SecureSourceCheckerTest extends TestCase
{ {
$right = new Right(); $right = new Right();
$right->setLayer(LayerType::SOURCE); $right->setLayer(LayerType::SOURCE);
$right->setCrud(CRUDType::UPDATE); $right->setActionType(CRUDType::UPDATE);
$right->setReciever($this->recieverSource); $right->setReciever($this->recieverSource);
$right->setSource($this->source); $right->setSource($this->source);
$this->source->getLaw()->getRights()->add($right); $this->source->getLaw()->getRights()->add($right);
@ -76,7 +79,7 @@ class SecureSourceCheckerTest extends TestCase
$this->source->setSource($attributSource); $this->source->setSource($attributSource);
$requestedRight = clone $right; $requestedRight = clone $right;
$this->assertTrue($this->securerSourceChecker->hasPermission($requestedRight)); $this->assertTrue($this->securerSourceChecker->hasPermission($requestedRight));
$childRight->setCrud(CRUDType::READ); $childRight->setActionType(CRUDType::READ);
$this->expectException(SourceAccessDenied::class); $this->expectException(SourceAccessDenied::class);
$this->securerSourceChecker->hasPermission($requestedRight); $this->securerSourceChecker->hasPermission($requestedRight);
} }
@ -85,7 +88,7 @@ class SecureSourceCheckerTest extends TestCase
{ {
$right = new Right(); $right = new Right();
$right->setLayer(LayerType::SOURCE); $right->setLayer(LayerType::SOURCE);
$right->setCrud(CRUDType::UPDATE); $right->setActionType(CRUDType::UPDATE);
$right->setReciever($this->recieverSource); $right->setReciever($this->recieverSource);
$right->setSource($this->source); $right->setSource($this->source);
$this->source->getLaw()->getRights()->add($right); $this->source->getLaw()->getRights()->add($right);
@ -98,7 +101,7 @@ class SecureSourceCheckerTest extends TestCase
$attribut1Source->setSource($attribut2Source); $attribut1Source->setSource($attribut2Source);
$requestedRight = clone $right; $requestedRight = clone $right;
$this->assertTrue($this->securerSourceChecker->hasPermission($requestedRight)); $this->assertTrue($this->securerSourceChecker->hasPermission($requestedRight));
$childRight->setCrud(CRUDType::READ); $childRight->setActionType(CRUDType::READ);
$this->expectException(SourceAccessDenied::class); $this->expectException(SourceAccessDenied::class);
$this->securerSourceChecker->hasPermission($requestedRight); $this->securerSourceChecker->hasPermission($requestedRight);
} }
@ -107,13 +110,13 @@ class SecureSourceCheckerTest extends TestCase
{ {
$right = new Right(); $right = new Right();
$right->setLayer(LayerType::SOURCE); $right->setLayer(LayerType::SOURCE);
$right->setCrud(CRUDType::READ); $right->setActionType(CRUDType::READ);
$right->setReciever($this->recieverSource); $right->setReciever($this->recieverSource);
$right->setSource($this->source); $right->setSource($this->source);
$this->assertFalse($this->securerSourceChecker->hasPermission($right)); $this->assertFalse($this->securerSourceChecker->hasPermission($right));
$requestedRight = new Right(); $requestedRight = new Right();
$requestedRight->setLayer(LayerType::SOURCE); $requestedRight->setLayer(LayerType::SOURCE);
$requestedRight->setCrud(CRUDType::READ); $requestedRight->setActionType(CRUDType::READ);
$requestedRight->setSource($this->source); $requestedRight->setSource($this->source);
$this->source->getLaw()->getRights()->add($requestedRight); $this->source->getLaw()->getRights()->add($requestedRight);
$this->assertTrue($this->securerSourceChecker->hasPermission($right)); $this->assertTrue($this->securerSourceChecker->hasPermission($right));

View File

@ -61,7 +61,7 @@ class RightTest extends TestCase
public function testConstructorType(): void public function testConstructorType(): void
{ {
$this->expectException(\TypeError::class); $this->expectException(\TypeError::class);
$this->assertNull($this->right->getCrud()); $this->assertNull($this->right->getActionType());
} }
public function testLaw(): void public function testLaw(): void
@ -74,11 +74,11 @@ class RightTest extends TestCase
public function testRight(): void public function testRight(): void
{ {
foreach (CRUDType::getChoices() as $enum) { foreach (CRUDType::getChoices() as $enum) {
$this->assertNull($this->right->setCrud($enum)); $this->assertNull($this->right->setActionType($enum));
$this->assertEquals($enum, $this->right->getCrud()); $this->assertEquals($enum, $this->right->getActionType());
} }
$this->expectException(NoValidChoiceException::class); $this->expectException(NoValidChoiceException::class);
$this->right->setCrud('NoneValidType'); $this->right->setActionType('NoneValidType');
} }
public function testLayer(): void public function testLayer(): void
@ -104,13 +104,13 @@ class RightTest extends TestCase
$this->right->setSource($source); $this->right->setSource($source);
$this->right->setReciever($reciever); $this->right->setReciever($reciever);
$this->right->setGrant($grant); $this->right->setGrant($grant);
$this->right->setCrud($type); $this->right->setActionType($type);
$this->right->setLayer($layer); $this->right->setLayer($layer);
$rightClone = clone $this->right; $rightClone = clone $this->right;
$this->assertEquals($source, $rightClone->getSource()); $this->assertEquals($source, $rightClone->getSource());
$this->assertEquals($reciever, $rightClone->getReciever()); $this->assertEquals($reciever, $rightClone->getReciever());
$this->assertEquals($grant, $rightClone->getGrant()); $this->assertEquals($grant, $rightClone->getGrant());
$this->assertEquals($type, $rightClone->getCrud()); $this->assertEquals($type, $rightClone->getActionType());
$this->assertEquals($layer, $rightClone->getLayer()); $this->assertEquals($layer, $rightClone->getLayer());
} }
} }