Strip service method to return raw responses
A preliminary step to enable caching authorized emails data from the API
This commit is contained in:
committed by
Aschepikov
parent
f39339a7ac
commit
32cd4c36dd
@@ -51,7 +51,7 @@ class AuthorizedEmailsController {
|
||||
}
|
||||
|
||||
public function setFromEmailAddress(string $address) {
|
||||
$authorizedEmails = $this->bridge->getAuthorizedEmailAddresses() ?: [];
|
||||
$authorizedEmails = $this->getAuthorizedEmailAddresses() ?: [];
|
||||
$verifiedDomains = $this->senderDomainController->getVerifiedSenderDomainsIgnoringCache();
|
||||
$isAuthorized = $this->validateAuthorizedEmail($authorizedEmails, $address);
|
||||
|
||||
@@ -74,12 +74,17 @@ class AuthorizedEmailsController {
|
||||
$this->settings->set(self::AUTHORIZED_EMAIL_ADDRESSES_ERROR_SETTING, null);
|
||||
}
|
||||
|
||||
public function getAllAuthorizedEmailAddress(): array {
|
||||
return $this->bridge->getAuthorizedEmailAddresses(self::AUTHORIZED_EMAIL_ADDRESSES_API_TYPE_ALL);
|
||||
public function getAuthorizedEmailAddresses(string $type = 'authorized'): array {
|
||||
$data = $this->bridge->getAuthorizedEmailAddresses();
|
||||
if ($data && $type === self::AUTHORIZED_EMAIL_ADDRESSES_API_TYPE_ALL) {
|
||||
return $data;
|
||||
}
|
||||
|
||||
return $data[$type] ?? [];
|
||||
}
|
||||
|
||||
public function createAuthorizedEmailAddress(string $email): array {
|
||||
$allEmails = $this->getAllAuthorizedEmailAddress();
|
||||
$allEmails = $this->getAuthorizedEmailAddresses(self::AUTHORIZED_EMAIL_ADDRESSES_API_TYPE_ALL);
|
||||
|
||||
$authorizedEmails = isset($allEmails[self::AUTHORIZED_EMAIL_ADDRESSES_API_TYPE_AUTHORIZED]) ? $allEmails[self::AUTHORIZED_EMAIL_ADDRESSES_API_TYPE_AUTHORIZED] : [];
|
||||
$isAuthorized = $this->validateAuthorizedEmail($authorizedEmails, $email);
|
||||
@@ -104,7 +109,7 @@ class AuthorizedEmailsController {
|
||||
}
|
||||
|
||||
public function isEmailAddressAuthorized(string $email): bool {
|
||||
$authorizedEmails = $this->bridge->getAuthorizedEmailAddresses() ?: [];
|
||||
$authorizedEmails = $this->getAuthorizedEmailAddresses() ?: [];
|
||||
return $this->validateAuthorizedEmail($authorizedEmails, $email);
|
||||
}
|
||||
|
||||
@@ -115,7 +120,7 @@ class AuthorizedEmailsController {
|
||||
return null;
|
||||
}
|
||||
|
||||
$authorizedEmails = $this->bridge->getAuthorizedEmailAddresses();
|
||||
$authorizedEmails = $this->getAuthorizedEmailAddresses();
|
||||
// Keep previous check result for an invalid response from API
|
||||
if (!$authorizedEmails) {
|
||||
return null;
|
||||
|
@@ -133,15 +133,10 @@ class Bridge {
|
||||
return $this->initApi($key);
|
||||
}
|
||||
|
||||
public function getAuthorizedEmailAddresses($type = 'authorized'): array {
|
||||
$data = $this
|
||||
public function getAuthorizedEmailAddresses(): ?array {
|
||||
return $this
|
||||
->getApi($this->settings->get(self::API_KEY_SETTING_NAME))
|
||||
->getAuthorizedEmailAddresses();
|
||||
if ($data && $type === 'all') {
|
||||
return $data;
|
||||
}
|
||||
|
||||
return $data[$type] ?? [];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -131,7 +131,7 @@ class SettingsTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testItSetsAuthorizedFromAddressAndResumesSending() {
|
||||
$bridgeMock = $this->make(Bridge::class, ['getAuthorizedEmailAddresses' => Expected::once(['authorized@email.com'])]);
|
||||
$bridgeMock = $this->make(Bridge::class, ['getAuthorizedEmailAddresses' => Expected::once(['authorized' => ['authorized@email.com']])]);
|
||||
$senderDomainController = $this->diContainer->get(AuthorizedSenderDomainController::class);
|
||||
$this->endpoint = new Settings(
|
||||
$this->settings,
|
||||
@@ -162,7 +162,7 @@ class SettingsTest extends \MailPoetTest {
|
||||
|
||||
public function testItSaveUnauthorizedAddressAndReturnsMeta() {
|
||||
$this->settings->set(Mailer::MAILER_CONFIG_SETTING_NAME, ['method' => Mailer::METHOD_MAILPOET]);
|
||||
$bridgeMock = $this->make(Bridge::class, ['getAuthorizedEmailAddresses' => Expected::once(['authorized@email.com'])]);
|
||||
$bridgeMock = $this->make(Bridge::class, ['getAuthorizedEmailAddresses' => Expected::once(['authorized' => ['authorized@email.com']])]);
|
||||
$senderDomainController = $this->diContainer->get(AuthorizedSenderDomainController::class);
|
||||
$this->endpoint = new Settings(
|
||||
$this->settings,
|
||||
@@ -195,7 +195,7 @@ class SettingsTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testItRejectsUnauthorizedFromAddress() {
|
||||
$bridgeMock = $this->make(Bridge::class, ['getAuthorizedEmailAddresses' => Expected::once(['authorized@email.com'])]);
|
||||
$bridgeMock = $this->make(Bridge::class, ['getAuthorizedEmailAddresses' => Expected::once(['authorized' => ['authorized@email.com']])]);
|
||||
$senderDomainController = $this->diContainer->get(AuthorizedSenderDomainController::class);
|
||||
$this->endpoint = new Settings(
|
||||
$this->settings,
|
||||
|
@@ -42,7 +42,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
$this->settings->set('installed_at', '2018-03-04');
|
||||
$this->settings->set('sender.address', 'invalid@email.com');
|
||||
$this->setMailPoetSendingMethod();
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['auth@email.com']);
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['authorized' => ['auth@email.com']]);
|
||||
$controller->checkAuthorizedEmailAddresses();
|
||||
verify($this->settings->get(AuthorizedEmailsController::AUTHORIZED_EMAIL_ADDRESSES_ERROR_SETTING))->equals(['invalid_sender_address' => 'invalid@email.com']);
|
||||
}
|
||||
@@ -51,7 +51,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
$this->settings->set('installed_at', new Carbon());
|
||||
$this->settings->set('sender.address', 'invalid@email.com');
|
||||
$this->setMailPoetSendingMethod();
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['auth@email.com']);
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['authorized' => ['auth@email.com']]);
|
||||
$controller->checkAuthorizedEmailAddresses();
|
||||
verify($this->settings->get(AuthorizedEmailsController::AUTHORIZED_EMAIL_ADDRESSES_ERROR_SETTING))->equals(['invalid_sender_address' => 'invalid@email.com']);
|
||||
}
|
||||
@@ -60,7 +60,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
$this->settings->set('installed_at', new Carbon());
|
||||
$this->settings->set('sender.address', 'auth@email.com');
|
||||
$this->setMailPoetSendingMethod();
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['auth@email.com']);
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['authorized' => ['auth@email.com']]);
|
||||
$controller->checkAuthorizedEmailAddresses();
|
||||
verify($this->settings->get(AuthorizedEmailsController::AUTHORIZED_EMAIL_ADDRESSES_ERROR_SETTING))->null();
|
||||
}
|
||||
@@ -70,9 +70,8 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
$this->settings->set('sender.address', 'not-valid-auth@email.com');
|
||||
$this->setMailPoetSendingMethod();
|
||||
|
||||
$authorizedEmails = ['auth@email.com'];
|
||||
$bridgeMock = $this->make(Bridge::class, [
|
||||
'getAuthorizedEmailAddresses' => Expected::once($authorizedEmails),
|
||||
'getAuthorizedEmailAddresses' => Expected::once(['authorized' => ['auth@email.com']]),
|
||||
]);
|
||||
|
||||
$verifiedDomains = ['email.com'];
|
||||
@@ -117,7 +116,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
$this->settings->set('installed_at', new Carbon());
|
||||
$this->settings->set('sender.address', 'auth@email.com');
|
||||
$this->setMailPoetSendingMethod();
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['auth@email.com']);
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['authorized' => ['auth@email.com']]);
|
||||
$controller->checkAuthorizedEmailAddresses();
|
||||
$error = $this->settings->get(AuthorizedEmailsController::AUTHORIZED_EMAIL_ADDRESSES_ERROR_SETTING);
|
||||
verify($error)->null();
|
||||
@@ -129,7 +128,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
$this->settings->set('installed_at', new Carbon());
|
||||
$this->settings->set('sender.address', 'auth@email.com');
|
||||
$this->setMailPoetSendingMethod();
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['auth@email.com']);
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['authorized' => ['auth@email.com']]);
|
||||
$controller->checkAuthorizedEmailAddresses();
|
||||
$error = MailerLog::getError();
|
||||
verify($error)->null();
|
||||
@@ -142,9 +141,8 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
$this->settings->set('sender.address', 'invalid@email.com');
|
||||
$this->setMailPoetSendingMethod();
|
||||
|
||||
$authorizedEmails = ['auth@email.com'];
|
||||
$bridgeMock = $this->make(Bridge::class, [
|
||||
'getAuthorizedEmailAddresses' => Expected::once($authorizedEmails),
|
||||
'getAuthorizedEmailAddresses' => Expected::once(['authorized' => ['auth@email.com']]),
|
||||
]);
|
||||
|
||||
$verifiedDomains = ['email.com'];
|
||||
@@ -170,7 +168,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
$this->settings->set('installed_at', new Carbon());
|
||||
$this->settings->set('sender.address', 'auth@email.com');
|
||||
$this->setMailPoetSendingMethod();
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['auth@email.com']);
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['authorized' => ['auth@email.com']]);
|
||||
$controller->checkAuthorizedEmailAddresses();
|
||||
$error = MailerLog::getError();
|
||||
expect(is_array($error));
|
||||
@@ -185,7 +183,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
$this->settings->set('installed_at', new Carbon());
|
||||
$this->settings->set('sender.address', 'invalid@email.com');
|
||||
$this->setMailPoetSendingMethod();
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['auth@email.com']);
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['authorized' => ['auth@email.com']]);
|
||||
$controller->checkAuthorizedEmailAddresses();
|
||||
$error = MailerLog::getError();
|
||||
expect(is_array($error));
|
||||
@@ -205,7 +203,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
$this->settings->set('installed_at', new Carbon());
|
||||
$this->settings->set('sender.address', 'auth@email.com');
|
||||
$this->setMailPoetSendingMethod();
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['auth@email.com']);
|
||||
$controller = $this->getController($authorizedEmailsFromApi = ['authorized' => ['auth@email.com']]);
|
||||
$controller->checkAuthorizedEmailAddresses();
|
||||
$error = $this->settings->get(AuthorizedEmailsController::AUTHORIZED_EMAIL_ADDRESSES_ERROR_SETTING);
|
||||
verify(count($error['invalid_senders_in_newsletters']))->equals(1);
|
||||
@@ -216,7 +214,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
|
||||
public function testItSetsFromAddressInSettings() {
|
||||
$this->settings->set('sender.address', '');
|
||||
$controller = $this->getController(['authorized@email.com']);
|
||||
$controller = $this->getController(['authorized' => ['authorized@email.com']]);
|
||||
$controller->setFromEmailAddress('authorized@email.com');
|
||||
verify($this->settings->get('sender.address'))->same('authorized@email.com');
|
||||
}
|
||||
@@ -224,12 +222,17 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
public function testItSetsFromAddressInSettingsWhenDomainIsVerified() {
|
||||
$this->settings->set('sender.address', '');
|
||||
|
||||
$bridgeMock = $this->make(Bridge::class, [
|
||||
'getAuthorizedEmailAddresses' => Expected::once(['authorized' => []]),
|
||||
]);
|
||||
|
||||
$verifiedDomains = ['email.com'];
|
||||
$senderDomainMock = $this->make(AuthorizedSenderDomainController::class, [
|
||||
'getVerifiedSenderDomainsIgnoringCache' => Expected::once($verifiedDomains),
|
||||
]);
|
||||
|
||||
$mocks = [
|
||||
'Bridge' => $bridgeMock,
|
||||
'AuthorizedSenderDomainController' => $senderDomainMock,
|
||||
];
|
||||
$controller = $this->getControllerWithCustomMocks($mocks);
|
||||
@@ -373,7 +376,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->settings->set('sender.address', '');
|
||||
$controller = $this->getController(['authorized@email.com']);
|
||||
$controller = $this->getController(['authorized' => ['authorized@email.com']]);
|
||||
$controller->setFromEmailAddress('authorized@email.com');
|
||||
verify($newsletter->getSenderAddress())->same('authorized@email.com');
|
||||
|
||||
@@ -392,7 +395,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->settings->set('sender.address', '');
|
||||
$controller = $this->getController(['authorized@email.com']);
|
||||
$controller = $this->getController(['authorized' => ['authorized@email.com']]);
|
||||
$controller->setFromEmailAddress('authorized@email.com');
|
||||
verify($newsletter->getSenderAddress())->same('authorized@email.com');
|
||||
|
||||
@@ -411,7 +414,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->settings->set('sender.address', '');
|
||||
$controller = $this->getController(['authorized@email.com']);
|
||||
$controller = $this->getController(['authorized' => ['authorized@email.com']]);
|
||||
$controller->setFromEmailAddress('authorized@email.com');
|
||||
verify($newsletter->getSenderAddress())->same('invalid@email.com');
|
||||
|
||||
@@ -423,7 +426,7 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
public function testSetsFromAddressThrowsForUnauthorizedEmail() {
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage("Email address 'invalid@email.com' is not authorized");
|
||||
$controller = $this->getController(['authorized@email.com']);
|
||||
$controller = $this->getController(['authorized' => ['authorized@email.com']]);
|
||||
$controller->setFromEmailAddress('invalid@email.com');
|
||||
}
|
||||
|
||||
@@ -490,15 +493,13 @@ class AuthorizedEmailsControllerTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testItReturnsTrueWhenAuthorizedForIsEmailAddressAuthorized() {
|
||||
$array = ['authorized@email.com'];
|
||||
$controller = $this->getController($array);
|
||||
$controller = $this->getController(['authorized' => ['authorized@email.com']]);
|
||||
$result = $controller->isEmailAddressAuthorized('authorized@email.com');
|
||||
verify($result)->equals(true);
|
||||
}
|
||||
|
||||
public function testItReturnsFalseWhenNotAuthorizedForIsEmailAddressAuthorized() {
|
||||
$array = ['authorized@email.com'];
|
||||
$controller = $this->getController($array);
|
||||
$controller = $this->getController(['authorized' => ['authorized@email.com']]);
|
||||
$result = $controller->isEmailAddressAuthorized('pending@email.com');
|
||||
verify($result)->equals(false);
|
||||
}
|
||||
|
@@ -262,19 +262,6 @@ class BridgeTest extends \MailPoetTest {
|
||||
$wp->removeFilter('mailpoet_bridge_api_request_timeout', $filter);
|
||||
}
|
||||
|
||||
public function testItReturnsOnlyAuthorizedEmails() {
|
||||
$array = [
|
||||
'pending' => ['pending@email.com'],
|
||||
'authorized' => ['authorized@email.com'],
|
||||
'main' => 'main@email.com',
|
||||
];
|
||||
$api = Stub::make(new API(null), ['getAuthorizedEmailAddresses' => $array], $this);
|
||||
$this->bridge->api = $api;
|
||||
|
||||
$result = $this->bridge->getAuthorizedEmailAddresses();
|
||||
verify($result)->same(['authorized@email.com']);
|
||||
}
|
||||
|
||||
public function testItReturnsAllUserEmails() {
|
||||
$array = [
|
||||
'pending' => ['pending@email.com'],
|
||||
@@ -284,7 +271,7 @@ class BridgeTest extends \MailPoetTest {
|
||||
$api = Stub::make(new API(null), ['getAuthorizedEmailAddresses' => $array], $this);
|
||||
$this->bridge->api = $api;
|
||||
|
||||
$result = $this->bridge->getAuthorizedEmailAddresses('all');
|
||||
$result = $this->bridge->getAuthorizedEmailAddresses();
|
||||
verify($result)->same($array);
|
||||
}
|
||||
|
||||
@@ -292,7 +279,7 @@ class BridgeTest extends \MailPoetTest {
|
||||
$api = Stub::make(new API(null), ['getAuthorizedEmailAddresses' => []], $this);
|
||||
$this->bridge->api = $api;
|
||||
|
||||
$result = $this->bridge->getAuthorizedEmailAddresses('all');
|
||||
$result = $this->bridge->getAuthorizedEmailAddresses();
|
||||
verify($result)->same([]);
|
||||
}
|
||||
|
||||
@@ -304,14 +291,6 @@ class BridgeTest extends \MailPoetTest {
|
||||
verify($result)->same([]);
|
||||
}
|
||||
|
||||
public function testItReturnsAnEmptyArrayIfNoNullForAuthorizedParam() {
|
||||
$api = Stub::make(new API(null), ['getAuthorizedEmailAddresses' => null], $this);
|
||||
$this->bridge->api = $api;
|
||||
|
||||
$result = $this->bridge->getAuthorizedEmailAddresses();
|
||||
verify($result)->same([]);
|
||||
}
|
||||
|
||||
public function testItReturnsTheRightDataForSenderDomains() {
|
||||
// when API returns null
|
||||
$api = Stub::make(new API(null), ['getAuthorizedSenderDomains' => null], $this);
|
||||
|
Reference in New Issue
Block a user