Files
portal/app/tests/Feature/ClientSms/BeelineChannelWiringTest.php
T

81 lines
2.9 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
use App\Services\Sms\Providers\BeelineSmsProvider;
use App\Services\Sms\SmsRouter;
/** Собрать маршрутизатор заново — настройки читаются в момент сборки. */
function bee_router(): SmsRouter
{
app()->forgetInstance(SmsRouter::class);
return app(SmsRouter::class);
}
/** Есть ли среди живых каналов Билайн. */
function bee_v_reestre(SmsRouter $router): ?BeelineSmsProvider
{
foreach ($router->providers() as $provider) {
if ($provider instanceof BeelineSmsProvider) {
return $provider;
}
}
return null;
}
beforeEach(function () {
// Песочница подменяет ВСЕ каналы заглушкой — для проверки реестра её гасим.
config(['services.sms.sandbox' => false]);
});
it('выключенный канал Билайна в реестр не попадает', function () {
config([
'services.sms.providers.beeline' => ['enabled' => false, 'serves' => ['beeline'], 'price_kopecks' => ['*' => 475]],
'services.sms.beeline.login' => '1834321',
'services.sms.beeline.password' => 'secret',
]);
expect(bee_v_reestre(bee_router()))->toBeNull();
});
it('включённый канал без учётных данных поток не роняет, а просто не встаёт', function () {
config([
'services.sms.providers.beeline' => ['enabled' => true, 'serves' => ['beeline'], 'price_kopecks' => ['*' => 475]],
'services.sms.beeline.login' => '',
'services.sms.beeline.password' => '',
'services.sms.beeline.token' => '',
]);
expect(bee_v_reestre(bee_router()))->toBeNull();
});
it('включённый канал с логином встаёт и берёт цену из реестра', function () {
config([
'services.sms.providers.beeline' => ['enabled' => true, 'serves' => ['beeline'], 'price_kopecks' => ['*' => 475]],
'services.sms.beeline.login' => '1834321',
'services.sms.beeline.password' => 'secret',
'services.sms.beeline.token' => '',
'services.sms.beeline.naming' => 'Liderra.ru',
]);
$provider = bee_v_reestre(bee_router());
expect($provider)->not->toBeNull()
->and($provider->key())->toBe('beeline')
->and($provider->servesOperators())->toBe(['beeline'])
->and($provider->priceKopecks('beeline'))->toBe(475);
});
it('одного ключа довольно — логин с паролем не обязательны', function () {
config([
'services.sms.providers.beeline' => ['enabled' => true, 'serves' => ['beeline'], 'price_kopecks' => ['*' => 475]],
'services.sms.beeline.login' => '',
'services.sms.beeline.password' => '',
'services.sms.beeline.token' => 'GvEqzI1TSmw7bDn',
]);
expect(bee_v_reestre(bee_router()))->not->toBeNull();
});