NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Pridajte trait InteractsWithAuthentication do test case, ktorý má HTTP testovací concern Laravelu:

use RoundlyConsulting\Auth\Enums\ActivityOutcome;
use RoundlyConsulting\Auth\Enums\ActivityType;
use RoundlyConsulting\Auth\Enums\InvalidationReason;
use RoundlyConsulting\Auth\Testing\InteractsWithAuthentication;

abstract class TestCase extends BaseTestCase
{
    use InteractsWithAuthentication;
}

$this->actingAsAccount($user)->getJson('/api/orders')->assertOk();        // a REAL token pair (fires TokensIssued)
$this->assertLoginActivity('users', ActivityType::PasswordLogin, ActivityOutcome::Succeeded);
$this->assertTokensInvalidated($user, InvalidationReason::PasswordChanged);   // moved since actingAsAccount() (or pass since:)
PomocníkPopis
actingAsAccount($account, ?$guard, $authMethods)Vydá skutočný pár tokenov cez issueTokens() (takže nastane TokensIssued) a nastaví Authorization: Bearer; požiadavky prechádzajú skutočným jwt guardom, audience, denylistom aj kontrolou verzie tokenu.
assertLoginActivity($guard, ActivityType, ActivityOutcome)Existuje zodpovedajúci záznam prihlasovacej aktivity.
assertTokensInvalidated($account, InvalidationReason, ?$guard, ?$since)Od actingAsAccount() (alebo since:) sa verzia tokenu posunula a pri rozsahu all neprežila žiadna relácia — pri dôvode s rozsahom none sa naopak neposunula.

Overenie doménových udalostí

Authentication::fake() zámerne neexistuje. Každý zápis už spúšťa doménovú udalosť — overíte ju cez Event::fake() v Laraveli, zatiaľ čo beží skutočný tok — a pomocníci vyššie vydávajú skutočné páry tokenov, takže test prejde kontrolami guardu, audience, denylistu aj verzie tokenu, ktoré by stub skryl:

use Illuminate\Support\Facades\Event;
use RoundlyConsulting\Auth\Events\PasswordChanged;
use RoundlyConsulting\Auth\Facades\Authentication;

Event::fake([PasswordChanged::class]);

Authentication::passwords()->set($user, 'n3w-Passphrase!');

Event::assertDispatched(PasswordChanged::class);

Celý tok proti endpointom balíka:

use Illuminate\Support\Facades\Hash;
use RoundlyConsulting\Auth\Enums\ActivityOutcome;
use RoundlyConsulting\Auth\Enums\ActivityType;

it('signs in with a password', function () {
    $user = User::factory()->create(['password' => Hash::make('correct-horse-battery')]);

    $this->postJson('/users/auth/login', [       // routes.enabled = true, default prefix
        'identifier' => $user->email,
        'password' => 'correct-horse-battery',
    ])->assertOk()->assertJsonPath('status', 'authenticated');

    $this->assertLoginActivity('users', ActivityType::PasswordLogin, ActivityOutcome::Succeeded);
});

TwoFactor::fake() a Passkeys::fake() z nižších balíkov naďalej fungujú a RoundlyConsulting\Passkeys\Testing\VirtualAuthenticator spúšťa skutočné passkey ceremoniály. Factories sú pripravené pre všetky štyri modely balíka.

Testy balíka

composer test            # Pest
composer test-coverage   # Pest with --min=95
composer analyse         # Larastan level 7
composer format          # Pint

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.