summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTres Seaver <tseaver@palladion.com>2015-06-09 11:36:25 -0400
committerTres Seaver <tseaver@palladion.com>2015-06-09 11:36:25 -0400
commit7740b65e00a5581c431bbade68be0c471aeccb42 (patch)
treef75fb29f0ef7a533d22c286321e18d97710f0606
parentc1dbb5092d486df5d7fbad8e52cd1dbcc2c834d9 (diff)
downloadpyramid-7740b65e00a5581c431bbade68be0c471aeccb42.tar.gz
pyramid-7740b65e00a5581c431bbade68be0c471aeccb42.tar.bz2
pyramid-7740b65e00a5581c431bbade68be0c471aeccb42.zip
Return concrete classes from 'pyramid.httpexceptions.exception_response'.
The base classes are not appropriate for 400 and 500 status codes. See: #1832
-rw-r--r--pyramid/httpexceptions.py16
-rw-r--r--pyramid/tests/test_httpexceptions.py13
2 files changed, 19 insertions, 10 deletions
diff --git a/pyramid/httpexceptions.py b/pyramid/httpexceptions.py
index 465769834..93d06e0d6 100644
--- a/pyramid/httpexceptions.py
+++ b/pyramid/httpexceptions.py
@@ -562,10 +562,7 @@ class HTTPClientError(HTTPError):
a bug. A server-side traceback is not warranted. Unless specialized,
this is a '400 Bad Request'
"""
- code = 400
- title = 'Bad Request'
- explanation = ('The server could not comply with the request since '
- 'it is either malformed or otherwise incorrect.')
+ pass
class HTTPBadRequest(HTTPClientError):
"""
@@ -576,7 +573,10 @@ class HTTPBadRequest(HTTPClientError):
code: 400, title: Bad Request
"""
- pass
+ code = 400
+ title = 'Bad Request'
+ explanation = ('The server could not comply with the request since '
+ 'it is either malformed or otherwise incorrect.')
class HTTPUnauthorized(HTTPClientError):
"""
@@ -988,15 +988,15 @@ class HTTPServerError(HTTPError):
This is an error condition in which the server is presumed to be
in-error. Unless specialized, this is a '500 Internal Server Error'.
"""
+ pass
+
+class HTTPInternalServerError(HTTPServerError):
code = 500
title = 'Internal Server Error'
explanation = (
'The server has either erred or is incapable of performing '
'the requested operation.')
-class HTTPInternalServerError(HTTPServerError):
- pass
-
class HTTPNotImplemented(HTTPServerError):
"""
subclass of :class:`~HTTPServerError`
diff --git a/pyramid/tests/test_httpexceptions.py b/pyramid/tests/test_httpexceptions.py
index d0779e080..c700dc80e 100644
--- a/pyramid/tests/test_httpexceptions.py
+++ b/pyramid/tests/test_httpexceptions.py
@@ -10,13 +10,22 @@ class Test_exception_response(unittest.TestCase):
from pyramid.httpexceptions import exception_response
return exception_response(*arg, **kw)
+ def test_status_400(self):
+ from pyramid.httpexceptions import HTTPBadRequest
+ self.assertTrue(isinstance(self._callFUT(400), HTTPBadRequest))
+
def test_status_404(self):
from pyramid.httpexceptions import HTTPNotFound
- self.assertEqual(self._callFUT(404).__class__, HTTPNotFound)
+ self.assertTrue(isinstance(self._callFUT(404), HTTPNotFound))
+
+ def test_status_500(self):
+ from pyramid.httpexceptions import HTTPInternalServerError
+ self.assertTrue(isinstance(self._callFUT(500),
+ HTTPInternalServerError))
def test_status_201(self):
from pyramid.httpexceptions import HTTPCreated
- self.assertEqual(self._callFUT(201).__class__, HTTPCreated)
+ self.assertTrue(isinstance(self._callFUT(201), HTTPCreated))
def test_extra_kw(self):
resp = self._callFUT(404, headers=[('abc', 'def')])