X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/a8b5652210bf2258847e5880d6c6866fdfdc04a3..refs/pull/5280/head:/app/Http/HttpRequestService.php diff --git a/app/Http/HttpRequestService.php b/app/Http/HttpRequestService.php index 8318474aa..f59c298a6 100644 --- a/app/Http/HttpRequestService.php +++ b/app/Http/HttpRequestService.php @@ -7,6 +7,7 @@ use GuzzleHttp\Handler\MockHandler; use GuzzleHttp\HandlerStack; use GuzzleHttp\Middleware; use GuzzleHttp\Psr7\Request as GuzzleRequest; +use GuzzleHttp\Psr7\Response; use Psr\Http\Client\ClientInterface; class HttpRequestService @@ -16,7 +17,7 @@ class HttpRequestService /** * Build a new http client for sending requests on. */ - public function buildClient(int $timeout, array $options): ClientInterface + public function buildClient(int $timeout, array $options = []): ClientInterface { $defaultOptions = [ 'timeout' => $timeout, @@ -40,8 +41,16 @@ class HttpRequestService * Returns history which can then be queried. * @link https://docs.guzzlephp.org/en/stable/testing.html#history-middleware */ - public function mockClient(array $responses = []): HttpClientHistory + public function mockClient(array $responses = [], bool $pad = true): HttpClientHistory { + // By default, we pad out the responses with 10 successful values so that requests will be + // properly recorded for inspection. Otherwise, we can't later check if we're received + // too many requests. + if ($pad) { + $response = new Response(200, [], 'success'); + $responses = array_merge($responses, array_fill(0, 10, $response)); + } + $container = []; $history = Middleware::history($container); $mock = new MockHandler($responses);