samedi 21 janvier 2017

Laravel middlware for testing

I've build an api in Laravel 5.3 with jwt web tokens. If I want to test this I've to add this before every request:

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

If I add this to the constructor in my controller it's working. But when I add this to a middleware all my tests are failing.

I've added the middleware to the $routeMiddleware array in kernel.php. The middleware looks like this:

class TestingKeepRequest
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ((\App::environment() == 'testing') && array_key_exists("HTTP_AUTHORIZATION", Request::server())) {
            JWTAuth::setRequest(\Route::getCurrentRequest());
            dd('test');
        }

        $next($request);
    }
}

When I dd('test'); in the if statement the dd('test'); is being is being reached.

The middleware is being assigned in my routes file like this:

Route::group(['middleware' => ['testing', 'active', 'throttle']], function () { //etc....

So why is this working in the constructor of a controller but not in a middleware?

Aucun commentaire:

Enregistrer un commentaire