Add cron pinging endpoint

[MAILPOET-6029]
This commit is contained in:
alex-mpoet
2024-06-03 16:26:24 +03:00
committed by Aschepikov
parent 07ef513bce
commit c59ae2d82c
2 changed files with 62 additions and 1 deletions

View File

@@ -5,6 +5,8 @@ namespace MailPoet\Test\API\JSON\v1;
use Codeception\Util\Stub;
use MailPoet\API\JSON\Response as APIResponse;
use MailPoet\API\JSON\v1\SendingQueue as SendingQueueAPI;
use MailPoet\Cron\CronHelper;
use MailPoet\Cron\DaemonHttpRunner;
use MailPoet\Cron\Workers\SendingQueue\SendingQueue;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\ScheduledTaskEntity;
@@ -228,4 +230,41 @@ class SendingQueueTest extends \MailPoetTest {
$this->assertSame($expectedResult, $data);
}
public function testItReturnsErrorIfCronPingThrowsException() {
$errorMessage = 'some error';
$sendingQueue = $this->getServiceWithOverrides(SendingQueueAPI::class, [
'cronHelper' => Stub::make(CronHelper::class, ['pingDaemon' => function () use ($errorMessage) {
throw new \Exception($errorMessage);
}]),
]);
$response = $sendingQueue->pingCron();
$response = $response->getData();
verify($response['errors'][0])->isArray();
verify($response['errors'][0]['message'])->stringContainsString($errorMessage);
verify($response['errors'][0]['error'])->stringContainsString('unknown');
}
public function testItReturnsErrorIfCronPingResponseIsInvalid() {
$errorResponse = 'timed out';
$sendingQueue = $this->getServiceWithOverrides(SendingQueueAPI::class, [
'cronHelper' => Stub::make(CronHelper::class, ['pingDaemon' => $errorResponse]),
]);
$response = $sendingQueue->pingCron();
$response = $response->getData();
verify($response['errors'][0])->isArray();
verify($response['errors'][0]['message'])->stringContainsString($errorResponse);
verify($response['errors'][0]['error'])->stringContainsString('unknown');
}
public function testItPingsCronSuccessfully() {
$sendingQueue = $this->getServiceWithOverrides(SendingQueueAPI::class, [
'cronHelper' => Stub::make(CronHelper::class, ['pingDaemon' => DaemonHttpRunner::PING_SUCCESS_RESPONSE]),
]);
$response = $sendingQueue->pingCron();
verify($response->status)->equals(200);
$response = $response->getData();
verify($response['data'])->empty();
verify(empty($response['errors']))->true();
}
}