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([
|
return $this->errorResponse([
|
||||||
APIError::FORBIDDEN => __('The sender address is not an authorized sender domain.', 'mailpoet'),
|
APIError::FORBIDDEN => __('The sender address is not an authorized sender domain.', 'mailpoet'),
|
||||||
], [], Response::STATUS_FORBIDDEN);
|
], [], Response::STATUS_FORBIDDEN);
|
||||||
|
@ -153,16 +153,16 @@ class AuthorizedEmailsController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isSenderAddressValidForActivation(NewsletterEntity $newsletter): bool {
|
public function isSenderAddressValid(NewsletterEntity $newsletter, string $context = 'activation'): bool {
|
||||||
if ($this->settings->get('mta.method') !== Mailer::METHOD_MAILPOET) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!in_array($newsletter->getType(), NewsletterEntity::CAMPAIGN_TYPES)) {
|
if (!in_array($newsletter->getType(), NewsletterEntity::CAMPAIGN_TYPES)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$this->senderDomainController->isAuthorizedDomainRequiredForNewCampaigns()) {
|
$isAuthorizedDomainRequired = $context === 'activation' ?
|
||||||
|
$this->senderDomainController->isAuthorizedDomainRequiredForNewCampaigns() :
|
||||||
|
$this->senderDomainController->isAuthorizedDomainRequiredForExistingCampaigns();
|
||||||
|
|
||||||
|
if (!$isAuthorizedDomainRequired) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,7 +236,7 @@ class NewslettersTest extends \MailPoetTest {
|
|||||||
'cronHelper' => $this->cronHelper,
|
'cronHelper' => $this->cronHelper,
|
||||||
'subscribersFeature' => Stub::make(Subscribers::class, ['check' => true]),
|
'subscribersFeature' => Stub::make(Subscribers::class, ['check' => true]),
|
||||||
'authorizedEmailsController' => Stub::make(AuthorizedEmailsController::class, [
|
'authorizedEmailsController' => Stub::make(AuthorizedEmailsController::class, [
|
||||||
'isSenderAddressValidForActivation' => Expected::once(false),
|
'isSenderAddressValid' => Expected::once(false),
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
$res = $endpoint->setStatus([
|
$res = $endpoint->setStatus([
|
||||||
|
@ -255,7 +255,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
|||||||
'AuthorizedSenderDomainController' => $senderDomainMock,
|
'AuthorizedSenderDomainController' => $senderDomainMock,
|
||||||
];
|
];
|
||||||
$controller = $this->getControllerWithCustomMocks($mocks);
|
$controller = $this->getControllerWithCustomMocks($mocks);
|
||||||
verify($controller->isSenderAddressValidForActivation($newsletter))->false();
|
verify($controller->isSenderAddressValid($newsletter))->false();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSenderAddressIsValidForActivationIfRestrictionsApplyAndAuthorizedSender() {
|
public function testSenderAddressIsValidForActivationIfRestrictionsApplyAndAuthorizedSender() {
|
||||||
@ -276,7 +276,28 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
|||||||
'AuthorizedSenderDomainController' => $senderDomainMock,
|
'AuthorizedSenderDomainController' => $senderDomainMock,
|
||||||
];
|
];
|
||||||
$controller = $this->getControllerWithCustomMocks($mocks);
|
$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() {
|
public function testSenderAddressIsValidForActivationIfNotACampaign() {
|
||||||
@ -297,7 +318,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
|||||||
'AuthorizedSenderDomainController' => $senderDomainMock,
|
'AuthorizedSenderDomainController' => $senderDomainMock,
|
||||||
];
|
];
|
||||||
$controller = $this->getControllerWithCustomMocks($mocks);
|
$controller = $this->getControllerWithCustomMocks($mocks);
|
||||||
verify($controller->isSenderAddressValidForActivation($newsletter))->true();
|
verify($controller->isSenderAddressValid($newsletter))->true();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSenderAddressIsValidForActivationIfRestrictionsDoNotApply() {
|
public function testSenderAddressIsValidForActivationIfRestrictionsDoNotApply() {
|
||||||
@ -318,7 +339,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
|||||||
'AuthorizedSenderDomainController' => $senderDomainMock,
|
'AuthorizedSenderDomainController' => $senderDomainMock,
|
||||||
];
|
];
|
||||||
$controller = $this->getControllerWithCustomMocks($mocks);
|
$controller = $this->getControllerWithCustomMocks($mocks);
|
||||||
verify($controller->isSenderAddressValidForActivation($newsletter))->true();
|
verify($controller->isSenderAddressValid($newsletter))->true();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItSetsFromAddressInScheduledEmails() {
|
public function testItSetsFromAddressInScheduledEmails() {
|
||||||
|
Reference in New Issue
Block a user