From ab296401b2d1c4e07966d1d9fa2ed3524f105e02 Mon Sep 17 00:00:00 2001 From: Brezo Cordero <8002881+brezocordero@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:04:57 -0600 Subject: [PATCH] Allow verification of partially verified Sender domains [MAILPOET-5817] --- .../AuthorizedSenderDomainController.php | 3 +- .../AuthorizedSenderDomainControllerTest.php | 55 +++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/mailpoet/lib/Services/AuthorizedSenderDomainController.php b/mailpoet/lib/Services/AuthorizedSenderDomainController.php index cd194c4d6c..4cbc1648e7 100644 --- a/mailpoet/lib/Services/AuthorizedSenderDomainController.php +++ b/mailpoet/lib/Services/AuthorizedSenderDomainController.php @@ -121,8 +121,6 @@ class AuthorizedSenderDomainController { $records = $this->bridge->getAuthorizedSenderDomains(); $allDomains = $this->returnAllDomains($records); - $verifiedDomains = $this->returnVerifiedDomains($records); - $alreadyExist = in_array($domain, $allDomains); if (!$alreadyExist) { @@ -130,6 +128,7 @@ class AuthorizedSenderDomainController { throw new \InvalidArgumentException(self::AUTHORIZED_SENDER_DOMAIN_ERROR_NOT_CREATED); } + $verifiedDomains = $this->getFullyVerifiedSenderDomains(true); $alreadyVerified = in_array($domain, $verifiedDomains); if ($alreadyVerified) { diff --git a/mailpoet/tests/integration/Services/AuthorizedSenderDomainControllerTest.php b/mailpoet/tests/integration/Services/AuthorizedSenderDomainControllerTest.php index 66c5ccfe8a..685ef35c56 100644 --- a/mailpoet/tests/integration/Services/AuthorizedSenderDomainControllerTest.php +++ b/mailpoet/tests/integration/Services/AuthorizedSenderDomainControllerTest.php @@ -134,12 +134,58 @@ class AuthorizedSenderDomainControllerTest extends \MailPoetTest { ['status' => 'valid'], ['status' => 'valid'], ['status' => 'valid'], + ['status' => 'valid'], ]]; + + $domainsRawData = [ + 'testdomain.com' => [ + 'domain' => 'testdomain.com', + 'domain_status' => 'verified', + 'dns' => [], + ], + ]; + $getSenderDomainsExpectation = Expected::once($domains); + $getSenderDomainsRawDataExpectation = Expected::once($domainsRawData); $verifySenderDomainsExpectation = Expected::never(); $bridgeMock = $this->make(Bridge::class, [ 'getAuthorizedSenderDomains' => $getSenderDomainsExpectation, + 'getRawSenderDomainData' => $getSenderDomainsRawDataExpectation, + 'verifyAuthorizedSenderDomain' => $verifySenderDomainsExpectation, + ]); + $controller = $this->getController($bridgeMock); + $controller->verifyAuthorizedSenderDomain('testdomain.com'); + } + + public function testVerifyAuthorizedSenderDomainVerifiesPartiallyVerifiedDomains() { + $domains = ['testdomain.com' => [ + ['status' => 'valid'], + ['status' => 'valid'], + ['status' => 'valid'], + ['status' => 'pending'], + ]]; + + $domainsRawData = [ + 'testdomain.com' => [ + 'domain' => 'testdomain.com', + 'domain_status' => 'partially_verified', + 'dns' => [], + ], + ]; + + $response = [ + 'status' => API::RESPONSE_STATUS_OK, + 'dns' => [], + ]; + + $getSenderDomainsExpectation = Expected::once($domains); + $getSenderDomainsRawDataExpectation = Expected::once($domainsRawData); + $verifySenderDomainsExpectation = Expected::once($response); + + $bridgeMock = $this->make(Bridge::class, [ + 'getAuthorizedSenderDomains' => $getSenderDomainsExpectation, + 'getRawSenderDomainData' => $getSenderDomainsRawDataExpectation, 'verifyAuthorizedSenderDomain' => $verifySenderDomainsExpectation, ]); $controller = $this->getController($bridgeMock); @@ -209,7 +255,15 @@ class AuthorizedSenderDomainControllerTest extends \MailPoetTest { $this->expectExceptionMessage($errorMessage); $domains = ['testdomain.com' => []]; + $domainsRawData = [ + 'testdomain.com' => [ + 'domain' => 'testdomain.com', + 'domain_status' => 'unverified', + 'dns' => [], + ], + ]; $getSenderDomainsExpectation = Expected::once($domains); + $getSenderDomainsRawDataExpectation = Expected::once($domainsRawData); $verifySenderDomainsExpectation = Expected::once([ 'error' => $errorMessage, 'message' => $errorMessage, @@ -218,6 +272,7 @@ class AuthorizedSenderDomainControllerTest extends \MailPoetTest { $bridgeMock = $this->make(Bridge::class, [ 'getAuthorizedSenderDomains' => $getSenderDomainsExpectation, + 'getRawSenderDomainData' => $getSenderDomainsRawDataExpectation, 'verifyAuthorizedSenderDomain' => $verifySenderDomainsExpectation, ]); $controller = $this->getController($bridgeMock);