Implemented ActionManagement

This commit is contained in:
Kevin Frantz 2019-01-27 09:35:43 +01:00
parent 181872c41b
commit 7701bf86a8
3 changed files with 105 additions and 0 deletions

View File

@ -0,0 +1,51 @@
<?php
namespace App\Domain\ActionManagement;
use App\Domain\RequestManagement\Action\RequestedActionInterface;
use App\Domain\SecureManagement\SecureRequestedRightCheckerInterface;
/**
* @author kevinfrantz
*/
final class ActionService implements ActionServiceInterface
{
/**
* @var RequestedActionInterface
*/
private $requestedAction;
/**
* @var SecureRequestedRightCheckerInterface
*/
private $secureRequestedRightChecker;
/**
* @param RequestedActionInterface $requestedAction
*/
public function __construct(RequestedActionInterface $requestedAction, SecureRequestedRightCheckerInterface $secureRequestedRightChecker)
{
$this->requestedAction = $requestedAction;
$this->secureRequestedRightChecker = $secureRequestedRightChecker;
}
/**
* {@inheritdoc}
*
* @see \App\Domain\ActionManagement\ActionServiceInterface::getRequestedAction()
*/
public function getRequestedAction(): RequestedActionInterface
{
return $this->requestedAction;
}
/**
* {@inheritdoc}
*
* @see \App\Domain\ActionManagement\ActionServiceInterface::isRequestedActionSecure()
*/
public function isRequestedActionSecure(): bool
{
return $this->secureRequestedRightChecker->check($this->requestedAction);
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace App\Domain\ActionManagement;
use App\Domain\RequestManagement\Action\RequestedActionInterface;
/**
* This interface offers all classes for managing an Action.
*
* @author kevinfrantz
*/
interface ActionServiceInterface
{
/**
* @return RequestedActionInterface Returns the requested action
*/
public function getRequestedAction(): RequestedActionInterface;
/**
* @return bool true if the action permissions are right
*/
public function isRequestedActionSecure(): bool;
}

View File

@ -0,0 +1,31 @@
<?php
namespace tests\Unit\Domain\ActionManagement;
use PHPUnit\Framework\TestCase;
use App\Domain\ActionManagement\ActionService;
use App\Domain\RequestManagement\Action\RequestedActionInterface;
use App\Domain\SecureManagement\SecureRequestedRightCheckerInterface;
/**
* @author kevinfrantz
*/
class ActionServiceTest extends TestCase
{
public function testIsRequestedActionSecure()
{
$requestedAction = $this->createMock(RequestedActionInterface::class);
$secureRequestedRightChecker = $this->createMock(SecureRequestedRightCheckerInterface::class);
$secureRequestedRightChecker->method('check')->willReturn(true);
$actionService = new ActionService($requestedAction, $secureRequestedRightChecker);
$this->assertTrue($actionService->isRequestedActionSecure());
}
public function testRequestedActionGetter()
{
$requestedAction = $this->createMock(RequestedActionInterface::class);
$secureRequestedRightChecker = $this->createMock(SecureRequestedRightCheckerInterface::class);
$actionService = new ActionService($requestedAction, $secureRequestedRightChecker);
$this->assertInstanceOf(RequestedActionInterface::class, $actionService->getRequestedAction());
}
}