Files
Xboard/tests/Unit/MailServiceConfigTest.php
T
yinjianm a4e78b864a fix(api): 修复邮件队列超时并补齐调度进程
延长 SendEmailJob 超时并改为超时直接失败,补充重试退避、
失败日志与收件人脱敏,避免 send_email 队列批量超时重试。

新增 MAIL_TIMEOUT 与 QUEUE_RETRY_AFTER 配置,并抽出邮件运行时
配置与 HTML 内容服务,确保 Horizon 常驻进程使用最新邮件配置。

为 Docker、supervisor 与 compose 样例补齐 scheduler 进程,并在
节点管理端开启墙检测托管时立即触发一次检测,保证定时任务持续生效。
2026-04-28 13:32:58 +08:00

57 lines
1.8 KiB
PHP

<?php
namespace Tests\Unit;
use App\Services\MailRuntimeConfig;
use PHPUnit\Framework\TestCase;
class MailServiceConfigTest extends TestCase
{
public function test_mail_log_config_masks_sensitive_values_recursively(): void
{
$config = [
'host' => 'smtp.example.com',
'password' => 'secret-password',
'mailers' => [
'smtp' => [
'username' => 'mailer',
'password' => 'nested-secret',
'timeout' => 30,
],
'ses' => [
'key' => 'aws-key',
'secret' => 'aws-secret',
],
],
];
$sanitized = $this->mailConfigForLog($config);
$this->assertSame('smtp.example.com', $sanitized['host']);
$this->assertSame('******', $sanitized['password']);
$this->assertSame('mailer', $sanitized['mailers']['smtp']['username']);
$this->assertSame('******', $sanitized['mailers']['smtp']['password']);
$this->assertSame(30, $sanitized['mailers']['smtp']['timeout']);
$this->assertSame('******', $sanitized['mailers']['ses']['key']);
$this->assertSame('******', $sanitized['mailers']['ses']['secret']);
}
public function test_mail_log_config_keeps_empty_sensitive_values_empty(): void
{
$sanitized = $this->mailConfigForLog([
'password' => null,
'secret' => '',
'timeout' => 30,
]);
$this->assertNull($sanitized['password']);
$this->assertSame('', $sanitized['secret']);
$this->assertSame(30, $sanitized['timeout']);
}
private function mailConfigForLog(array $config): array
{
return MailRuntimeConfig::configForLog($config);
}
}