Update HeadHook

This commit is contained in:
PJ Dietz 2015-05-09 20:11:10 -04:00
parent 06f694154c
commit c1a104af4f
2 changed files with 10 additions and 11 deletions

View File

@ -12,7 +12,7 @@ use WellRESTed\Routing\MiddlewareInterface;
*/
class HeadHook implements MiddlewareInterface
{
public function dispatch(ServerRequestInterface $request, ResponseInterface &$response)
public function dispatch(ServerRequestInterface $request, ResponseInterface $response, $next)
{
$method = strtoupper($request->getMethod());
if ($method === "HEAD") {
@ -20,5 +20,6 @@ class HeadHook implements MiddlewareInterface
$response = $response->withBody(new NullStream());
}
}
return $next($request, $response);
}
}

View File

@ -13,6 +13,7 @@ class HeadHookTest extends \PHPUnit_Framework_TestCase
{
private $request;
private $response;
private $next;
private $body;
public function setUp()
@ -27,36 +28,33 @@ class HeadHookTest extends \PHPUnit_Framework_TestCase
$this->getBody()->willReturn($args[0]);
return $this;
});
$this->next = function ($request, $response) {
return $response;
};
}
public function testReplacesBodyForHeadRequest()
{
$this->request->getMethod()->willReturn("HEAD");
$request = $this->request->reveal();
$response = $this->response->reveal();
$hook = new HeadHook();
$hook->dispatch($request, $response);
$response = $hook->dispatch($this->request->reveal(), $this->response->reveal(), $this->next);
$this->assertSame(0, $response->getBody()->getSize());
}
public function testMultipleDispatchesHaveNoEffect()
{
$this->request->getMethod()->willReturn("HEAD");
$request = $this->request->reveal();
$response = $this->response->reveal();
$hook = new HeadHook();
$hook->dispatch($request, $response);
$hook->dispatch($request, $response);
$response = $hook->dispatch($this->request->reveal(), $this->response->reveal(), $this->next);
$hook->dispatch($this->request->reveal(), $response, $this->next);
$this->response->withBody(Argument::any())->shouldHaveBeenCalledTimes(1);
}
public function testDoesNotReplaceBodyForNonHeadRequests()
{
$this->request->getMethod()->willReturn("GET");
$request = $this->request->reveal();
$response = $this->response->reveal();
$hook = new HeadHook();
$hook->dispatch($request, $response);
$hook->dispatch($this->request->reveal(), $this->response->reveal(), $this->next);
$this->response->withBody(Argument::any())->shouldNotHaveBeenCalled();
}
}