Modify the check for sender address
to implement rule for existing campaigns. [MAILPOET-5832]
This commit is contained in:
committed by
Aschepikov
parent
56556493fe
commit
ab23a01423
@ -193,7 +193,7 @@ class Newsletters extends APIEndpoint {
|
||||
]);
|
||||
}
|
||||
|
||||
if ($status === NewsletterEntity::STATUS_ACTIVE && !$this->authorizedEmailsController->isSenderAddressValidForActivation($newsletter)) {
|
||||
if ($status === NewsletterEntity::STATUS_ACTIVE && !$this->authorizedEmailsController->isSenderAddressValid($newsletter)) {
|
||||
return $this->errorResponse([
|
||||
APIError::FORBIDDEN => __('The sender address is not an authorized sender domain.', 'mailpoet'),
|
||||
], [], Response::STATUS_FORBIDDEN);
|
||||
|
@ -153,16 +153,16 @@ class AuthorizedEmailsController {
|
||||
}
|
||||
}
|
||||
|
||||
public function isSenderAddressValidForActivation(NewsletterEntity $newsletter): bool {
|
||||
if ($this->settings->get('mta.method') !== Mailer::METHOD_MAILPOET) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public function isSenderAddressValid(NewsletterEntity $newsletter, string $context = 'activation'): bool {
|
||||
if (!in_array($newsletter->getType(), NewsletterEntity::CAMPAIGN_TYPES)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!$this->senderDomainController->isAuthorizedDomainRequiredForNewCampaigns()) {
|
||||
$isAuthorizedDomainRequired = $context === 'activation' ?
|
||||
$this->senderDomainController->isAuthorizedDomainRequiredForNewCampaigns() :
|
||||
$this->senderDomainController->isAuthorizedDomainRequiredForExistingCampaigns();
|
||||
|
||||
if (!$isAuthorizedDomainRequired) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -236,7 +236,7 @@ class NewslettersTest extends \MailPoetTest {
|
||||
'cronHelper' => $this->cronHelper,
|
||||
'subscribersFeature' => Stub::make(Subscribers::class, ['check' => true]),
|
||||
'authorizedEmailsController' => Stub::make(AuthorizedEmailsController::class, [
|
||||
'isSenderAddressValidForActivation' => Expected::once(false),
|
||||
'isSenderAddressValid' => Expected::once(false),
|
||||
]),
|
||||
]);
|
||||
$res = $endpoint->setStatus([
|
||||
|
@ -255,7 +255,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
'AuthorizedSenderDomainController' => $senderDomainMock,
|
||||
];
|
||||
$controller = $this->getControllerWithCustomMocks($mocks);
|
||||
verify($controller->isSenderAddressValidForActivation($newsletter))->false();
|
||||
verify($controller->isSenderAddressValid($newsletter))->false();
|
||||
}
|
||||
|
||||
public function testSenderAddressIsValidForActivationIfRestrictionsApplyAndAuthorizedSender() {
|
||||
@ -276,7 +276,28 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
'AuthorizedSenderDomainController' => $senderDomainMock,
|
||||
];
|
||||
$controller = $this->getControllerWithCustomMocks($mocks);
|
||||
verify($controller->isSenderAddressValidForActivation($newsletter))->true();
|
||||
verify($controller->isSenderAddressValid($newsletter))->true();
|
||||
}
|
||||
|
||||
public function testSenderAddressIsValidForSendingIfRestrictionsApplyAndAuthorizedSender() {
|
||||
$this->settings->set('mta.method', Mailer::METHOD_MAILPOET);
|
||||
$verifiedDomains = ['email.com'];
|
||||
$senderDomainMock = $this->make(AuthorizedSenderDomainController::class, [
|
||||
'isAuthorizedDomainRequiredForExistingCampaigns' => Expected::once(true),
|
||||
'getVerifiedSenderDomainsIgnoringCache' => Expected::once($verifiedDomains),
|
||||
]);
|
||||
|
||||
$newsletter = new NewsletterEntity();
|
||||
$newsletter->setSubject('Subject');
|
||||
$newsletter->setType(NewsletterEntity::TYPE_STANDARD);
|
||||
$newsletter->setStatus(NewsletterEntity::STATUS_DRAFT);
|
||||
$newsletter->setSenderAddress('contact@email.com');
|
||||
|
||||
$mocks = [
|
||||
'AuthorizedSenderDomainController' => $senderDomainMock,
|
||||
];
|
||||
$controller = $this->getControllerWithCustomMocks($mocks);
|
||||
verify($controller->isSenderAddressValid($newsletter, 'sending'))->true();
|
||||
}
|
||||
|
||||
public function testSenderAddressIsValidForActivationIfNotACampaign() {
|
||||
@ -297,7 +318,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
'AuthorizedSenderDomainController' => $senderDomainMock,
|
||||
];
|
||||
$controller = $this->getControllerWithCustomMocks($mocks);
|
||||
verify($controller->isSenderAddressValidForActivation($newsletter))->true();
|
||||
verify($controller->isSenderAddressValid($newsletter))->true();
|
||||
}
|
||||
|
||||
public function testSenderAddressIsValidForActivationIfRestrictionsDoNotApply() {
|
||||
@ -318,7 +339,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
'AuthorizedSenderDomainController' => $senderDomainMock,
|
||||
];
|
||||
$controller = $this->getControllerWithCustomMocks($mocks);
|
||||
verify($controller->isSenderAddressValidForActivation($newsletter))->true();
|
||||
verify($controller->isSenderAddressValid($newsletter))->true();
|
||||
}
|
||||
|
||||
public function testItSetsFromAddressInScheduledEmails() {
|
||||
|
Reference in New Issue
Block a user