Re-add converting HttpExceptions to responses in Handler

This commit is contained in:
PJ Dietz 2015-01-21 11:03:01 -05:00
parent 1a88e0273d
commit 84044d5057
2 changed files with 29 additions and 2 deletions

View File

@ -4,12 +4,13 @@
* pjdietz\WellRESTed\Handler
*
* @author PJ Dietz <pj@pjdietz.com>
* @copyright Copyright 2014 by PJ Dietz
* @copyright Copyright 2015 by PJ Dietz
* @license MIT
*/
namespace pjdietz\WellRESTed;
use pjdietz\WellRESTed\Exceptions\HttpExceptions\HttpException;
use pjdietz\WellRESTed\Interfaces\HandlerInterface;
use pjdietz\WellRESTed\Interfaces\RequestInterface;
use pjdietz\WellRESTed\Interfaces\ResponseInterface;
@ -45,7 +46,12 @@ abstract class Handler implements HandlerInterface
$this->request = $request;
$this->args = $args;
$this->response = new Response();
$this->buildResponse();
try {
$this->buildResponse();
} catch (HttpException $e) {
$this->response->setStatusCode($e->getCode());
$this->response->setBody($e->getMessage());
}
return $this->response;
}

View File

@ -2,6 +2,7 @@
namespace pjdietz\WellRESTed\Test;
use pjdietz\WellRESTed\Exceptions\HttpExceptions\NotFoundException;
use pjdietz\WellRESTed\Handler;
class HandlerTest extends \PHPUnit_Framework_TestCase
@ -43,6 +44,18 @@ class HandlerTest extends \PHPUnit_Framework_TestCase
];
}
public function testTranslateHttpExceptionToResponse()
{
$mockRequest = $this->getMock('\pjdietz\WellRESTed\Interfaces\RequestInterface');
$mockRequest->expects($this->any())
->method('getMethod')
->will($this->returnValue("GET"));
$handler = new ExceptionHandler();
$resp = $handler->getResponse($mockRequest);
$this->assertEquals(404, $resp->getStatusCode());
}
public function testReadAllowedMethods()
{
$mockRequest = $this->getMock('\pjdietz\WellRESTed\Interfaces\RequestInterface');
@ -65,3 +78,11 @@ class OptionsHandler extends Handler
return ["GET","POST"];
}
}
class ExceptionHandler extends Handler
{
protected function get()
{
throw new NotFoundException();
}
}