settings = SettingsController::getInstance(); $this->notice = $this->diContainer->get(SenderDomainAuthenticationNotices::class); $this->authorizedSenderDomainController = $this->diContainer->get(AuthorizedSenderDomainController::class); $this->lowerLimit = AuthorizedSenderDomainController::LOWER_LIMIT; $this->upperLimit = AuthorizedSenderDomainController::UPPER_LIMIT; } public function testItCanGetDefaultFromAddress(): void { $this->settings->set('sender', [ 'name' => 'Sender', 'address' => 'sender@test.com', ]); $defaultFrom = $this->notice->getDefaultFromAddress(); $this->assertSame('sender@test.com', $defaultFrom); } public function testItCanGetDefaultFromDomain(): void { $this->settings->set('sender', [ 'name' => 'Sender', 'address' => 'sender@test.com', ]); $defaultDomain = $this->notice->getDefaultFromDomain(); $this->assertSame('test.com', $defaultDomain); } public function testItCanDetermineIfUsingFreeMailServiceForFromAddress(): void { $this->settings->set('sender', [ 'name' => 'Sender', 'address' => 'sender@hotmail.com', ]); $this->assertTrue($this->notice->isFreeMailUser()); $this->settings->set('sender', [ 'name' => 'Sender', 'address' => 'sender@customdomainthatprobablydoesnotevenexist.com', ]); $this->assertFalse($this->notice->isFreeMailUser()); } public function testItRetrievesAppropriateMessageForFreeUsersThatAreBigSenders(): void { $email = 'sender@hotmail.com'; $this->settings->set('sender', [ 'name' => 'Sender', 'address' => $email, ]); $rewrittenEmail = $this->authorizedSenderDomainController->getRewrittenEmailAddress($email); $noticeMessage = $this->notice->getNoticeContentForFreeMailUsers($this->upperLimit + 1); $this->assertStringContainsString('Your newsletters and post notifications have been paused. Update your sender email address to a branded domain to continue sending your campaigns', $noticeMessage); $this->assertStringContainsString(sprintf('Your marketing automations and transactional emails will temporarily be sent from %s', $rewrittenEmail), $noticeMessage); $this->assertStringContainsString('Update sender email', $noticeMessage); } public function testItRetrievesAppropriateMessageForFreeMailUsersThatAreNotBigSenders(): void { $email = 'sender@hotmail.com'; $this->settings->set('sender', [ 'name' => 'Sender', 'address' => $email, ]); $rewrittenEmail = $this->authorizedSenderDomainController->getRewrittenEmailAddress($email); $noticeMessage = $this->notice->getNoticeContentForFreeMailUsers($this->upperLimit); $this->assertStringContainsString('Update your sender email address to a branded domain to continue sending your campaigns', $noticeMessage); $this->assertStringContainsString(sprintf('Your existing scheduled and active emails will temporarily be sent from %s', $rewrittenEmail), $noticeMessage); $this->assertStringContainsString('Update sender email', $noticeMessage); } public function testItRetrievesAppropriateMessageForBrandedDomainsForBigSenders(): void { $email = 'sender@brandeddomain.com'; $this->settings->set('sender', [ 'name' => 'Sender', 'address' => $email, ]); $rewrittenEmail = $this->authorizedSenderDomainController->getRewrittenEmailAddress($email); $noticeMessage = $this->notice->getNoticeContentForBrandedDomainUsers(false, $this->upperLimit + 1); $this->assertStringContainsString('Your newsletters and post notifications have been paused. Authenticate your sender domain to continue sending.', $noticeMessage); $this->assertStringContainsString('Your marketing automations and transactional emails will temporarily be sent from', $noticeMessage); $this->assertStringContainsString($rewrittenEmail, $noticeMessage); $this->assertStringContainsString('Authenticate domain', $noticeMessage); } public function testItRetrievesAppropriateMessageForBrandedDomainsThatAreNotBigSenders(): void { $email = 'sender@brandeddomain.com'; $this->settings->set('sender', [ 'name' => 'Sender', 'address' => $email, ]); $rewrittenEmail = $this->authorizedSenderDomainController->getRewrittenEmailAddress($email); $noticeMessage = $this->notice->getNoticeContentForBrandedDomainUsers(false, $this->upperLimit); $this->assertStringContainsString('Authenticate your sender domain to send new emails.', $noticeMessage); $this->assertStringContainsString('Your existing scheduled and active emails will temporarily be sent from', $noticeMessage); $this->assertStringContainsString($rewrittenEmail, $noticeMessage); $this->assertStringContainsString('Authenticate domain', $noticeMessage); } public function testItRetrievesAppropriateMessageForBrandedDomainsForSmallSenders(): void { $email = 'sender@brandeddomain.com'; $this->settings->set('sender', [ 'name' => 'Sender', 'address' => $email, ]); $message = $this->notice->getNoticeContentForBrandedDomainUsers(false, $this->lowerLimit); $this->assertStringContainsString('Authenticate your sender domain to improve email delivery rates.', $message); $this->assertStringContainsString('Authenticate domain', $message); } public function testItRetrievesAppropriateMessageForBrandedDomainsThatArePartiallyVerified(): void { $email = 'sender@brandeddomain.com'; $this->settings->set('sender', [ 'name' => 'Sender', 'address' => $email, ]); $message = $this->notice->getNoticeContentForBrandedDomainUsers(true, $this->upperLimit); $this->assertStringContainsString('Authenticate your sender domain to improve email delivery rates.', $message); $this->assertStringContainsString('Authenticate domain', $message); } }