/
githubmirror
/
framework
Обзор
Документация
Войти
/
githubmirror
/
framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
13.x
tests/Auth/AuthTokenGuardTest.php
212 строк
8 KB
Jason McCreary
[13.x] Mockery cleanup (#61117)
10 авг 2026, 20:23
Не верифицирован
10 авг 2026, 20:23
2ee40ee
Код
Авторство
О чём код?
<?php namespace Illuminate\Tests\Auth; use Illuminate\Auth\TokenGuard; use Illuminate\Contracts\Auth\UserProvider; use Illuminate\Http\Request; use Mockery; use PHPUnit\Framework\TestCase; class AuthTokenGuardTest extends TestCase { public function testUserCanBeRetrievedByQueryStringVariable() { $provider = Mockery::mock(UserProvider::class); $user = new AuthTokenGuardTestUser; $user->id = 1; $provider->expects('retrieveByCredentials')->with(['api_token' => 'foo'])->andReturn($user); $request = Request::create('/', 'GET', ['api_token' => 'foo']); $guard = new TokenGuard($provider, $request); $user = $guard->user(); $this->assertSame(1, $user->id); $this->assertTrue($guard->check()); $this->assertFalse($guard->guest()); $this->assertSame(1, $guard->id()); } public function testTokenCanBeHashed() { $provider = Mockery::mock(UserProvider::class); $user = new AuthTokenGuardTestUser; $user->id = 1; $provider->expects('retrieveByCredentials')->with(['api_token' => hash('sha256', 'foo')])->andReturn($user); $request = Request::create('/', 'GET', ['api_token' => 'foo']); $guard = new TokenGuard($provider, $request, 'api_token', 'api_token', $hash = true); $user = $guard->user(); $this->assertSame(1, $user->id); $this->assertTrue($guard->check()); $this->assertFalse($guard->guest()); $this->assertSame(1, $guard->id()); } public function testUserCanBeRetrievedByAuthHeaders() { $provider = Mockery::mock(UserProvider::class); $provider->expects('retrieveByCredentials')->with(['api_token' => 'foo'])->andReturn((object) ['id' => 1]); $request = Request::create('/', 'GET', [], [], [], ['PHP_AUTH_USER' => 'foo', 'PHP_AUTH_PW' => 'foo']); $guard = new TokenGuard($provider, $request); $user = $guard->user(); $this->assertSame(1, $user->id); } public function testUserCanBeRetrievedByBearerToken() { $provider = Mockery::mock(UserProvider::class); $provider->expects('retrieveByCredentials')->with(['api_token' => 'foo'])->andReturn((object) ['id' => 1]); $request = Request::create('/', 'GET', [], [], [], ['HTTP_AUTHORIZATION' => 'Bearer foo']); $guard = new TokenGuard($provider, $request); $user = $guard->user(); $this->assertSame(1, $user->id); } public function testValidateCanDetermineIfCredentialsAreValid() { $provider = Mockery::mock(UserProvider::class); $user = new AuthTokenGuardTestUser; $user->id = 1; $provider->expects('retrieveByCredentials')->with(['api_token' => 'foo'])->andReturn($user); $request = Request::create('/', 'GET', ['api_token' => 'foo']); $guard = new TokenGuard($provider, $request); $this->assertTrue($guard->validate(['api_token' => 'foo'])); } public function testValidateCanDetermineIfCredentialsAreInvalid() { $provider = Mockery::mock(UserProvider::class); $provider->expects('retrieveByCredentials')->with(['api_token' => 'foo'])->andReturn(null); $request = Request::create('/', 'GET', ['api_token' => 'foo']); $guard = new TokenGuard($provider, $request); $this->assertFalse($guard->validate(['api_token' => 'foo'])); } public function testValidateIfApiTokenIsEmpty() { $provider = Mockery::mock(UserProvider::class); $request = Request::create('/', 'GET', ['api_token' => '']); $guard = new TokenGuard($provider, $request); $this->assertFalse($guard->validate(['api_token' => ''])); } public function testItAllowsToPassCustomRequestInSetterAndUseItForValidation() { $provider = Mockery::mock(UserProvider::class); $user = new AuthTokenGuardTestUser; $user->id = 1; $provider->expects('retrieveByCredentials')->with(['api_token' => 'custom'])->andReturn($user); $request = Request::create('/', 'GET', ['api_token' => 'foo']); $guard = new TokenGuard($provider, $request); $guard->setRequest(Request::create('/', 'GET', ['api_token' => 'custom'])); $user = $guard->user(); $this->assertSame(1, $user->id); } public function testUserCanBeRetrievedByBearerTokenWithCustomKey() { $provider = Mockery::mock(UserProvider::class); $provider->expects('retrieveByCredentials')->with(['custom_token_field' => 'foo'])->andReturn((object) ['id' => 1]); $request = Request::create('/', 'GET', [], [], [], ['HTTP_AUTHORIZATION' => 'Bearer foo']); $guard = new TokenGuard($provider, $request, 'custom_token_field', 'custom_token_field'); $user = $guard->user(); $this->assertSame(1, $user->id); } public function testUserCanBeRetrievedByQueryStringVariableWithCustomKey() { $provider = Mockery::mock(UserProvider::class); $user = new AuthTokenGuardTestUser; $user->id = 1; $provider->expects('retrieveByCredentials')->with(['custom_token_field' => 'foo'])->andReturn($user); $request = Request::create('/', 'GET', ['custom_token_field' => 'foo']); $guard = new TokenGuard($provider, $request, 'custom_token_field', 'custom_token_field'); $user = $guard->user(); $this->assertSame(1, $user->id); $this->assertTrue($guard->check()); $this->assertFalse($guard->guest()); $this->assertSame(1, $guard->id()); } public function testUserCanBeRetrievedByAuthHeadersWithCustomField() { $provider = Mockery::mock(UserProvider::class); $provider->expects('retrieveByCredentials')->with(['custom_token_field' => 'foo'])->andReturn((object) ['id' => 1]); $request = Request::create('/', 'GET', [], [], [], ['PHP_AUTH_USER' => 'foo', 'PHP_AUTH_PW' => 'foo']); $guard = new TokenGuard($provider, $request, 'custom_token_field', 'custom_token_field'); $user = $guard->user(); $this->assertSame(1, $user->id); } public function testValidateCanDetermineIfCredentialsAreValidWithCustomKey() { $provider = Mockery::mock(UserProvider::class); $user = new AuthTokenGuardTestUser; $user->id = 1; $provider->expects('retrieveByCredentials')->with(['custom_token_field' => 'foo'])->andReturn($user); $request = Request::create('/', 'GET', ['custom_token_field' => 'foo']); $guard = new TokenGuard($provider, $request, 'custom_token_field', 'custom_token_field'); $this->assertTrue($guard->validate(['custom_token_field' => 'foo'])); } public function testValidateCanDetermineIfCredentialsAreInvalidWithCustomKey() { $provider = Mockery::mock(UserProvider::class); $provider->expects('retrieveByCredentials')->with(['custom_token_field' => 'foo'])->andReturn(null); $request = Request::create('/', 'GET', ['custom_token_field' => 'foo']); $guard = new TokenGuard($provider, $request, 'custom_token_field', 'custom_token_field'); $this->assertFalse($guard->validate(['custom_token_field' => 'foo'])); } public function testValidateIfApiTokenIsEmptyWithCustomKey() { $provider = Mockery::mock(UserProvider::class); $request = Request::create('/', 'GET', ['custom_token_field' => '']); $guard = new TokenGuard($provider, $request, 'custom_token_field', 'custom_token_field'); $this->assertFalse($guard->validate(['custom_token_field' => ''])); } } class AuthTokenGuardTestUser { public $id; public function getAuthIdentifier() { return $this->id; } }