diff --git a/lib/Config/Menu.php b/lib/Config/Menu.php index ac3e93ac91..89d2b9b4d1 100644 --- a/lib/Config/Menu.php +++ b/lib/Config/Menu.php @@ -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()) ? diff --git a/lib/Cron/CronHelper.php b/lib/Cron/CronHelper.php index 64c306b609..3e7a9c0cb9 100644 --- a/lib/Cron/CronHelper.php +++ b/lib/Cron/CronHelper.php @@ -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) { diff --git a/lib/Cron/Daemon.php b/lib/Cron/Daemon.php index c48e2dd784..596f222e5e 100644 --- a/lib/Cron/Daemon.php +++ b/lib/Cron/Daemon.php @@ -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() { diff --git a/tests/unit/Cron/CronHelperTest.php b/tests/unit/Cron/CronHelperTest.php index 53aed80873..d3edf4d731 100644 --- a/tests/unit/Cron/CronHelperTest.php +++ b/tests/unit/Cron/CronHelperTest.php @@ -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() {