Files
portal/app/tests/Feature/Sales/SmsRouterBuildTest.php
T

61 lines
2.8 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
use App\Services\Sms\Providers\FakeSmsProvider;
use App\Services\Sms\SmsRouter;
it('в песочнице роутер несёт только заглушку', function () {
config()->set('services.sms.sandbox', true);
app()->forgetInstance(SmsRouter::class);
$router = app(SmsRouter::class);
expect($router->pick('mts'))->toBeInstanceOf(FakeSmsProvider::class);
});
it('в бою поднимаются только включённые каналы с ключами', function () {
config()->set('services.sms.sandbox', false);
config()->set('services.smsc.login', 'l');
config()->set('services.smsc.password', 'p');
config()->set('services.sms.mts.token', ''); // ключа нет → канал не встаёт
config()->set('services.sms.providers.mts.enabled', true);
config()->set('services.sms.providers.smsc.enabled', true);
app()->forgetInstance(SmsRouter::class);
$router = app(SmsRouter::class);
// МТС-ключа нет → МТС-номер уходит универсалу (СМС-центр).
expect($router->pick('mts')?->key())->toBe('smsc')
->and($router->pick('')?->key())->toBe('smsc');
});
it('канал Теле2 встаёт, когда включён и есть логин с паролем', function () {
config()->set('services.sms.sandbox', false);
config()->set('services.smsc.login', 'l');
config()->set('services.smsc.password', 'p');
config()->set('services.sms.providers.smsc.enabled', true);
config()->set('services.sms.tele2.login', 'liderra_api');
config()->set('services.sms.tele2.password', 'secret');
config()->set('services.sms.providers.tele2.enabled', true);
config()->set('services.sms.providers.tele2.serves', ['tele2']);
app()->forgetInstance(SmsRouter::class);
// Номер Теле2 уходит своему оператору, чужой — по-прежнему универсалу.
expect(app(SmsRouter::class)->pick('tele2')?->key())->toBe('tele2')
->and(app(SmsRouter::class)->pick('beeline')?->key())->toBe('smsc');
});
it('без логина Теле2 канал не встаёт и номер уходит универсалу', function () {
config()->set('services.sms.sandbox', false);
config()->set('services.smsc.login', 'l');
config()->set('services.smsc.password', 'p');
config()->set('services.sms.providers.smsc.enabled', true);
config()->set('services.sms.tele2.login', ''); // ключа нет → канал не встаёт
config()->set('services.sms.providers.tele2.enabled', true);
config()->set('services.sms.providers.tele2.serves', ['tele2']);
app()->forgetInstance(SmsRouter::class);
expect(app(SmsRouter::class)->pick('tele2')?->key())->toBe('smsc');
});