/
githubmirror
/
framework
Обзор
Документация
Войти
/
githubmirror
/
framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
13.x
tests/Integration/Auth/Middleware/RequirePasswordTest.php
158 строк
6 KB
Wendell Adriel
[13.x] Add prefersJsonResponses() to the application builder (#59753)
20 апр 2026, 17:47
Не верифицирован
20 апр 2026, 17:47
e2ffb2c
Код
Авторство
О чём код?
<?php namespace Illuminate\Tests\Integration\Auth\Middleware; use Illuminate\Auth\Middleware\RequirePassword; use Illuminate\Contracts\Config\Repository; use Illuminate\Contracts\Http\Kernel as HttpKernel; use Illuminate\Contracts\Routing\Registrar; use Illuminate\Contracts\Routing\UrlGenerator; use Illuminate\Http\Middleware\PrefersJsonResponses; use Illuminate\Http\Response; use Illuminate\Session\Middleware\StartSession; use Orchestra\Testbench\TestCase; class RequirePasswordTest extends TestCase { public function testItCanGenerateDefinitionViaStaticMethod() { $signature = (string) RequirePassword::using('route.name'); $this->assertSame('Illuminate\Auth\Middleware\RequirePassword:route.name', $signature); $signature = (string) RequirePassword::using('route.name', 100); $this->assertSame('Illuminate\Auth\Middleware\RequirePassword:route.name,100', $signature); $signature = (string) RequirePassword::using(passwordTimeoutSeconds: 100); $this->assertSame('Illuminate\Auth\Middleware\RequirePassword:,100', $signature); } public function testUserSeesTheWantedPageIfThePasswordWasRecentlyConfirmed() { $this->withoutExceptionHandling(); /** @var \Illuminate\Contracts\Routing\Registrar $router */ $router = $this->app->make(Registrar::class); $router->get('test-route', function (): Response { return new Response('foobar'); })->middleware([StartSession::class, RequirePassword::class]); $response = $this->withSession(['auth.password_confirmed_at' => time()])->get('test-route'); $response->assertOk(); $response->assertSeeText('foobar'); } public function testUserIsRedirectedToThePasswordConfirmRouteIfThePasswordWasNotRecentlyConfirmed() { $this->withoutExceptionHandling(); /** @var \Illuminate\Contracts\Routing\Registrar $router */ $router = $this->app->make(Registrar::class); $router->get('password-confirm', function (): Response { return new Response('foo'); })->name('password.confirm'); $router->get('test-route', function (): Response { return new Response('foobar'); })->middleware([StartSession::class, RequirePassword::class]); $response = $this->withSession(['auth.password_confirmed_at' => time() - 10801])->get('test-route'); $response->assertStatus(302); $response->assertRedirect($this->app->make(UrlGenerator::class)->route('password.confirm')); } public function testUserIsRedirectedToACustomRouteIfThePasswordWasNotRecentlyConfirmedAndTheCustomRouteIsSpecified() { $this->withoutExceptionHandling(); /** @var \Illuminate\Contracts\Routing\Registrar $router */ $router = $this->app->make(Registrar::class); $router->get('confirm', function (): Response { return new Response('foo'); })->name('my-password.confirm'); $router->get('test-route', function (): Response { return new Response('foobar'); })->middleware([StartSession::class, RequirePassword::class.':my-password.confirm']); $response = $this->withSession(['auth.password_confirmed_at' => time() - 10801])->get('test-route'); $response->assertStatus(302); $response->assertRedirect($this->app->make(UrlGenerator::class)->route('my-password.confirm')); } public function testPrefersJsonReturnsJsonResponseForWildcardAcceptInsteadOfRedirecting() { $this->withoutExceptionHandling(); $this->app->make(HttpKernel::class)->prependMiddleware(PrefersJsonResponses::class); /** @var \Illuminate\Contracts\Routing\Registrar $router */ $router = $this->app->make(Registrar::class); $router->get('test-route', function (): Response { return new Response('foobar'); })->middleware([StartSession::class, RequirePassword::class]); $response = $this->withSession(['auth.password_confirmed_at' => time() - 10801]) ->get('test-route', ['Accept' => '*/*']); $response->assertStatus(423); $response->assertJson(['message' => 'Password confirmation required.']); } public function testPrefersJsonStillRedirectsWhenAcceptIsExplicitHtml() { $this->withoutExceptionHandling(); $this->app->make(HttpKernel::class)->prependMiddleware(PrefersJsonResponses::class); /** @var \Illuminate\Contracts\Routing\Registrar $router */ $router = $this->app->make(Registrar::class); $router->get('password-confirm', function (): Response { return new Response('foo'); })->name('password.confirm'); $router->get('test-route', function (): Response { return new Response('foobar'); })->middleware([StartSession::class, RequirePassword::class]); $response = $this->withSession(['auth.password_confirmed_at' => time() - 10801]) ->get('test-route', ['Accept' => 'text/html']); $response->assertRedirect($this->app->make(UrlGenerator::class)->route('password.confirm')); } public function testAuthPasswordTimeoutIsConfigurable() { $this->withoutExceptionHandling(); /** @var \Illuminate\Contracts\Routing\Registrar $router */ $router = $this->app->make(Registrar::class); $router->get('password-confirm', function (): Response { return new Response('foo'); })->name('password.confirm'); $router->get('test-route', function (): Response { return new Response('foobar'); })->middleware([StartSession::class, RequirePassword::class]); $this->app->make(Repository::class)->set('auth.password_timeout', 500); $response = $this->withSession(['auth.password_confirmed_at' => time() - 495])->get('test-route'); $response->assertOk(); $response->assertSeeText('foobar'); $response = $this->withSession(['auth.password_confirmed_at' => time() - 501])->get('test-route'); $response->assertStatus(302); $response->assertRedirect($this->app->make(UrlGenerator::class)->route('password.confirm')); } }