/**
  * @param \Spekkoek\MiddlewareStack $middleware The middleware stack to set in your App Class
  * @return \Spekkoek\MiddlewareStack
  */
 public function middleware($middleware)
 {
     $middleware->push(function ($req, $res, $next) {
         return 'Not a response';
     });
     return $middleware;
 }
 /**
  * @param \Spekkoek\MiddlewareStack $middleware The middleware stack to set in your App Class
  * @return \Spekkoek\MiddlewareStack
  */
 public function middleware($middleware)
 {
     $middleware->push(function ($req, $res, $next) {
         $res = $res->withHeader('X-First', 'first');
         return $next($req, $res);
     })->push(function ($req, $res, $next) {
         $res = $res->withHeader('X-Second', 'second');
         return $next($req, $res);
     })->push(function ($req, $res, $next) {
         if ($req->hasHeader('X-pass')) {
             $res = $res->withHeader('X-pass', $req->getHeaderLine('X-pass'));
         }
         $res = $res->withHeader('X-Second', 'second');
         return $next($req, $res);
     });
     return $middleware;
 }
 public function testInsertAfterInvalid()
 {
     $one = new SampleMiddleware();
     $two = function () {
     };
     $three = function () {
     };
     $stack = new MiddlewareStack();
     $stack->push($one)->push($two)->insertAfter('InvalidClass', $three);
     $this->assertCount(3, $stack);
     $this->assertSame($one, $stack->get(0));
     $this->assertSame($two, $stack->get(1));
     $this->assertSame($three, $stack->get(2));
 }