- Renames router URL query parameter and router class

- Updates other classes to use the new name
- Updates unit tests
This commit is contained in:
Vlad
2016-08-25 09:49:32 -04:00
parent 6ff3bbbb72
commit 59d30cc139
9 changed files with 36 additions and 37 deletions

View File

@@ -1,7 +1,6 @@
<?php <?php
namespace MailPoet\Config; namespace MailPoet\Config;
use MailPoet\Models;
use MailPoet\Cron\CronTrigger; use MailPoet\Cron\CronTrigger;
use MailPoet\Router; use MailPoet\Router;
use MailPoet\API; use MailPoet\API;
@@ -122,7 +121,7 @@ class Initializer {
try { try {
$this->setupAPI(); $this->setupAPI();
$this->setupFrontRouter(); $this->setupRouter();
$this->setupPages(); $this->setupPages();
} catch(\Exception $e) { } catch(\Exception $e) {
$this->handleFailedInitialization($e); $this->handleFailedInitialization($e);
@@ -187,8 +186,8 @@ class Initializer {
$api->init(); $api->init();
} }
function setupFrontRouter() { function setupRouter() {
$router = new Router\Front(); $router = new Router\Router();
$router->init(); $router->init();
} }

View File

@@ -3,7 +3,7 @@ namespace MailPoet\Cron;
use MailPoet\Models\Setting; use MailPoet\Models\Setting;
use MailPoet\Router\Endpoints\Queue as QueueEndpoint; use MailPoet\Router\Endpoints\Queue as QueueEndpoint;
use MailPoet\Router\Front as FrontRouter; use MailPoet\Router\Router;
use MailPoet\Util\Security; use MailPoet\Util\Security;
if(!defined('ABSPATH')) exit; if(!defined('ABSPATH')) exit;
@@ -55,7 +55,7 @@ class CronHelper {
static function accessDaemon($token, $timeout = self::DAEMON_REQUEST_TIMEOUT) { static function accessDaemon($token, $timeout = self::DAEMON_REQUEST_TIMEOUT) {
$data = array('token' => $token); $data = array('token' => $token);
$url = FrontRouter::buildRequest( $url = Router::buildRequest(
QueueEndpoint::ENDPOINT, QueueEndpoint::ENDPOINT,
QueueEndpoint::ACTION_RUN, QueueEndpoint::ACTION_RUN,
$data $data

View File

@@ -2,7 +2,7 @@
namespace MailPoet\Newsletter\Links; namespace MailPoet\Newsletter\Links;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Router\Front as FrontRouter; use MailPoet\Router\Router;
use MailPoet\Router\Endpoints\Track as TrackEndpoint; use MailPoet\Router\Endpoints\Track as TrackEndpoint;
use MailPoet\Models\NewsletterLink; use MailPoet\Models\NewsletterLink;
use MailPoet\Newsletter\Shortcodes\Shortcodes; use MailPoet\Newsletter\Shortcodes\Shortcodes;
@@ -123,7 +123,7 @@ class Links {
$router_action = ($matches[2][$index] === self::DATA_TAG_CLICK) ? $router_action = ($matches[2][$index] === self::DATA_TAG_CLICK) ?
TrackEndpoint::ACTION_CLICK : TrackEndpoint::ACTION_CLICK :
TrackEndpoint::ACTION_OPEN; TrackEndpoint::ACTION_OPEN;
$link = FrontRouter::buildRequest( $link = Router::buildRequest(
TrackEndpoint::ENDPOINT, TrackEndpoint::ENDPOINT,
$router_action, $router_action,
$data $data

View File

@@ -1,9 +1,8 @@
<?php <?php
namespace MailPoet\Newsletter; namespace MailPoet\Newsletter;
use MailPoet\Models\Newsletter;
use MailPoet\Models\SendingQueue; use MailPoet\Models\SendingQueue;
use MailPoet\Router\Front as FrontRouter; use MailPoet\Router\Router;
use MailPoet\Router\Endpoints\ViewInBrowser as ViewInBrowserEndpoint; use MailPoet\Router\Endpoints\ViewInBrowser as ViewInBrowserEndpoint;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
@@ -44,7 +43,7 @@ class Url {
$queue, $queue,
'preview' => $preview 'preview' => $preview
); );
return FrontRouter::buildRequest( return Router::buildRequest(
ViewInBrowserEndpoint::ENDPOINT, ViewInBrowserEndpoint::ENDPOINT,
ViewInBrowserEndpoint::ACTION_VIEW, ViewInBrowserEndpoint::ACTION_VIEW,
$data $data

View File

@@ -5,12 +5,12 @@ use MailPoet\Util\Helpers;
if(!defined('ABSPATH')) exit; if(!defined('ABSPATH')) exit;
class Front { class Router {
public $api_request; public $api_request;
public $endpoint; public $endpoint;
public $action; public $action;
public $data; public $data;
const NAME = 'mailpoet_api'; const NAME = 'mailpoet_router';
const RESPONSE_ERROR = 404; const RESPONSE_ERROR = 404;
function __construct($api_data = false) { function __construct($api_data = false) {
@@ -35,7 +35,7 @@ class Front {
} }
$endpoint = new $endpoint_class($this->data); $endpoint = new $endpoint_class($this->data);
if(!method_exists($endpoint, $this->action) || !in_array($this->action, $endpoint->allowed_actions)) { if(!method_exists($endpoint, $this->action) || !in_array($this->action, $endpoint->allowed_actions)) {
return $this->terminateRequest(self::RESPONSE_ERROR, __('Invalid router action.')); return $this->terminateRequest(self::RESPONSE_ERROR, __('Invalid router endpoint action.'));
} }
return call_user_func( return call_user_func(
array( array(

View File

@@ -1,7 +1,7 @@
<?php <?php
namespace MailPoet\Subscription; namespace MailPoet\Subscription;
use MailPoet\Router\Front as FrontRouter; use MailPoet\Router\Router;
use MailPoet\Router\Endpoints\Subscription as SubscriptionEndpoint; use MailPoet\Router\Endpoints\Subscription as SubscriptionEndpoint;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Models\Setting; use MailPoet\Models\Setting;
@@ -45,10 +45,10 @@ class Url {
} }
$params = array( $params = array(
FrontRouter::NAME, Router::NAME,
'endpoint='.SubscriptionEndpoint::ENDPOINT, 'endpoint='.SubscriptionEndpoint::ENDPOINT,
'action='.$action, 'action='.$action,
'data='.FrontRouter::encodeRequestData($data) 'data='.Router::encodeRequestData($data)
); );
// add parameters // add parameters

View File

@@ -6,6 +6,7 @@ use MailPoet\Models\SendingQueue;
use MailPoet\Models\Setting; use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Newsletter\ViewInBrowser; use MailPoet\Newsletter\ViewInBrowser;
use MailPoet\Router\Router;
class ViewInBrowserTest extends MailPoetTest { class ViewInBrowserTest extends MailPoetTest {
function __construct() { function __construct() {
@@ -126,8 +127,8 @@ class ViewInBrowserTest extends MailPoetTest {
$this->queue, $this->queue,
$preview = true $preview = true
); );
expect($rendered_body)->regExp('/Hello, First/'); expect($rendered_body)->contains('Hello, First');
expect($rendered_body)->regExp('/mailpoet_api&endpoint=view_in_browser/'); expect($rendered_body)->contains(Router::NAME . '&endpoint=view_in_browser');
} }
function testItProcessesLinksWhenTrackingIsEnabled() { function testItProcessesLinksWhenTrackingIsEnabled() {
@@ -140,7 +141,7 @@ class ViewInBrowserTest extends MailPoetTest {
$queue, $queue,
$preview = true $preview = true
); );
expect($rendered_body)->regExp('/mailpoet_api&endpoint=track/'); expect($rendered_body)->contains(Router::NAME . '&endpoint=track');
} }
function _after() { function _after() {

View File

@@ -1,30 +1,30 @@
<?php <?php
use Codeception\Util\Stub; use Codeception\Util\Stub;
use MailPoet\Router\Front; use MailPoet\Router\Router;
require_once('FrontTestMockEndpoint.php'); require_once('RouterTestMockEndpoint.php');
class FrontTest extends MailPoetTest { class FrontRouterTest extends MailPoetTest {
public $router_data; public $router_data;
public $router; public $router;
function __construct() { function __construct() {
$this->router_data = array( $this->router_data = array(
'mailpoet_api' => '', Router::NAME => '',
'endpoint' => 'mock_endpoint', 'endpoint' => 'mock_endpoint',
'action' => 'test', 'action' => 'test',
'data' => base64_encode(serialize(array('data' => 'dummy data'))) 'data' => base64_encode(serialize(array('data' => 'dummy data')))
); );
$this->router = new Front($this->router_data); $this->router = new Router($this->router_data);
} }
function testItCanGetAPIDataFromGetRequest() { function testItCanGetAPIDataFromGetRequest() {
$data = array('data' => 'dummy data'); $data = array('data' => 'dummy data');
$url = 'http://example.com/?mailpoet_api&endpoint=view_in_browser&action=view&data=' $url = 'http://example.com/?' . Router::NAME . '&endpoint=view_in_browser&action=view&data='
. base64_encode(serialize($data)); . base64_encode(serialize($data));
parse_str(parse_url($url, PHP_URL_QUERY), $_GET); parse_str(parse_url($url, PHP_URL_QUERY), $_GET);
$router = new Front(); $router = new Router();
expect($router->api_request)->equals(true); expect($router->api_request)->equals(true);
expect($router->endpoint)->equals('viewInBrowser'); expect($router->endpoint)->equals('viewInBrowser');
expect($router->action)->equals('view'); expect($router->action)->equals('view');
@@ -33,9 +33,9 @@ class FrontTest extends MailPoetTest {
function testItContinuesExecutionWhenAPIRequestNotDetected() { function testItContinuesExecutionWhenAPIRequestNotDetected() {
$router_data = $this->router_data; $router_data = $this->router_data;
unset($router_data['mailpoet_api']); unset($router_data[Router::NAME]);
$router = Stub::construct( $router = Stub::construct(
new Front(), new Router(),
array($router_data) array($router_data)
); );
$result = $router->init(); $result = $router->init();
@@ -46,7 +46,7 @@ class FrontTest 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 Front(), new Router(),
array($router_data), array($router_data),
array( array(
'terminateRequest' => function($code, $error) { 'terminateRequest' => function($code, $error) {
@@ -70,7 +70,7 @@ class FrontTest 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 Front(), new Router(),
array($router_data), array($router_data),
array( array(
'terminateRequest' => function($code, $error) { 'terminateRequest' => function($code, $error) {
@@ -85,7 +85,7 @@ class FrontTest extends MailPoetTest {
expect($result)->equals( expect($result)->equals(
array( array(
404, 404,
'Invalid router action.' 'Invalid router endpoint action.'
) )
); );
} }
@@ -98,7 +98,7 @@ class FrontTest extends MailPoetTest {
function testItCanEncodeRequestData() { function testItCanEncodeRequestData() {
$data = array('data' => 'dummy data'); $data = array('data' => 'dummy data');
$result = Front::encodeRequestData($data); $result = Router::encodeRequestData($data);
expect($result)->equals( expect($result)->equals(
rtrim(base64_encode(serialize($data)), '=') rtrim(base64_encode(serialize($data)), '=')
); );
@@ -106,25 +106,25 @@ class FrontTest extends MailPoetTest {
function testItReturnsEmptyArrayWhenRequestDataIsAString() { function testItReturnsEmptyArrayWhenRequestDataIsAString() {
$encoded_data = 'test'; $encoded_data = 'test';
$result = Front::decodeRequestData($encoded_data); $result = Router::decodeRequestData($encoded_data);
expect($result)->equals(array()); expect($result)->equals(array());
} }
function testItCanDecodeRequestData() { function testItCanDecodeRequestData() {
$data = array('data' => 'dummy data'); $data = array('data' => 'dummy data');
$encoded_data = rtrim(base64_encode(serialize($data)), '='); $encoded_data = rtrim(base64_encode(serialize($data)), '=');
$result = Front::decodeRequestData($encoded_data); $result = Router::decodeRequestData($encoded_data);
expect($result)->equals($data); expect($result)->equals($data);
} }
function testItCanBuildRequest() { function testItCanBuildRequest() {
$data = array('data' => 'dummy data'); $data = array('data' => 'dummy data');
$encoded_data = rtrim(base64_encode(serialize($data)), '='); $encoded_data = rtrim(base64_encode(serialize($data)), '=');
$result = Front::buildRequest( $result = Router::buildRequest(
'mock_endpoint', 'mock_endpoint',
'test', 'test',
$data $data
); );
expect($result)->contains('?mailpoet_api&endpoint=mock_endpoint&action=test&data=' . $encoded_data); expect($result)->contains(Router::NAME . '&endpoint=mock_endpoint&action=test&data=' . $encoded_data);
} }
} }