View source
<?php
namespace Drupal\Tests\reroute_email\Functional;
use Drupal\Component\Render\FormattableMarkup;
class DefaultAddressesTest extends RerouteEmailTestBase {
protected static $modules = [
'reroute_email',
'dblog',
];
protected function setUp() : void {
$this->permissions[] = 'access site reports';
parent::setUp();
}
public function testRerouteDefaultAddress() {
$site_mail = $this
->config('system.site')
->get('mail');
$this
->assertTrue(isset($site_mail), new FormattableMarkup('Site mail is not empty: @site_mail.', [
'@site_mail' => $site_mail,
]));
$this->rerouteConfig
->set(REROUTE_EMAIL_ENABLE, TRUE)
->save();
$this
->drupalGet('admin/config/development/reroute_email');
$this
->assertSession()
->checkboxChecked('edit-enable');
$this
->assertTrue($this->rerouteConfig
->get(REROUTE_EMAIL_ENABLE), 'Rerouting is enabled.');
$this
->assertSession()
->fieldValueEquals(REROUTE_EMAIL_ADDRESS, $site_mail);
$this
->assertNull($this->rerouteConfig
->get(REROUTE_EMAIL_ADDRESS), 'Reroute email destination address is not configured.');
$this
->drupalGet('admin/config/development/reroute_email/test');
$this
->submitForm([
'to' => 'to@example.com',
], 'Send email');
$this
->assertSession()
->pageTextContains(t('Test email submitted for delivery from test form.'));
$this
->assertTrue(count($this
->getMails()) === 1, 'Exactly one email captured.');
$this
->assertMail('to', $site_mail, new FormattableMarkup('Email was properly rerouted to site email address: @default_destination.', [
'@default_destination' => $site_mail,
]));
$this
->config('system.site')
->set('mail', NULL)
->save();
$this
->configureRerouteEmail(TRUE, '', '');
$this
->assertTrue($this->rerouteConfig
->get(REROUTE_EMAIL_ADDRESS) === '', 'Reroute email destination address is an empty string.');
$this
->assertTrue($this->rerouteConfig
->get(REROUTE_EMAIL_ALLOWLIST) === '', 'Allowed email address is an empty string.');
\Drupal::state()
->set('system.test_mail_collector', []);
$this
->drupalGet('admin/config/development/reroute_email/test');
$this
->submitForm([
'to' => 'to@example.com',
], t('Send email'));
$mails = $this
->getMails();
$this
->assertTrue(count($mails) == 0, 'Email sending was properly aborted because rerouting email address is an empty string.');
$this
->assertSession()
->responseMatches(t('/@message_id.*was aborted by reroute email/', [
'@message_id' => 'reroute_email_test_email_form',
]));
$this
->drupalGet('admin/reports/dblog');
$dblog_link = $this
->xpath('//table[@id="admin-dblog"]/tbody/tr[contains(@class,"dblog-reroute-email")][1]/td[text()="reroute_email"]/following-sibling::td/a[contains(text(),"reroute_email")]');
$link_label = $dblog_link[0]
->getText();
$this
->assertTrue(isset($dblog_link[0]), new FormattableMarkup('Logged a message in dblog: <em>@link</em>.', [
'@link' => $link_label,
]));
$this
->clickLink($link_label);
$this
->assertSession()
->responseMatches(t('/Aborted email sending for.*@message_id.*Detailed email data/', [
'@message_id' => 'reroute_email_test_email_form',
]));
}
}