Update test cases in ServicesTest

support sending congratulatory email when sender domain is verified but
no authorized email address

MAILPOET-4601
This commit is contained in:
Oluwaseun Olorunsola
2022-09-14 08:45:23 +01:00
committed by Aschepikov
parent 9e19e157c8
commit 32a58301b0

View File

@ -489,6 +489,28 @@ class ServicesTest extends \MailPoetTest {
expect($response->errors[0]['message'])->equals('No FROM email addresses are authorized.');
}
public function testCongratulatoryEmailRespondsWithDifferentErrorWhenNoEmailAuthorizedButDomainIsVerified() {
$this->settings->set(Mailer::MAILER_CONFIG_SETTING_NAME, ['method' => Mailer::METHOD_MAILPOET]);
$bridge = $this->make(Bridge::class, [
'getAuthorizedEmailAddresses' => [],
]);
$verifiedDomains = ['email.com'];
$senderDomainMock = $this->make(AuthorizedSenderDomainController::class, [
'getVerifiedSenderDomains' => Expected::once($verifiedDomains),
]);
$servicesEndpoint = $this->createServicesEndpointWithMocks([
'bridge' => $bridge,
'senderDomain' => $senderDomainMock
]);
$response = $servicesEndpoint->sendCongratulatoryMssEmail();
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
// when the sender domain is verified, we don't insist the FROM email be authorized
// we instead get a different error when the sender email is not avaliable
expect($response->errors[0]['message'])->equals('Sender email address is not set.');
}
public function testCongratulatoryEmailRespondsWithErrorWhenNoSenderSet() {
$this->settings->set(Mailer::MAILER_CONFIG_SETTING_NAME, ['method' => Mailer::METHOD_MAILPOET]);
$this->settings->set('sender.address', null);
@ -515,6 +537,33 @@ class ServicesTest extends \MailPoetTest {
expect($response->errors[0]['message'])->equals("Sender email address 'unauthorized@email.com' is not authorized.");
}
public function testCongratulatoryEmailRespondsWithSuccessWhenSenderNotAuthorizedButDomainIsVerified() {
$this->settings->set(Mailer::MAILER_CONFIG_SETTING_NAME, ['method' => Mailer::METHOD_MAILPOET]);
$this->settings->set('sender.address', 'unauthorized@email.com');
$bridge = $this->make(Bridge::class, [
'getAuthorizedEmailAddresses' => ['authorized@email.com'],
]);
$congratulatoryEmailController = $this->make(CongratulatoryMssEmailController::class, [
'sendCongratulatoryEmail' => Expected::once('unauthorized@email.com'),
]);
$verifiedDomains = ['email.com'];
$senderDomainMock = $this->make(AuthorizedSenderDomainController::class, [
'getVerifiedSenderDomains' => Expected::once($verifiedDomains),
]);
$servicesEndpoint = $this->createServicesEndpointWithMocks([
'bridge' => $bridge,
'congratulatoryEmailController' => $congratulatoryEmailController,
'senderDomain' => $senderDomainMock
]);
$response = $servicesEndpoint->sendCongratulatoryMssEmail();
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(['email_address' => 'unauthorized@email.com']);
}
public function testCongratulatoryEmailRespondsWithErrorWhenSendingFails() {
$this->settings->set(Mailer::MAILER_CONFIG_SETTING_NAME, ['method' => Mailer::METHOD_MAILPOET]);
$this->settings->set('sender.address', 'authorized@email.com');
@ -551,7 +600,7 @@ class ServicesTest extends \MailPoetTest {
$this->diContainer->get(ServicesChecker::class),
$mocks['congratulatoryEmailController'] ?? $this->diContainer->get(CongratulatoryMssEmailController::class),
$this->diContainer->get(WPFunctions::class),
$this->diContainer->get(AuthorizedSenderDomainController::class)
$mocks['senderDomain'] ?? $this->diContainer->get(AuthorizedSenderDomainController::class)
);
}
}