Проблема с Laravel Passport при тестировании моего API - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь протестировать множественную аутентификацию по паспорту 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.НО я проверяю то же самое через почтальона, и все в порядке.Я думаю, что способ отправки заголовка авторизации не подходит, но не может найти лучший способ.Есть идеи?

...