<?php namespace SilverStripe\Control\Tests\DirectorTest; use SilverStripe\Control\HTTPRequest; use SilverStripe\Control\HTTPResponse; use SilverStripe\Control\Middleware\HTTPMiddleware; use SilverStripe\Dev\TestOnly; class TestMiddleware implements HTTPMiddleware, TestOnly { public $preCalls = 0; public $postCalls = 0; public $failPre = false; public $failPost = false; public function process(HTTPRequest $request, callable $delegate) { $this->preCalls++; if ($this->failPre) { return new HTTPResponse('Fail pre', 400); } $response = $delegate($request); $this->postCalls++; if ($this->failPost) { return new HTTPResponse('Fail post', 500); } return $response; } public function reset() { $this->preCalls = 0; $this->postCalls = 0; } }