Testovanie
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ík | Popis |
|---|---|
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 # PintPrejavte 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 kryptomienOdoslaní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.