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(); });