diff --git a/lib/API/JSON/v1/Mailer.php b/lib/API/JSON/v1/Mailer.php index 5765ceadce..d769904000 100644 --- a/lib/API/JSON/v1/Mailer.php +++ b/lib/API/JSON/v1/Mailer.php @@ -6,15 +6,29 @@ use MailPoet\API\JSON\Endpoint as APIEndpoint; use MailPoet\API\JSON\Error as APIError; use MailPoet\Config\AccessControl; use MailPoet\Mailer\MailerLog; +use MailPoet\Services\Bridge; +use MailPoet\Settings\SettingsController; use MailPoet\WP\Functions as WPFunctions; if (!defined('ABSPATH')) exit; class Mailer extends APIEndpoint { + + /** @var Bridge */ + private $bridge; + + /** @var SettingsController */ + private $settings; + public $permissions = [ 'global' => AccessControl::PERMISSION_MANAGE_EMAILS, ]; + function __construct(Bridge $bridge, SettingsController $settings) { + $this->bridge = $bridge; + $this->settings = $settings; + } + function send($data = []) { try { $mailer = new \MailPoet\Mailer\Mailer( @@ -41,6 +55,9 @@ class Mailer extends APIEndpoint { } function resumeSending() { + if ($this->settings->get(Bridge::AUTHORIZED_EMAIL_ADDRESSES_ERROR_SETTING_NAME)) { + $this->bridge->checkAuthorizedEmailAddresses(); + } MailerLog::resumeSending(); return $this->successResponse(null); } diff --git a/tests/integration/API/JSON/v1/MailerTest.php b/tests/integration/API/JSON/v1/MailerTest.php index 6a8472b6c8..b08da23258 100644 --- a/tests/integration/API/JSON/v1/MailerTest.php +++ b/tests/integration/API/JSON/v1/MailerTest.php @@ -1,9 +1,12 @@ equals(MailerLog::STATUS_PAUSED); + $settings = new SettingsController(); + $bridge = $this->makeEmpty(Bridge::class, ['checkAuthorizedEmailAddresses' => Expected::never()]); // resumeSending() method should clear the mailer log's status - $mailer_endpoint = new Mailer(); + $mailer_endpoint = new Mailer($bridge, $settings); $response = $mailer_endpoint->resumeSending(); expect($response->status)->equals(APIResponse::STATUS_OK); $mailer_log = MailerLog::getMailerLog(); expect($mailer_log['status'])->null(); } -} \ No newline at end of file + + 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(); + } +}