Я пытаюсь протестировать множественную аутентификацию по паспорту laravel, и у меня возникла проблема с отправкой токена авторизации
В основном у меня есть два средства проверки подлинности
'guards' => [
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
'admin' => [
'driver' => 'passport',
'provider' => 'admins',
],
],
два маршрута, требующие разной аутентификации
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::middleware('auth:admin')->get('/admin', function (Request $request) {
return $request->user();
});
и тест
/** @test */
public function user_can_register()
{
(new ClientRepository)->createPasswordGrantClient(
null, 'Laravel Personal Access Client', 'http://localhost'
);
factory(Admin::class)->create(['email' => 'john.doe@example.com', 'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm']);
$response = $this->postJson('/api/register', [
'name' => 'john doe',
'email' => 'john.doe@example.com',
'password' => 'secret',
'password_confirmation' => 'secret'
]);
$response->assertStatus(200);
$json = $response->json();
$this->assertEquals('Bearer',$json['token_type']);
$this->assertNotNull($json['expires_in']);
$this->assertNotNull($json['access_token']);
$this->assertNotNull($json['refresh_token']);
$this->getJson('/api/user',[
'Authorization' => 'Bearer '.$json['access_token']
])->assertStatus(Response::HTTP_OK);
$this->getJson('/api/admin',[
'Authorization' => 'Bearer '.$json['access_token']
])->assertStatus(Response::HTTP_UNAUTHORIZED);
}
странное поведение заключается в том, что тест не может утверждать, что вызов / api / admin возвращает 401. Он говорит, что вместо него возвращается 200.НО я проверяю то же самое через почтальона, и все в порядке.Я думаю, что способ отправки заголовка авторизации не подходит, но не может найти лучший способ.Есть идеи?