Add authorized emails check to resume sending endpoint

[MAILPOET-1987]
This commit is contained in:
Rostislav Wolny
2019-05-10 10:07:57 +02:00
committed by M. Shull
parent 4c7ad60a72
commit e7b2b9aee9
2 changed files with 32 additions and 2 deletions

View File

@ -6,15 +6,29 @@ use MailPoet\API\JSON\Endpoint as APIEndpoint;
use MailPoet\API\JSON\Error as APIError; use MailPoet\API\JSON\Error as APIError;
use MailPoet\Config\AccessControl; use MailPoet\Config\AccessControl;
use MailPoet\Mailer\MailerLog; use MailPoet\Mailer\MailerLog;
use MailPoet\Services\Bridge;
use MailPoet\Settings\SettingsController;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
if (!defined('ABSPATH')) exit; if (!defined('ABSPATH')) exit;
class Mailer extends APIEndpoint { class Mailer extends APIEndpoint {
/** @var Bridge */
private $bridge;
/** @var SettingsController */
private $settings;
public $permissions = [ public $permissions = [
'global' => AccessControl::PERMISSION_MANAGE_EMAILS, 'global' => AccessControl::PERMISSION_MANAGE_EMAILS,
]; ];
function __construct(Bridge $bridge, SettingsController $settings) {
$this->bridge = $bridge;
$this->settings = $settings;
}
function send($data = []) { function send($data = []) {
try { try {
$mailer = new \MailPoet\Mailer\Mailer( $mailer = new \MailPoet\Mailer\Mailer(
@ -41,6 +55,9 @@ class Mailer extends APIEndpoint {
} }
function resumeSending() { function resumeSending() {
if ($this->settings->get(Bridge::AUTHORIZED_EMAIL_ADDRESSES_ERROR_SETTING_NAME)) {
$this->bridge->checkAuthorizedEmailAddresses();
}
MailerLog::resumeSending(); MailerLog::resumeSending();
return $this->successResponse(null); return $this->successResponse(null);
} }

View File

@ -1,9 +1,12 @@
<?php <?php
namespace MailPoet\Test\API\JSON\v1; namespace MailPoet\Test\API\JSON\v1;
use Codeception\Stub\Expected;
use MailPoet\API\JSON\v1\Mailer; use MailPoet\API\JSON\v1\Mailer;
use MailPoet\API\JSON\Response as APIResponse; use MailPoet\API\JSON\Response as APIResponse;
use MailPoet\Mailer\MailerLog; use MailPoet\Mailer\MailerLog;
use MailPoet\Services\Bridge;
use MailPoet\Settings\SettingsController;
class MailerTest extends \MailPoetTest { class MailerTest extends \MailPoetTest {
function testItResumesSending() { function testItResumesSending() {
@ -12,11 +15,21 @@ class MailerTest extends \MailPoetTest {
MailerLog::updateMailerLog($mailer_log); MailerLog::updateMailerLog($mailer_log);
$mailer_log = MailerLog::getMailerLog(); $mailer_log = MailerLog::getMailerLog();
expect($mailer_log['status'])->equals(MailerLog::STATUS_PAUSED); expect($mailer_log['status'])->equals(MailerLog::STATUS_PAUSED);
$settings = new SettingsController();
$bridge = $this->makeEmpty(Bridge::class, ['checkAuthorizedEmailAddresses' => Expected::never()]);
// resumeSending() method should clear the mailer log's status // resumeSending() method should clear the mailer log's status
$mailer_endpoint = new Mailer(); $mailer_endpoint = new Mailer($bridge, $settings);
$response = $mailer_endpoint->resumeSending(); $response = $mailer_endpoint->resumeSending();
expect($response->status)->equals(APIResponse::STATUS_OK); expect($response->status)->equals(APIResponse::STATUS_OK);
$mailer_log = MailerLog::getMailerLog(); $mailer_log = MailerLog::getMailerLog();
expect($mailer_log['status'])->null(); expect($mailer_log['status'])->null();
} }
}
function testItRunsAuhtorizedEmailsCheckIfErrorIsPresent() {
$settings = new SettingsController();
$settings->set(Bridge::AUTHORIZED_EMAIL_ADDRESSES_ERROR_SETTING_NAME, ['invalid_sender_address' => 'a@b.c']);
$bridge = $this->makeEmpty(Bridge::class, ['checkAuthorizedEmailAddresses' => Expected::once()]);
$mailer_endpoint = new Mailer($bridge, $settings);
$mailer_endpoint->resumeSending();
}
}