feat(admin): 统一后台权限注册表并移除路由中间件鉴权
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
use App\Models\AdminUser;
|
||||
use App\Lottery\ErrorCode;
|
||||
use Illuminate\Support\Str;
|
||||
use App\Services\AdminCaptchaService;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
|
||||
uses(RefreshDatabase::class);
|
||||
@@ -22,14 +22,17 @@ test('admin login returns bearer token when captcha passes validation', function
|
||||
'status' => 0,
|
||||
]);
|
||||
|
||||
$mock = Mockery::mock(AdminCaptchaService::class);
|
||||
$mock->shouldReceive('verify')->once()->andReturn(true);
|
||||
$this->instance(AdminCaptchaService::class, $mock);
|
||||
$captchaKey = (string) Str::uuid();
|
||||
Cache::put(
|
||||
'admin_captcha:'.$captchaKey,
|
||||
hash_hmac('sha256', 'xwz2', (string) config('app.key')),
|
||||
now()->addSeconds(120),
|
||||
);
|
||||
|
||||
$resp = $this->postJson('/api/v1/admin/auth/login', [
|
||||
'account' => 'Tester',
|
||||
'password' => 'secret-strong',
|
||||
'captcha_key' => (string) Str::uuid(),
|
||||
'captcha_key' => $captchaKey,
|
||||
'captcha_code' => 'xwz2',
|
||||
]);
|
||||
|
||||
@@ -37,7 +40,10 @@ test('admin login returns bearer token when captcha passes validation', function
|
||||
->assertJsonPath('code', ErrorCode::Success->value)
|
||||
->assertJsonPath('data.admin.username', 'tester')
|
||||
->assertJsonPath('data.admin.nickname', '测试昵称')
|
||||
->assertJsonStructure(['data' => ['token', 'token_type', 'admin' => ['id', 'username', 'nickname', 'email', 'permissions']]]);
|
||||
->assertJsonPath('data.admin.navigation.0.segment', 'dashboard')
|
||||
->assertJsonPath('data.admin.navigation.0.href', '/admin')
|
||||
->assertJsonPath('data.admin.navigation.1.segment', 'settings')
|
||||
->assertJsonStructure(['data' => ['token', 'token_type', 'admin' => ['id', 'username', 'nickname', 'email', 'permissions', 'navigation']]]);
|
||||
|
||||
$token = $resp->json('data.token');
|
||||
expect($token)->not->toBeNull();
|
||||
@@ -69,14 +75,17 @@ test('login rejects wrong password with masked message', function () {
|
||||
'status' => 0,
|
||||
]);
|
||||
|
||||
$mock = Mockery::mock(AdminCaptchaService::class);
|
||||
$mock->shouldReceive('verify')->andReturn(true);
|
||||
$this->instance(AdminCaptchaService::class, $mock);
|
||||
$captchaKey = (string) Str::uuid();
|
||||
Cache::put(
|
||||
'admin_captcha:'.$captchaKey,
|
||||
hash_hmac('sha256', 'aaaa', (string) config('app.key')),
|
||||
now()->addSeconds(120),
|
||||
);
|
||||
|
||||
$this->postJson('/api/v1/admin/auth/login', [
|
||||
'account' => 'bad_tester',
|
||||
'password' => 'wrong-password',
|
||||
'captcha_key' => (string) Str::uuid(),
|
||||
'captcha_key' => $captchaKey,
|
||||
'captcha_code' => 'aaaa',
|
||||
])->assertUnauthorized()
|
||||
->assertJsonPath('code', ErrorCode::AdminCredentialsInvalid->value);
|
||||
|
||||
Reference in New Issue
Block a user