Laravel TestCase не отправляет заголовки авторизации (токен JWT)

Резюме

Мы пишем модульные тесты для проверки создания и аннулирования токенов JWT и получения ошибки «Невозможно проанализировать токен из запроса» из JWTException каждый раз, когда мы пытаемся JWTAuth :: сделать недействительным токен.

Описание

Внутри нашего контроллера, чтобы создать токен пользователя, мы проходим через адрес электронной почты пользователя и затем возвращаем токен JWT.

После этого мы уничтожаем токен, делая его недействительным, используя метод invalidateToken, и пропускаем токен, отправляя заголовок авторизации.

public function invalidateToken()
{
    try {
        JWTAuth::invalidate(JWTAuth::getToken());
        return Response::json(['status' => 'success'], 200);
    } catch (JWTException $e) {
        return Response::json(['status' => 'error', 'message' => $e->getMessage()], 401);
    }
}

Это прекрасно работает, используя Postman, а также клиент PHPStorms Restful.

Когда мы пытаемся написать тест для этого метода, мы сталкиваемся с ответом об ошибке и сообщением об ошибке «Не удалось проанализировать токен из запроса».

Наш тест выглядит следующим образом:

public function testInvalidateToken()
{
    $createUserToken = $this->call('POST', '/token/create', ['email' => '[email protected]']);
    $user = $this->parseJson($createUserToken);

    $response = $this->call('POST', '/token/invalidate',
        [/* params */], [/* cookies */], [/* files */], ['HTTP_Authorization' => 'Bearer '.$user->token]);

    // var_dump($user->token);
    // die();

    $data = $this->parseJson($response);
    $this->assertEquals($data->status, 'success');
    $this->assertEquals($data->status, '200');
}

Мы используем Laravel 5.1 (который имеет куки в качестве параметра перед параметром сервера)

PHP версия 5.6.10

PHPUnit 3.7.28

* РЕДАКТИРОВАТЬ * Обновлен до PHPUnit 4.7.6 и по-прежнему не удается отправить через заголовок авторизации.

* РЕШЕНИЕ *
В моем методе контроллера __construct у меня есть эти несколько строк кода, которые выполняются и решают мою проблему.

if ((\App::environment() == 'testing') && array_key_exists("HTTP_Authorization",  Request::server())) {
    JWTAuth::setRequest(\Route::getCurrentRequest());
}

Ответы на вопрос(4)

Ваш ответ на вопрос