diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-09-06 03:36:59 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-09-06 03:36:59 +0000 |
| commit | d66bfb5d1f1aef5cce4941b49740dbd136c95605 (patch) | |
| tree | 0204e233befdb8ad99332e498308468015f3558e /repoze/bfg/tests/test_request.py | |
| parent | 50df953770409dc9c9558c77bd5c0bbb17ac54f6 (diff) | |
| download | pyramid-d66bfb5d1f1aef5cce4941b49740dbd136c95605.tar.gz pyramid-d66bfb5d1f1aef5cce4941b49740dbd136c95605.tar.bz2 pyramid-d66bfb5d1f1aef5cce4941b49740dbd136c95605.zip | |
Merge multiview2 branch to HEAD.
Diffstat (limited to 'repoze/bfg/tests/test_request.py')
| -rw-r--r-- | repoze/bfg/tests/test_request.py | 268 |
1 files changed, 40 insertions, 228 deletions
diff --git a/repoze/bfg/tests/test_request.py b/repoze/bfg/tests/test_request.py index 5f61f4efc..8aeeff42d 100644 --- a/repoze/bfg/tests/test_request.py +++ b/repoze/bfg/tests/test_request.py @@ -12,7 +12,7 @@ class TestMakeRequestASCII(unittest.TestCase): self._callFUT(event) self.assertEqual(request.charset, None) -class TestRequestSubclass(object): +class RequestTestBase(object): def _makeOne(self, environ): request = self._getTargetClass()(environ) return request @@ -37,71 +37,22 @@ class TestRequestSubclass(object): def test_class_implements(self): from repoze.bfg.interfaces import IRequest klass = self._getTargetClass() - iface = self._getInterface() - self.assertTrue(iface.implementedBy(klass)) self.assertTrue(IRequest.implementedBy(klass)) def test_instance_provides(self): from repoze.bfg.interfaces import IRequest inst = self._makeOne({}) - iface = self._getInterface() - self.assertTrue(iface.providedBy(inst)) self.assertTrue(IRequest.providedBy(inst)) - -class Test_Request(TestRequestSubclass, unittest.TestCase): - def _getTargetClass(self): - from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES - return DEFAULT_REQUEST_FACTORIES[None]['factory'] - - def _getInterface(self): - from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES - return DEFAULT_REQUEST_FACTORIES[None]['interface'] - -class Test_GETRequest(TestRequestSubclass, unittest.TestCase): - def _getTargetClass(self): - from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES - return DEFAULT_REQUEST_FACTORIES['GET']['factory'] - - def _getInterface(self): - from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES - return DEFAULT_REQUEST_FACTORIES['GET']['interface'] - -class Test_POSTRequest(TestRequestSubclass, unittest.TestCase): - def _getTargetClass(self): - from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES - return DEFAULT_REQUEST_FACTORIES['POST']['factory'] - - def _getInterface(self): - from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES - return DEFAULT_REQUEST_FACTORIES['POST']['interface'] - -class Test_PUTRequest(TestRequestSubclass, unittest.TestCase): - def _getTargetClass(self): - from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES - return DEFAULT_REQUEST_FACTORIES['PUT']['factory'] - - def _getInterface(self): - from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES - return DEFAULT_REQUEST_FACTORIES['PUT']['interface'] - -class Test_DELETERequest(TestRequestSubclass, unittest.TestCase): - def _getTargetClass(self): - from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES - return DEFAULT_REQUEST_FACTORIES['DELETE']['factory'] - - def _getInterface(self): - from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES - return DEFAULT_REQUEST_FACTORIES['DELETE']['interface'] - -class Test_HEADRequest(TestRequestSubclass, unittest.TestCase): - def _getTargetClass(self): - from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES - return DEFAULT_REQUEST_FACTORIES['HEAD']['factory'] - - def _getInterface(self): - from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES - return DEFAULT_REQUEST_FACTORIES['HEAD']['interface'] +class TestRequest(unittest.TestCase, RequestTestBase): + def _getTargetClass(self): + from repoze.bfg.request import Request + return Request + +class TestRouteRequest(unittest.TestCase, RequestTestBase): + def _getTargetClass(self): + from repoze.bfg.request import create_route_request_factory + return create_route_request_factory('abc') class TestRequestFactory(unittest.TestCase): def setUp(self): @@ -114,187 +65,48 @@ class TestRequestFactory(unittest.TestCase): from repoze.bfg.request import request_factory return request_factory(environ) - def _registerRequestFactories(self, name=''): - from zope.component import getSiteManager - from repoze.bfg.interfaces import IRequestFactories - factories = {} - def factory(environ): - return environ - for name in (None, 'GET', 'POST', 'PUT', 'DELETE', 'HEAD'): - factories[name] = {'factory':factory} - sm = getSiteManager() - sm.registerUtility(factories, IRequestFactories, name=name) - if name: - sm.registerUtility(factories, IRequestFactories, name='') - - 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, name=None): - route = DummyRoute(name) - return route - - def test_no_route_no_request_method(self): + def test_it_no_route(self): from repoze.bfg.interfaces import IRequest + from repoze.bfg.request import Request 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.assertEqual(result.__class__, Request) 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): - self._registerRequestFactories() - route = self._makeRoute() - environ = {'bfg.routes.route':route} - result = self._callFUT(environ) - self.assertEqual(result, environ) - - def test_route_unknown(self): - self._registerRequestFactories() - route = self._makeRoute() - environ = {'bfg.routes.route':route, 'REQUEST_METHOD':'UNKNOWN'} - result = self._callFUT(environ) - self.assertEqual(result, environ) - - def test_route_known(self): - self._registerRequestFactories() - route = self._makeRoute() - environ = {'bfg.routes.route':route, 'REQUEST_METHOD':'GET'} - result = self._callFUT(environ) - self.assertEqual(result, environ) - -class TestNamedRequestFactories(unittest.TestCase): + def test_it_with_route_found(self): + from zope.component import getSiteManager + from repoze.bfg.interfaces import IRouteRequest + sm = getSiteManager() + sm.registerUtility(DummyRequest, IRouteRequest, 'routename') + route = DummyRoute('routename') + result = self._callFUT({'bfg.routes.route':route}) + self.assertEqual(result.__class__, DummyRequest) + + def test_it_with_route_notfound(self): + from repoze.bfg.request import Request + route = DummyRoute('routename') + result = self._callFUT({'bfg.routes.route':route}) + self.assertEqual(result.__class__, Request) + +class Test_create_route_request_factory(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'] - default_iface = factories[None]['interface'] - self.assertEqual(factories[alias]['interface'], iface) - self.assertEqual(factories[iface]['interface'], iface) - self.assertEqual(factories[alias]['factory'].charset, 'utf-8') - self.failUnless(named_iface.implementedBy(named_factory)) - self.failUnless(iface.implementedBy(named_factory)) - self.failUnless(IRequest.implementedBy(named_factory)) - self.failUnless(default_iface.implementedBy(named_factory)) + from repoze.bfg.request import create_route_request_factory + return create_route_request_factory(name) - def test_it_named(self): - factories = self._callFUT('name') - 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'] - default_iface = factories[None]['interface'] - self.failUnless(named_iface.implementedBy(named_factory)) - self.failUnless(iface.implementedBy(named_factory)) - self.failUnless(IRequest.implementedBy(named_factory)) - self.failUnless(default_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 IRouteRequest 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') - + factory = self._callFUT('routename') + self.failUnless(IRouteRequest.implementedBy(factory)) + self.failUnless(IRequest.implementedBy(factory)) class DummyRoute: def __init__(self, name): - self.name=name - + self.name = name class DummyRequest: - pass + def __init__(self, environ=None): + if environ is None: + environ = {} + self.environ = environ class DummyNewRequestEvent: def __init__(self, request): |
