BUG Correct response code generated from error pages

This commit is contained in:
Damian Mooyman 2016-11-21 17:58:53 +13:00 committed by GitHub
commit 682e6070e5
2 changed files with 12 additions and 23 deletions

View File

@ -323,22 +323,5 @@ class ErrorPage extends Page {
* @package cms
*/
class ErrorPage_Controller extends Page_Controller {
/**
* Overload the provided {@link Controller::handleRequest()} to append the
* correct status code post request since otherwise permission related error
* pages such as 401 and 403 pages won't be rendered due to
* {@link SS_HTTPResponse::isFinished() ignoring the response body.
*
* @param SS_HTTPRequest $request
* @param DataModel $model
* @return SS_HTTPResponse
*/
public function handleRequest(SS_HTTPRequest $request, DataModel $model = NULL) {
$body = parent::handleRequest($request, $model);
$this->getResponse()->setStatusCode($this->ErrorCode);
return $this->getResponse();
}
}

View File

@ -64,13 +64,19 @@ class ErrorPageTest extends FunctionalTest {
public function testBehaviourOf403() {
$page = $this->objFromFixture('ErrorPage', '403');
$page->publish('Stage', 'Live');
$response = $this->get($page->RelativeLink());
$this->assertEquals($response->getStatusCode(), '403');
$this->assertNotNull($response->getBody(), 'We have body text from the error page');
try {
$controller = singleton('ContentController');
$controller->httpError(403);
$this->fail('Expected exception to be thrown');
}
catch(SS_HTTPResponse_Exception $e) {
$response = $e->getResponse();
$this->assertEquals($response->getStatusCode(), '403');
$this->assertNotNull($response->getBody(), 'We have body text from the error page');
}
}
public function testSecurityError() {
// Generate 404 page
$page = $this->objFromFixture('ErrorPage', '404');