summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_request.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-06-11 03:15:15 +0000
committerChris McDonough <chrism@agendaless.com>2009-06-11 03:15:15 +0000
commitdfc2b65c1b6d2f938f68b7868a14d8f9a4faab9e (patch)
treef3241401b7175a401e00286b11e3efe3c21f5093 /repoze/bfg/tests/test_request.py
parentf8b0065b6ede54424d7a7b49f9f113e87634b5ab (diff)
downloadpyramid-dfc2b65c1b6d2f938f68b7868a14d8f9a4faab9e.tar.gz
pyramid-dfc2b65c1b6d2f938f68b7868a14d8f9a4faab9e.tar.bz2
pyramid-dfc2b65c1b6d2f938f68b7868a14d8f9a4faab9e.zip
Merge unifyroutesandtraversal branch into trunk
Diffstat (limited to 'repoze/bfg/tests/test_request.py')
-rw-r--r--repoze/bfg/tests/test_request.py170
1 files changed, 168 insertions, 2 deletions
diff --git a/repoze/bfg/tests/test_request.py b/repoze/bfg/tests/test_request.py
index 4771c3e1c..9cae6643a 100644
--- a/repoze/bfg/tests/test_request.py
+++ b/repoze/bfg/tests/test_request.py
@@ -13,8 +13,8 @@ class TestMakeRequestASCII(unittest.TestCase):
class TestSubclassedRequest(unittest.TestCase):
def _getTargetClass(self):
- from repoze.bfg.request import Request
- return Request
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES[None]['factory']
def _makeOne(self, environ):
request = self._getTargetClass()(environ)
@@ -56,6 +56,172 @@ class TestCurrentRequest(unittest.TestCase):
manager.pop()
self.assertEqual(self._callFUT(), None)
+class TestRequestFactory(unittest.TestCase):
+ def _callFUT(self, environ):
+ from repoze.bfg.request import request_factory
+ return request_factory(environ)
+
+ def _getRequestFactory(self, name_or_iface=None):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES
+ return DEFAULT_REQUEST_FACTORIES[name_or_iface]['factory']
+
+ def _makeRoute(self):
+ route = DummyRoute()
+ factories = {}
+ def factory(environ):
+ return environ
+ for name in (None, 'GET', 'POST', 'PUT', 'DELETE', 'HEAD'):
+ factories[name] = {'factory':factory}
+ route.request_factories = factories
+ return route
+
+ def test_no_route_no_request_method(self):
+ from repoze.bfg.interfaces import IRequest
+ result = self._callFUT({})
+ self.assertEqual(result.__class__, self._getRequestFactory())
+ self.failUnless(IRequest.providedBy(result))
+
+ def test_no_route_unknown(self):
+ from repoze.bfg.interfaces import IRequest
+ result = self._callFUT({'REQUEST_METHOD':'UNKNOWN'})
+ self.assertEqual(result.__class__, self._getRequestFactory())
+ self.failUnless(IRequest.providedBy(result))
+
+ def test_no_route_get(self):
+ from repoze.bfg.interfaces import IGETRequest
+ result = self._callFUT({'REQUEST_METHOD':'GET'})
+ self.assertEqual(result.__class__, self._getRequestFactory('GET'))
+ self.failUnless(IGETRequest.providedBy(result))
+
+ def test_no_route_post(self):
+ from repoze.bfg.interfaces import IPOSTRequest
+ result = self._callFUT({'REQUEST_METHOD':'POST'})
+ self.assertEqual(result.__class__, self._getRequestFactory('POST'))
+ self.failUnless(IPOSTRequest.providedBy(result))
+
+ def test_no_route_put(self):
+ from repoze.bfg.interfaces import IPUTRequest
+ result = self._callFUT({'REQUEST_METHOD':'PUT'})
+ self.assertEqual(result.__class__, self._getRequestFactory('PUT'))
+ self.failUnless(IPUTRequest.providedBy(result))
+
+ def test_no_route_delete(self):
+ from repoze.bfg.interfaces import IDELETERequest
+ result = self._callFUT({'REQUEST_METHOD':'DELETE'})
+ self.assertEqual(result.__class__, self._getRequestFactory('DELETE'))
+ self.failUnless(IDELETERequest.providedBy(result))
+
+ def test_no_route_head(self):
+ from repoze.bfg.interfaces import IHEADRequest
+ result = self._callFUT({'REQUEST_METHOD':'HEAD'})
+ self.assertEqual(result.__class__, self._getRequestFactory('HEAD'))
+ self.failUnless(IHEADRequest.providedBy(result))
+
+ def test_route_no_request_method(self):
+ route = self._makeRoute()
+ environ = {'bfg.routes.route':route}
+ result = self._callFUT(environ)
+ self.assertEqual(result, environ)
+
+ def test_route_unknown(self):
+ route = self._makeRoute()
+ environ = {'bfg.routes.route':route, 'REQUEST_METHOD':'UNKNOWN'}
+ result = self._callFUT(environ)
+ self.assertEqual(result, environ)
+
+ def test_route_known(self):
+ route = self._makeRoute()
+ environ = {'bfg.routes.route':route, 'REQUEST_METHOD':'GET'}
+ result = self._callFUT(environ)
+ self.assertEqual(result, environ)
+
+class TestNamedRequestFactories(unittest.TestCase):
+ def _callFUT(self, name):
+ from repoze.bfg.request import named_request_factories
+ return named_request_factories(name)
+
+ def test_it_unnamed(self):
+ factories = self._callFUT(None)
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IGETRequest
+ from repoze.bfg.interfaces import IPOSTRequest
+ from repoze.bfg.interfaces import IPUTRequest
+ from repoze.bfg.interfaces import IDELETERequest
+ from repoze.bfg.interfaces import IHEADRequest
+ for alias, iface in (
+ (None, IRequest),
+ ('GET', IGETRequest),
+ ('POST', IPOSTRequest),
+ ('PUT', IPUTRequest),
+ ('DELETE', IDELETERequest),
+ ('HEAD', IHEADRequest),
+ ):
+ self.failUnless(alias in factories)
+ self.failUnless(iface in factories)
+ self.assertEqual(factories[alias], factories[iface])
+ named_iface = factories[alias]['interface']
+ named_factory = factories[alias]['factory']
+ self.failUnless(named_iface.implementedBy(named_factory))
+ self.assertEqual(factories[alias]['interface'], iface)
+ self.assertEqual(factories[iface]['interface'], iface)
+ self.assertEqual(factories[alias]['factory'].charset, 'utf-8')
+
+ def test_it_named(self):
+ factories = self._callFUT('name')
+ from zope.interface.interface import InterfaceClass
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IGETRequest
+ from repoze.bfg.interfaces import IPOSTRequest
+ from repoze.bfg.interfaces import IPUTRequest
+ from repoze.bfg.interfaces import IDELETERequest
+ from repoze.bfg.interfaces import IHEADRequest
+ for alias, iface in (
+ (None, IRequest),
+ ('GET', IGETRequest),
+ ('POST', IPOSTRequest),
+ ('PUT', IPUTRequest),
+ ('DELETE', IDELETERequest),
+ ('HEAD', IHEADRequest),
+ ):
+ self.failUnless(alias in factories)
+ self.failUnless(iface in factories)
+ self.assertEqual(factories[alias], factories[iface])
+ self.assertEqual(factories[alias]['factory'].charset, 'utf-8')
+ named_iface = factories[alias]['interface']
+ named_factory = factories[alias]['factory']
+ self.failUnless(named_iface.implementedBy(named_factory))
+
+class TestDefaultRequestFactories(unittest.TestCase):
+ def test_it(self):
+ from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES as factories
+ from repoze.bfg.interfaces import IRequest
+ from repoze.bfg.interfaces import IGETRequest
+ from repoze.bfg.interfaces import IPOSTRequest
+ from repoze.bfg.interfaces import IPUTRequest
+ from repoze.bfg.interfaces import IDELETERequest
+ from repoze.bfg.interfaces import IHEADRequest
+ for alias, iface in (
+ (None, IRequest),
+ ('GET', IGETRequest),
+ ('POST', IPOSTRequest),
+ ('PUT', IPUTRequest),
+ ('DELETE', IDELETERequest),
+ ('HEAD', IHEADRequest),
+ ):
+ self.failUnless(alias in factories)
+ self.failUnless(iface in factories)
+ self.assertEqual(factories[alias], factories[iface])
+ named_iface = factories[alias]['interface']
+ named_factory = factories[alias]['factory']
+ self.failUnless(named_iface.implementedBy(named_factory))
+ self.assertEqual(factories[alias]['interface'], iface)
+ self.assertEqual(factories[iface]['interface'], iface)
+ self.assertEqual(factories[alias]['factory'].charset, 'utf-8')
+
+
+class DummyRoute:
+ pass
+
class DummyRequest:
pass