Moves AccessControl intialization outside of Router to Initializer
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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() {
|
||||||
|
@@ -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) {
|
||||||
|
Reference in New Issue
Block a user