Validates ping response when displaying cron URL status
This commit is contained in:
@ -438,7 +438,7 @@ class Menu {
|
|||||||
$system_status_data = array(
|
$system_status_data = array(
|
||||||
'cron' => array(
|
'cron' => array(
|
||||||
'url' => CronHelper::getCronUrl(CronDaemon::ACTION_PING),
|
'url' => CronHelper::getCronUrl(CronDaemon::ACTION_PING),
|
||||||
'isReachable' => CronHelper::pingDaemon()
|
'isReachable' => CronHelper::pingDaemon(true)
|
||||||
),
|
),
|
||||||
'mss' => array(
|
'mss' => array(
|
||||||
'enabled' => (Bridge::isMPSendingServiceEnabled()) ?
|
'enabled' => (Bridge::isMPSendingServiceEnabled()) ?
|
||||||
|
@ -48,14 +48,16 @@ class CronHelper {
|
|||||||
return Security::generateRandomString();
|
return Security::generateRandomString();
|
||||||
}
|
}
|
||||||
|
|
||||||
static function pingDaemon() {
|
static function pingDaemon($validate_response = false) {
|
||||||
$url = self::getCronUrl(
|
$url = self::getCronUrl(
|
||||||
CronDaemonEndpoint::ACTION_PING_RESPONSE
|
CronDaemonEndpoint::ACTION_PING_RESPONSE
|
||||||
);
|
);
|
||||||
$result = self::queryCronUrl($url);
|
$result = self::queryCronUrl($url);
|
||||||
return (is_wp_error($result)) ?
|
if (is_wp_error($result)) return $result->get_error_message();
|
||||||
$result->get_error_message() :
|
$response = wp_remote_retrieve_body($result);
|
||||||
wp_remote_retrieve_body($result);
|
return (!$validate_response) ?
|
||||||
|
$response :
|
||||||
|
$response === Daemon::PING_SUCCESS_RESPONSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static function accessDaemon($token) {
|
static function accessDaemon($token) {
|
||||||
|
@ -14,6 +14,8 @@ class Daemon {
|
|||||||
public $request_data;
|
public $request_data;
|
||||||
public $timer;
|
public $timer;
|
||||||
|
|
||||||
|
const PING_SUCCESS_RESPONSE = 'pong';
|
||||||
|
|
||||||
function __construct($request_data = false) {
|
function __construct($request_data = false) {
|
||||||
$this->request_data = $request_data;
|
$this->request_data = $request_data;
|
||||||
$this->daemon = CronHelper::getDaemon();
|
$this->daemon = CronHelper::getDaemon();
|
||||||
@ -22,7 +24,7 @@ class Daemon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function ping() {
|
function ping() {
|
||||||
$this->terminateRequest('pong');
|
$this->terminateRequest(self::PING_SUCCESS_RESPONSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
function run() {
|
function run() {
|
||||||
|
@ -4,6 +4,7 @@ namespace MailPoet\Test\Cron;
|
|||||||
|
|
||||||
use AspectMock\Test as Mock;
|
use AspectMock\Test as Mock;
|
||||||
use MailPoet\Cron\CronHelper;
|
use MailPoet\Cron\CronHelper;
|
||||||
|
use MailPoet\Cron\Daemon;
|
||||||
use MailPoet\Models\Setting;
|
use MailPoet\Models\Setting;
|
||||||
|
|
||||||
class CronHelperTest extends \MailPoetTest {
|
class CronHelperTest extends \MailPoetTest {
|
||||||
@ -162,7 +163,10 @@ class CronHelperTest extends \MailPoetTest {
|
|||||||
|
|
||||||
function testItPingsDaemon() {
|
function testItPingsDaemon() {
|
||||||
if(getenv('WP_TEST_ENABLE_NETWORK_TESTS') !== 'true') return;
|
if(getenv('WP_TEST_ENABLE_NETWORK_TESTS') !== 'true') return;
|
||||||
expect(CronHelper::pingDaemon())->equals('pong');
|
// raw response is returned
|
||||||
|
expect(CronHelper::pingDaemon())->equals(Daemon::PING_SUCCESS_RESPONSE);
|
||||||
|
// response is validated
|
||||||
|
expect(CronHelper::pingDaemon(true))->true();
|
||||||
}
|
}
|
||||||
|
|
||||||
function _after() {
|
function _after() {
|
||||||
|
Reference in New Issue
Block a user