fix: 登录/注册/登出 POST 路由补 .shtml 变体(表单 route() 生成 .shtml 后缀),修复 405;新增 AuthFlow 回归测试;全面确认前台 URL 全部 route() 生成无硬编码
This commit is contained in:
+4
-1
@@ -62,11 +62,14 @@ Route::get('/comments', fn () => redirect()->route('comments', [], 301));
|
|||||||
|
|
||||||
Route::get('/login.shtml', [AuthController::class, 'showLogin'])->name('login');
|
Route::get('/login.shtml', [AuthController::class, 'showLogin'])->name('login');
|
||||||
Route::get('/login', fn () => redirect()->route('login', [], 301));
|
Route::get('/login', fn () => redirect()->route('login', [], 301));
|
||||||
|
Route::post('/login.shtml', [AuthController::class, 'login']);
|
||||||
Route::post('/login', [AuthController::class, 'login']);
|
Route::post('/login', [AuthController::class, 'login']);
|
||||||
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
|
Route::post('/logout.shtml', [AuthController::class, 'logout'])->name('logout');
|
||||||
|
Route::post('/logout', [AuthController::class, 'logout']);
|
||||||
|
|
||||||
Route::get('/register.shtml', [AuthController::class, 'showRegister'])->name('register');
|
Route::get('/register.shtml', [AuthController::class, 'showRegister'])->name('register');
|
||||||
Route::get('/register', fn () => redirect()->route('register', [], 301));
|
Route::get('/register', fn () => redirect()->route('register', [], 301));
|
||||||
|
Route::post('/register.shtml', [AuthController::class, 'register']);
|
||||||
Route::post('/register', [AuthController::class, 'register']);
|
Route::post('/register', [AuthController::class, 'register']);
|
||||||
|
|
||||||
Route::get('/profile.shtml', [AuthController::class, 'profile'])->middleware('auth')->name('profile');
|
Route::get('/profile.shtml', [AuthController::class, 'profile'])->middleware('auth')->name('profile');
|
||||||
|
|||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fake-jpg
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fake-jpg
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fake-jpg
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fake-jpg
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fake-jpg
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fake-jpg
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fake-jpg
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fake-jpg
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fake-jpg
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fake-jpg
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\Feature;
|
||||||
|
|
||||||
|
use App\Models\User;
|
||||||
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||||
|
use Tests\TestCase;
|
||||||
|
|
||||||
|
class AuthFlowTest extends TestCase
|
||||||
|
{
|
||||||
|
use RefreshDatabase;
|
||||||
|
|
||||||
|
protected function setUp(): void
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
$this->seed();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_login_form_posts_to_shtml(): void
|
||||||
|
{
|
||||||
|
$this->post('/login.shtml', [
|
||||||
|
'email' => 'admin@laralog.test',
|
||||||
|
'password' => 'password',
|
||||||
|
])->assertRedirect('/');
|
||||||
|
|
||||||
|
$this->assertAuthenticated();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_register_form_posts_to_shtml(): void
|
||||||
|
{
|
||||||
|
$this->post('/register.shtml', [
|
||||||
|
'name' => '新用户',
|
||||||
|
'email' => 'new@test.com',
|
||||||
|
'password' => 'password123',
|
||||||
|
'password_confirmation' => 'password123',
|
||||||
|
])->assertRedirect('/profile.shtml');
|
||||||
|
|
||||||
|
$this->assertAuthenticated();
|
||||||
|
$this->assertDatabaseHas('users', ['email' => 'new@test.com']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_logout_form_posts_to_shtml(): void
|
||||||
|
{
|
||||||
|
$user = User::where('email', 'admin@laralog.test')->first();
|
||||||
|
$this->actingAs($user)->post('/logout.shtml')->assertRedirect('/');
|
||||||
|
|
||||||
|
$this->assertGuest();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_front_pages_use_shtml_links(): void
|
||||||
|
{
|
||||||
|
$user = User::create(['name' => '作者', 'email' => 'w@t.com', 'password' => bcrypt('x')]);
|
||||||
|
\App\Models\Post::create([
|
||||||
|
'user_id' => $user->id,
|
||||||
|
'title' => '链接测试',
|
||||||
|
'slug' => 'link-test',
|
||||||
|
'content' => '内容',
|
||||||
|
'content_format' => 'markdown',
|
||||||
|
'status' => 'published',
|
||||||
|
'published_at' => now(),
|
||||||
|
]);
|
||||||
|
|
||||||
|
$html = $this->get('/')->getContent();
|
||||||
|
|
||||||
|
// 前台链接应生成 .shtml(不含硬编码无后缀路径)
|
||||||
|
$this->assertStringContainsString('/posts/link-test.shtml', $html);
|
||||||
|
$this->assertStringNotContainsString('href="/posts/link-test"', $html);
|
||||||
|
$this->assertStringNotContainsString('href="/archives"', $html);
|
||||||
|
$this->assertStringContainsString('href="http://laralog.test/archives.shtml"', $html);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user