81 lines
2.4 KiB
PHP
81 lines
2.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Tests\Feature\PublicSite;
|
|
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Support\Facades\Route;
|
|
use Tests\TestCase;
|
|
|
|
class ErrorPagesTest extends TestCase
|
|
{
|
|
use RefreshDatabase;
|
|
|
|
public function test_419_renders_branded_session_expired_page(): void
|
|
{
|
|
Route::get('/__test-419', fn (): never => abort(419));
|
|
|
|
$this->get('/__test-419')
|
|
->assertStatus(419)
|
|
->assertSee('Erro 419')
|
|
->assertSee('Sessão expirada')
|
|
->assertSee('Voltar para a home');
|
|
}
|
|
|
|
public function test_429_renders_branded_rate_limited_page(): void
|
|
{
|
|
Route::get('/__test-429', fn (): never => abort(429));
|
|
|
|
$this->get('/__test-429')
|
|
->assertStatus(429)
|
|
->assertSee('Erro 429')
|
|
->assertSee('Muitas solicitações')
|
|
->assertSee('Voltar para a home');
|
|
}
|
|
|
|
public function test_503_renders_branded_maintenance_page(): void
|
|
{
|
|
Route::get('/__test-503', fn (): never => abort(503));
|
|
|
|
$this->get('/__test-503')
|
|
->assertStatus(503)
|
|
->assertSee('Erro 503')
|
|
->assertSee('Em manutenção')
|
|
->assertSee('Voltar para a home');
|
|
}
|
|
|
|
public function test_error_pages_never_leak_debug_stack_traces(): void
|
|
{
|
|
config(['app.debug' => false]);
|
|
|
|
Route::get('/__test-503', fn (): never => abort(503));
|
|
|
|
$this->get('/__test-503')
|
|
->assertStatus(503)
|
|
->assertDontSee('segredo-interno-amare')
|
|
->assertDontSee('Exception');
|
|
}
|
|
|
|
public function test_all_branded_error_pages_expose_progressive_motion_hooks(): void
|
|
{
|
|
foreach ([419, 429, 500, 503] as $status) {
|
|
Route::get('/__test-motion-'.$status, fn (): never => abort($status));
|
|
|
|
$this->get('/__test-motion-'.$status)
|
|
->assertStatus($status)
|
|
->assertSee('data-motion="page-open"', false)
|
|
->assertSee('data-motion-beat', false)
|
|
->assertSee('data-reveal-group', false)
|
|
->assertSee('data-reveal', false);
|
|
}
|
|
|
|
$this->get('/__missing-motion-page')
|
|
->assertNotFound()
|
|
->assertSee('data-motion="page-open"', false)
|
|
->assertSee('data-motion-beat', false)
|
|
->assertSee('data-reveal-group', false)
|
|
->assertSee('data-reveal', false);
|
|
}
|
|
}
|