File: /home/xedaptot/be.naniguide.com/tests/Feature/MailerServiceProviderTest.php
<?php
use App\Model\SendingServer;
use App\Model\Setting;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Tests\TestCase;
uses(TestCase::class, DatabaseTransactions::class);
/**
* MailerServiceProvider builds an in-memory `xmailer` SendingServer from
* `mail.*` settings (mailer.driver, mailer.host, smtp_*, sendmail_path).
* Resolves driver via DriverRegistry.
*
* Catches: legacy code path used `SendingServerSmtp::instantiateFromSettings`
* (deleted). Provider now constructs SendingServer + setConfigMany.
*/
test('xmailer binding for SMTP type returns SendingServer with config + driver()', function () {
Setting::set('mailer.mailer', 'smtp');
Setting::set('mailer.host', 'smtp.test.example.com');
Setting::set('mailer.port', '587');
Setting::set('mailer.encryption', 'tls');
Setting::set('mailer.username', 'mailer-user');
Setting::set('mailer.password', 'mailer-pass');
Setting::set('mailer.from.name', 'Test From');
Setting::set('mailer.from.address', '[email protected]');
/** @var SendingServer $server */
$server = app('xmailer');
expect($server)->toBeInstanceOf(SendingServer::class);
expect($server->type)->toBe('smtp');
expect($server->getConfig('host'))->toBe('smtp.test.example.com');
expect($server->getConfig('smtp_username'))->toBe('mailer-user');
expect($server->getConfig('smtp_password'))->toBe('mailer-pass');
expect($server->getConfig('smtp_port'))->toBe('587');
expect($server->getConfig('smtp_protocol'))->toBe('tls');
// Driver must resolve (no UnknownSendingServerType throw).
$driver = $server->driver();
expect($driver)->toBeInstanceOf(\App\SendingServers\Drivers\Vendors\Generic\SmtpDriver::class);
});
test('xmailer binding for sendmail type returns SendingServer with sendmail_path config', function () {
Setting::set('mailer.mailer', 'sendmail');
Setting::set('mailer.sendmail_path', '/bin/sh');
Setting::set('mailer.from.name', 'Test From');
Setting::set('mailer.from.address', '[email protected]');
/** @var SendingServer $server */
$server = app('xmailer');
expect($server)->toBeInstanceOf(SendingServer::class);
expect($server->type)->toBe('sendmail');
expect($server->getConfig('sendmail_path'))->toBe('/bin/sh');
$driver = $server->driver();
expect($driver)->toBeInstanceOf(\App\SendingServers\Drivers\Vendors\Generic\SendmailDriver::class);
});
test('xmailer binding throws LogicException for unknown mailer type', function () {
Setting::set('mailer.mailer', 'made-up-mailer');
expect(fn () => app('xmailer'))
->toThrow(\LogicException::class, "not found");
});