Moves AccessControl intialization outside of Router to Initializer

This commit is contained in:
Vlad
2017-08-24 13:56:17 -04:00
parent 7d9b4b31aa
commit af58814fe7
3 changed files with 18 additions and 18 deletions

View File

@@ -227,7 +227,7 @@ class Initializer {
} }
function setupRouter() { function setupRouter() {
$router = new Router\Router(); $router = new Router\Router($this->access_control);
$router->init(); $router->init();
} }

View File

@@ -16,7 +16,7 @@ class Router {
const RESPONSE_ERROR = 404; const RESPONSE_ERROR = 404;
const RESPONE_FORBIDDEN = 403; const RESPONE_FORBIDDEN = 403;
function __construct($api_data = false) { function __construct(AccessControl $access_control, $api_data = false) {
$api_data = ($api_data) ? $api_data : $_GET; $api_data = ($api_data) ? $api_data : $_GET;
$this->api_request = isset($api_data[self::NAME]); $this->api_request = isset($api_data[self::NAME]);
$this->endpoint = isset($api_data['endpoint']) ? $this->endpoint = isset($api_data['endpoint']) ?
@@ -28,7 +28,7 @@ class Router {
$this->data = isset($api_data['data']) ? $this->data = isset($api_data['data']) ?
self::decodeRequestData($api_data['data']) : self::decodeRequestData($api_data['data']) :
false; false;
$this->access_control = new AccessControl(); $this->access_control = $access_control;
} }
function init() { function init() {

View File

@@ -9,18 +9,18 @@ use MailPoet\Router\Router;
require_once('RouterTestMockEndpoint.php'); require_once('RouterTestMockEndpoint.php');
class RouterTest extends \MailPoetTest { class RouterTest extends \MailPoetTest {
public $access_control;
public $router_data; public $router_data;
public $router;
function __construct() { function _before() {
parent::__construct();
$this->router_data = array( $this->router_data = array(
Router::NAME => '', Router::NAME => '',
'endpoint' => 'router_test_mock_endpoint', 'endpoint' => 'router_test_mock_endpoint',
'action' => 'test', 'action' => 'test',
'data' => base64_encode(json_encode(array('data' => 'dummy data'))) 'data' => base64_encode(json_encode(array('data' => 'dummy data')))
); );
$this->router = new Router($this->router_data); $this->access_control = new AccessControl();
$this->router = new Router($this->access_control, $this->router_data);
} }
function testItCanGetAPIDataFromGetRequest() { function testItCanGetAPIDataFromGetRequest() {
@@ -28,7 +28,7 @@ class RouterTest extends \MailPoetTest {
$url = 'http://example.com/?' . Router::NAME . '&endpoint=view_in_browser&action=view&data=' $url = 'http://example.com/?' . Router::NAME . '&endpoint=view_in_browser&action=view&data='
. base64_encode(json_encode($data)); . base64_encode(json_encode($data));
parse_str(parse_url($url, PHP_URL_QUERY), $_GET); parse_str(parse_url($url, PHP_URL_QUERY), $_GET);
$router = new Router(); $router = new Router($this->access_control);
expect($router->api_request)->equals(true); expect($router->api_request)->equals(true);
expect($router->endpoint)->equals('viewInBrowser'); expect($router->endpoint)->equals('viewInBrowser');
expect($router->endpoint_action)->equals('view'); expect($router->endpoint_action)->equals('view');
@@ -39,8 +39,8 @@ class RouterTest extends \MailPoetTest {
$router_data = $this->router_data; $router_data = $this->router_data;
unset($router_data[Router::NAME]); unset($router_data[Router::NAME]);
$router = Stub::construct( $router = Stub::construct(
new Router(), '\MailPoet\Router\Router',
array($router_data) array($this->access_control, $router_data)
); );
$result = $router->init(); $result = $router->init();
expect($result)->null(); expect($result)->null();
@@ -50,8 +50,8 @@ class RouterTest extends \MailPoetTest {
$router_data = $this->router_data; $router_data = $this->router_data;
$router_data['endpoint'] = 'invalid_endpoint'; $router_data['endpoint'] = 'invalid_endpoint';
$router = Stub::construct( $router = Stub::construct(
new Router(), '\MailPoet\Router\Router',
array($router_data), array($this->access_control, $router_data),
array( array(
'terminateRequest' => function($code, $error) { 'terminateRequest' => function($code, $error) {
return array( return array(
@@ -74,8 +74,8 @@ class RouterTest extends \MailPoetTest {
$router_data = $this->router_data; $router_data = $this->router_data;
$router_data['action'] = 'invalid_action'; $router_data['action'] = 'invalid_action';
$router = Stub::construct( $router = Stub::construct(
new Router(), '\MailPoet\Router\Router',
array($router_data), array($this->access_control, $router_data),
array( array(
'terminateRequest' => function($code, $error) { 'terminateRequest' => function($code, $error) {
return array( return array(
@@ -132,8 +132,8 @@ class RouterTest extends \MailPoetTest {
function testItValidatesPermissionBeforeProcessingEndpointAction() { function testItValidatesPermissionBeforeProcessingEndpointAction() {
$router = Stub::construct( $router = Stub::construct(
new Router(), '\MailPoet\Router\Router',
array($this->router_data), array($this->access_control, $this->router_data),
array( array(
'validatePermissions' => function($action, $permissions) { 'validatePermissions' => function($action, $permissions) {
expect($action)->equals($this->router_data['action']); expect($action)->equals($this->router_data['action']);
@@ -154,8 +154,8 @@ class RouterTest extends \MailPoetTest {
function testItReturnsForbiddenResponseWhenPermissionFailsValidation() { function testItReturnsForbiddenResponseWhenPermissionFailsValidation() {
$router = Stub::construct( $router = Stub::construct(
new Router(), '\MailPoet\Router\Router',
array($this->router_data), array($this->access_control, $this->router_data),
array( array(
'validatePermissions' => false, 'validatePermissions' => false,
'terminateRequest' => function($code, $error) { 'terminateRequest' => function($code, $error) {