Laravel TestCase no envía encabezados de autorización (token JWT)

Resumen

Estamos escribiendo pruebas unitarias para probar la creación e invalidación de tokens JWT y recibimos un error "No se pudo analizar el token desde la solicitud" desde una excepción JWTEx cada vez que intentamos JWTAuth :: invalidar el token.

Descripción

Dentro de nuestro controlador, para crear un token de usuario, pasamos por la dirección de correo electrónico del usuario y luego devolvemos el token JWT.

Luego, estamos destruyendo el token al invalidarlo utilizando el método invalidateToken y pasando el token enviando un encabezado de autorización.

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);
    }
}

Esto funciona perfectamente utilizando Postman y PHPStorms Restful client.

Cuando intentamos escribir una prueba para este método, nos encontramos con una respuesta de error y un mensaje de error "No se pudo analizar el token desde la solicitud".

Nuestra prueba es la siguiente:

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');
}

Estamos utilizando Laravel 5.1 (que tiene las cookies como parámetro antes del parámetro del servidor)

PHP versión 5.6.10

PHPUnit 3.7.28

* EDITAR * Actualizado a PHPUnit 4.7.6 y todavía no se puede enviar a través del encabezado de autorización.

* SOLUCIÓN *
En mi método controlador __construct, tengo estas pocas líneas de código que se están ejecutando y resolvieron mi problema.

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

Respuestas a la pregunta(4)

Su respuesta a la pregunta