81 lines
2.9 KiB
PHP
81 lines
2.9 KiB
PHP
<?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();
|
|
});
|