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