From 58211d35ca4f5dbdc5186c123bf8076f3b982a51 Mon Sep 17 00:00:00 2001 From: Thomas Flori <thflori@gmail.com> Date: Mon, 6 Aug 2018 08:18:10 +0200 Subject: [PATCH] use a wrapper class to be able to test send functionality --- src/Server.php | 40 ++++++++++++++++++++++++++++++++++++++++ src/ServerResponse.php | 13 ++++++++----- 2 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 src/Server.php diff --git a/src/Server.php b/src/Server.php new file mode 100644 index 0000000..0bc3832 --- /dev/null +++ b/src/Server.php @@ -0,0 +1,40 @@ +<?php + +namespace Tal; + +/** + * Class Server + * + * This class is a stupid wrapper for php functions for testing. + * + * @package Tal + * @author Thomas Flori <thflori@gmail.com> + * @codeCoverageIgnore trivial + */ +class Server +{ + /** + * Send a raw HTTP header + * + * @link http://php.net/manual/en/function.header.php + * @param string $string The header string + * @param bool $replace + * @param int $responseCode + * @return void + */ + public function header($string, $replace = true, $responseCode = null) + { + header($string, $replace, $responseCode); + } + + /** + * Echos the given $string + * + * @param $string + * @return void + */ + public function echo($string) + { + echo($string); + } +} diff --git a/src/ServerResponse.php b/src/ServerResponse.php index 0310d46..94b03ca 100644 --- a/src/ServerResponse.php +++ b/src/ServerResponse.php @@ -17,16 +17,19 @@ class ServerResponse extends Response implements ServerResponseInterface /** * Sends this response to the client. * + * @param int $bufferSize + * @param Server|null $server * @return static */ - public function send(int $bufferSize = 8192) + public function send(int $bufferSize = 8192, Server $server = null) { + $server = $server ?? new Server(); foreach ($this->getHeaders() as $name => $values) { if (strtolower($name) !== 'set-cookie') { - header(sprintf('%s: %s', $name, implode(',', $values)), false); + $server->header(sprintf('%s: %s', $name, implode(',', $values)), false); } else { foreach ($values as $value) { - header(sprintf('%s: %s', $name, $value), false); + $server->header(sprintf('%s: %s', $name, $value), false); } } } @@ -37,14 +40,14 @@ class ServerResponse extends Response implements ServerResponseInterface $this->getStatusCode(), $this->getReasonPhrase() ); - header($http_line, true, $this->getStatusCode()); + $server->header($http_line, true, $this->getStatusCode()); $stream = $this->getBody(); if ($stream->isSeekable()) { $stream->rewind(); } while (!$stream->eof()) { - echo $stream->read($bufferSize); + $server->echo($stream->read($bufferSize)); } return $this; } -- GitLab