Skip to content

Commit cccb479

Browse files
committed
adding isChannelEnabledInConfig 2
1 parent 24cbe7d commit cccb479

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

src/MFA.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ public function getEnabledChannels(Authenticatable $user): array
593593
* @param string $channelName The channel name to check
594594
* @return bool True if the channel is enabled in config
595595
*/
596-
protected function isChannelEnabledInConfig(string $channelName): bool
596+
public function isChannelEnabledInConfig(string $channelName): bool
597597
{
598598
$channelName = strtolower($channelName);
599599

tests/Feature/MFATest.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,4 +218,55 @@ public function send(Authenticatable $user, string $code, array $options = []):
218218
expect($enabledChannels)->not->toHaveKey('email');
219219
});
220220

221+
it('can check if a channel is enabled in config', function () {
222+
$mfa = app(MFA::class);
223+
224+
// Test with default config (email, sms, and recovery should be enabled)
225+
expect($mfa->isChannelEnabledInConfig('email'))->toBeTrue();
226+
expect($mfa->isChannelEnabledInConfig('sms'))->toBeTrue();
227+
expect($mfa->isChannelEnabledInConfig('recovery'))->toBeTrue();
228+
expect($mfa->isChannelEnabledInConfig('totp'))->toBeTrue(); // totp doesn't have enabled config, defaults to true
229+
230+
// Test with custom config where email is disabled
231+
$config = config('mfa');
232+
$config['email']['enabled'] = false;
233+
$mfa = new MFA($config);
234+
235+
expect($mfa->isChannelEnabledInConfig('email'))->toBeFalse();
236+
expect($mfa->isChannelEnabledInConfig('sms'))->toBeTrue();
237+
expect($mfa->isChannelEnabledInConfig('recovery'))->toBeTrue();
238+
expect($mfa->isChannelEnabledInConfig('totp'))->toBeTrue();
239+
240+
// Test with custom config where sms is disabled
241+
$config = config('mfa');
242+
$config['sms']['enabled'] = false;
243+
$mfa = new MFA($config);
244+
245+
expect($mfa->isChannelEnabledInConfig('email'))->toBeTrue();
246+
expect($mfa->isChannelEnabledInConfig('sms'))->toBeFalse();
247+
expect($mfa->isChannelEnabledInConfig('recovery'))->toBeTrue();
248+
expect($mfa->isChannelEnabledInConfig('totp'))->toBeTrue();
249+
});
250+
251+
it('can check channel config via facade', function () {
252+
// Test via facade (using app() to get the instance)
253+
$mfa = app(MFA::class);
254+
expect($mfa->isChannelEnabledInConfig('email'))->toBeTrue();
255+
expect($mfa->isChannelEnabledInConfig('sms'))->toBeTrue();
256+
expect($mfa->isChannelEnabledInConfig('recovery'))->toBeTrue();
257+
expect($mfa->isChannelEnabledInConfig('totp'))->toBeTrue();
258+
});
259+
260+
it('can check recovery codes config when disabled', function () {
261+
// Test with custom config where recovery is disabled
262+
$config = config('mfa');
263+
$config['recovery']['enabled'] = false;
264+
$mfa = new MFA($config);
265+
266+
expect($mfa->isChannelEnabledInConfig('email'))->toBeTrue();
267+
expect($mfa->isChannelEnabledInConfig('sms'))->toBeTrue();
268+
expect($mfa->isChannelEnabledInConfig('recovery'))->toBeFalse();
269+
expect($mfa->isChannelEnabledInConfig('totp'))->toBeTrue();
270+
});
271+
221272

0 commit comments

Comments
 (0)