summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pyramid/tests/test_request.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/pyramid/tests/test_request.py b/pyramid/tests/test_request.py
index 48af98f59..7134e3869 100644
--- a/pyramid/tests/test_request.py
+++ b/pyramid/tests/test_request.py
@@ -435,6 +435,34 @@ class Test_call_app_with_subpath_as_path_info(unittest.TestCase):
self.assertEqual(request.environ['SCRIPT_NAME'], '/' + encoded)
self.assertEqual(request.environ['PATH_INFO'], '/' + encoded)
+class Test_subclassing_Request(unittest.TestCase):
+
+ def test_subclass(self):
+ from pyramid.request import Request
+ from zope.interface import providedBy, implementedBy
+
+ class RequestSub(Request):
+ pass
+
+ self.assertTrue(hasattr(Request, '__provides__'))
+ self.assertFalse(hasattr(RequestSub, '__provides__'))
+
+ def test_subclass_with_implementer(self):
+ from pyramid.interfaces import IRequest
+ from pyramid.request import Request
+ from zope.interface import providedBy, implementedBy, implementer
+
+ @implementer(IRequest)
+ class RequestSub(Request):
+ pass
+
+ self.assertTrue(hasattr(Request, '__provides__'))
+ self.assertTrue(hasattr(RequestSub, '__provides__'))
+
+ req = RequestSub({})
+ req._set_properties({'b': 'b'})
+ self.assertEqual(providedBy(req), implementedBy(RequestSub))
+
class DummyRequest:
def __init__(self, environ=None):
if environ is None: