HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/ai.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");
});