Skip to content
Permalink
Browse files

Fixing issue where errors that did not have a 500+ code would use the…

… incorrect status code.
  • Loading branch information...
markstory committed Sep 4, 2010
1 parent 4d86361 commit d198230e61b491587a4d29c69c915c9801cca5ae
Showing with 16 additions and 3 deletions.
  1. +4 −3 cake/libs/error_handler.php
  2. +12 −0 cake/tests/cases/libs/error_handler.test.php
@@ -85,8 +85,8 @@ class ErrorHandler {
/**
* Creates the controller to perform rendering on the error response.
* If the error is a CakeException it will be converted to either a 404 or a 500
* type error depending on the code used to construct the error.
* If the error is a CakeException it will be converted to either a 400 or a 500
* code error depending on the code used to construct the error.
*
* @param string $method Method producing the error
* @param array $messages Error messages
@@ -228,7 +228,8 @@ public function error400($error) {
*/
public function error500($error) {
$url = Router::normalize($this->controller->request->here);
$this->controller->response->statusCode($error->getCode());
$code = ($error->getCode() > 500) ? $error->getCode() : 500;
$this->controller->response->statusCode($code);
$this->controller->set(array(
'name' => __('An Internal Error Has Occurred'),
'message' => h($url),
@@ -341,6 +341,12 @@ function testErrorMethodCoercion() {
function testUnknownExceptionTypeWithExceptionThatHasA400Code() {
$exception = new MissingWidgetThingException('coding fail.');
$ErrorHandler = new ErrorHandler($exception);
$ErrorHandler->controller->response = $this->getMock('CakeResponse', array('statusCode'));
$ErrorHandler->controller->response->expects($this->once())->method('statusCode')->with(404);
ob_start();
$ErrorHandler->render();
$results = ob_get_clean();
$this->assertFalse(method_exists($ErrorHandler, 'missingWidgetThing'), 'no method should exist.');
$this->assertEquals('error400', $ErrorHandler->method, 'incorrect method coercion.');
@@ -354,6 +360,12 @@ function testUnknownExceptionTypeWithExceptionThatHasA400Code() {
function testUnknownExceptionTypeWithNoCodeIsA500() {
$exception = new OutOfBoundsException('foul ball.');
$ErrorHandler = new ErrorHandler($exception);
$ErrorHandler->controller->response = $this->getMock('CakeResponse', array('statusCode'));
$ErrorHandler->controller->response->expects($this->once())->method('statusCode')->with(500);
ob_start();
$ErrorHandler->render();
$results = ob_get_clean();
$this->assertEquals('error500', $ErrorHandler->method, 'incorrect method coercion.');
}

0 comments on commit d198230

Please sign in to comment.
You can’t perform that action at this time.