Laravel Auth

PHP MIT

Laravel Auth by GhostCompiler adds advanced authentication for Laravel with TOTP 2FA, passkeys via WebAuthn, OTP channels (email, SMS, WhatsApp), trusted devices, and tenant-aware social login.

Stars
2
Forks
0
Downloads
N/A
Open Issues
0
Files main

Repository Files

Loading file structure...
tests/Unit/AuthStateTest.php
<?php

declare(strict_types=1);

namespace GhostCompiler\LaravelAuth\Tests\Unit;

use GhostCompiler\LaravelAuth\Enums\AuthState;
use GhostCompiler\LaravelAuth\Tests\TestCase;

class AuthStateTest extends TestCase
{
    public function test_enum_has_expected_string_values(): void
    {
        self::assertSame('guest', AuthState::Guest->value);
        self::assertSame('password_verified', AuthState::PasswordVerified->value);
        self::assertSame('two_factor_pending', AuthState::TwoFactorPending->value);
        self::assertSame('fully_authenticated', AuthState::FullyAuthenticated->value);
    }

    public function test_try_from_returns_correct_case_for_valid_value(): void
    {
        self::assertSame(AuthState::Guest, AuthState::tryFrom('guest'));
        self::assertSame(AuthState::PasswordVerified, AuthState::tryFrom('password_verified'));
        self::assertSame(AuthState::TwoFactorPending, AuthState::tryFrom('two_factor_pending'));
        self::assertSame(AuthState::FullyAuthenticated, AuthState::tryFrom('fully_authenticated'));
    }

    public function test_try_from_returns_null_for_unknown_value(): void
    {
        self::assertNull(AuthState::tryFrom('unknown_state'));
        self::assertNull(AuthState::tryFrom(''));
        self::assertNull(AuthState::tryFrom('GUEST'));
    }

    public function test_from_throws_on_invalid_value(): void
    {
        $this->expectException(\ValueError::class);
        AuthState::from('invalid');
    }

    public function test_cases_returns_all_four_states(): void
    {
        $cases = AuthState::cases();
        self::assertCount(4, $cases);
    }

    public function test_state_comparison_works_correctly(): void
    {
        $state = AuthState::FullyAuthenticated;
        self::assertTrue($state === AuthState::FullyAuthenticated);
        self::assertFalse($state === AuthState::Guest);
    }
}