Organizm238's avatar

Test that middleware was used

I have a post route inside a middleware that checks whether a user performing a request belongs to a specific role. I have 4 roles in total. And I have found it silly to write tests like:

  • testRole2CanNotDoAction
  • testRole3CanNotDoAction
  • testRole4CanNotDoAction

every time I want to test some action. So it would be really nice if I can just write 1 test

  • testMiddlewareWasCalled

to assure that route is placed in right place. How can I do it? To give you the context lets assume I have the following middleware:

    class MustBeRole1
    {
        public function handle($request, Closure $next)
        {
            $user = $request->user();
            if ($user && $user->isRole1()) {
                return $next($request);
            }

            abort(403, 'You are not an role1!');
        }
    }

and following routes:

    Route::group(['middleware' => ['isRole1']], function () {
        Route::post('/testAction', ['as' => 'testAction', 'uses' => 'testActionController@test']);
    }

How should my test look like?

0 likes
0 replies

Please or to participate in this conversation.