summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-07-31 06:17:31 +0000
committerChris McDonough <chrism@agendaless.com>2008-07-31 06:17:31 +0000
commita0423aedb4abaf12b4008c0b229ec0ecad4ddfd8 (patch)
tree6193a7bce3bdb05c6c9e81921d592b769cd071b1 /repoze/bfg/tests
parent54302499c5ff609b4c615a7ae1d341e7d652dae3 (diff)
downloadpyramid-a0423aedb4abaf12b4008c0b229ec0ecad4ddfd8.tar.gz
pyramid-a0423aedb4abaf12b4008c0b229ec0ecad4ddfd8.tar.bz2
pyramid-a0423aedb4abaf12b4008c0b229ec0ecad4ddfd8.zip
- Add event sends for INewRequest and INewResponse. See the
events.rst chapter in the documentation's ``api`` directory.
Diffstat (limited to 'repoze/bfg/tests')
-rw-r--r--repoze/bfg/tests/test_events.py60
-rw-r--r--repoze/bfg/tests/test_router.py33
2 files changed, 93 insertions, 0 deletions
diff --git a/repoze/bfg/tests/test_events.py b/repoze/bfg/tests/test_events.py
new file mode 100644
index 000000000..770f1afeb
--- /dev/null
+++ b/repoze/bfg/tests/test_events.py
@@ -0,0 +1,60 @@
+import unittest
+
+class NewRequestEventTests(unittest.TestCase):
+ def _getTargetClass(self):
+ from repoze.bfg.events import NewRequest
+ return NewRequest
+
+ def _makeOne(self, request):
+ return self._getTargetClass()(request)
+
+ def test_class_implements(self):
+ from repoze.bfg.interfaces import INewRequest
+ from zope.interface.verify import verifyClass
+ klass = self._getTargetClass()
+ verifyClass(INewRequest, klass)
+
+ def test_instance_implements(self):
+ from repoze.bfg.interfaces import INewRequest
+ from zope.interface.verify import verifyObject
+ request = DummyRequest()
+ inst = self._makeOne(request)
+ verifyObject(INewRequest, inst)
+
+ def test_ctor(self):
+ request = DummyRequest()
+ inst = self._makeOne(request)
+ self.assertEqual(inst.request, request)
+
+class NewResponseEventTests(unittest.TestCase):
+ def _getTargetClass(self):
+ from repoze.bfg.events import NewResponse
+ return NewResponse
+
+ def _makeOne(self, response):
+ return self._getTargetClass()(response)
+
+ def test_class_implements(self):
+ from repoze.bfg.interfaces import INewResponse
+ from zope.interface.verify import verifyClass
+ klass = self._getTargetClass()
+ verifyClass(INewResponse, klass)
+
+ def test_instance_implements(self):
+ from repoze.bfg.interfaces import INewResponse
+ from zope.interface.verify import verifyObject
+ response = DummyResponse()
+ inst = self._makeOne(response)
+ verifyObject(INewResponse, inst)
+
+ def test_ctor(self):
+ response = DummyResponse()
+ inst = self._makeOne(response)
+ self.assertEqual(inst.response, response)
+
+class DummyRequest:
+ pass
+
+class DummyResponse:
+ pass
+
diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py
index 4b1e914b7..d2907ef8a 100644
--- a/repoze/bfg/tests/test_router.py
+++ b/repoze/bfg/tests/test_router.py
@@ -33,6 +33,11 @@ class RouterTests(unittest.TestCase, PlacelessSetup):
from repoze.bfg.interfaces import ISecurityPolicy
gsm.registerUtility(secpol, ISecurityPolicy)
+ def _registerEventListener(self, listener, iface):
+ import zope.component
+ gsm = zope.component.getGlobalSiteManager()
+ gsm.registerHandler(listener, (iface,))
+
def _getTargetClass(self):
from repoze.bfg.router import Router
return Router
@@ -232,6 +237,34 @@ class RouterTests(unittest.TestCase, PlacelessSetup):
self.failUnless('permission' in result[0])
self.assertEqual(permissionfactory.checked_with, secpol)
+ def test_call_eventsends(self):
+ rootpolicy = make_rootpolicy(None)
+ context = DummyContext()
+ traversalfactory = make_traversal_factory(context, '', [])
+ response = DummyResponse()
+ response.app_iter = ['Hello world']
+ view = make_view(response)
+ environ = self._makeEnviron()
+ self._registerTraverserFactory(traversalfactory, '', None, None)
+ self._registerView(view, '', None, None)
+ from repoze.bfg.interfaces import INewRequest
+ from repoze.bfg.interfaces import INewResponse
+ request_events = []
+ response_events = []
+ def handle_request(event):
+ request_events.append(event)
+ def handle_response(event):
+ response_events.append(event)
+ self._registerEventListener(handle_request, INewRequest)
+ self._registerEventListener(handle_response, INewResponse)
+ router = self._makeOne(rootpolicy, None)
+ start_response = DummyStartResponse()
+ result = router(environ, start_response)
+ self.assertEqual(len(request_events), 1)
+ self.assertEqual(request_events[0].request.environ, environ)
+ self.assertEqual(len(response_events), 1)
+ self.assertEqual(response_events[0].response, response)
+
class MakeAppTests(unittest.TestCase, PlacelessSetup):
def setUp(self):
PlacelessSetup.setUp(self)