summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-01-11 22:43:27 +0000
committerChris McDonough <chrism@agendaless.com>2009-01-11 22:43:27 +0000
commitb0a24149ffc4dd3b945b496e5cdb01111c8cf29a (patch)
treeda0d31fa9c46eb4e990c0df3dd116e8fa38dcd5c /repoze/bfg/tests
parentd69635eb6237055e8b3ccedeeaa7114a7beed057 (diff)
downloadpyramid-b0a24149ffc4dd3b945b496e5cdb01111c8cf29a.tar.gz
pyramid-b0a24149ffc4dd3b945b496e5cdb01111c8cf29a.tar.bz2
pyramid-b0a24149ffc4dd3b945b496e5cdb01111c8cf29a.zip
- Improve test coverage.
- Remove old cold which attempts to recover from trying to unpickle a ``z3c.pt`` template; Chameleon has been the templating engine for a good long time now. Running repoze.bfg against a sandbox that has pickled ``z3c.pt`` templates it will now just fail with an unpickling error, but can be fixed by deleting the template cache files.
Diffstat (limited to 'repoze/bfg/tests')
-rw-r--r--repoze/bfg/tests/test_location.py22
-rw-r--r--repoze/bfg/tests/test_security.py38
-rw-r--r--repoze/bfg/tests/test_templating.py59
-rw-r--r--repoze/bfg/tests/test_testing.py7
-rw-r--r--repoze/bfg/tests/test_wsgi.py13
5 files changed, 138 insertions, 1 deletions
diff --git a/repoze/bfg/tests/test_location.py b/repoze/bfg/tests/test_location.py
index fc8f8c621..f297a9d6c 100644
--- a/repoze/bfg/tests/test_location.py
+++ b/repoze/bfg/tests/test_location.py
@@ -75,6 +75,28 @@ class TestLocation(unittest.TestCase):
result = list(lineage(o1))
self.assertEqual(result, [o1])
+class TestClassAndInstanceDescr(unittest.TestCase):
+ def _getTargetClass(self):
+ from repoze.bfg.location import ClassAndInstanceDescr
+ return ClassAndInstanceDescr
+
+ def _makeOne(self, *arg):
+ return self._getTargetClass()(*arg)
+
+ def test__get__noinst(self):
+ def f(ob):
+ return ob
+ ob = self._makeOne(f, f)
+ result = ob.__get__(None, 1)
+ self.assertEqual(result, 1)
+
+ def test__get__withinst(self):
+ def f(ob):
+ return ob
+ ob = self._makeOne(f, f)
+ result = ob.__get__(1, 2)
+ self.assertEqual(result, 1)
+
from repoze.bfg.interfaces import ILocation
from zope.interface import implements
class Location(object):
diff --git a/repoze/bfg/tests/test_security.py b/repoze/bfg/tests/test_security.py
index 5fa554629..449933c7e 100644
--- a/repoze/bfg/tests/test_security.py
+++ b/repoze/bfg/tests/test_security.py
@@ -343,6 +343,13 @@ class TestRemoteUserACLSecurityPolicy(unittest.TestCase, PlacelessSetup):
result = policy.authenticated_userid(request)
self.assertEqual(result, 'fred')
+ def test_authenticated_userid_no_remote_user(self):
+ context = DummyContext()
+ request = DummyRequest({})
+ policy = self._makeOne()
+ result = policy.authenticated_userid(request)
+ self.assertEqual(result, None)
+
def test_effective_principals(self):
context = DummyContext()
request = DummyRequest({'REMOTE_USER':'fred'})
@@ -352,6 +359,13 @@ class TestRemoteUserACLSecurityPolicy(unittest.TestCase, PlacelessSetup):
from repoze.bfg.security import Authenticated
self.assertEqual(result, [Everyone, Authenticated, 'fred'])
+ def test_effective_principals_no_remote_user(self):
+ context = DummyContext()
+ request = DummyRequest({})
+ policy = self._makeOne()
+ result = policy.effective_principals(request)
+ from repoze.bfg.security import Everyone
+ self.assertEqual(result, [Everyone])
class TestRepozeWhoIdentityACLSecurityPolicy(unittest.TestCase, PlacelessSetup):
def _getTargetClass(self):
@@ -381,6 +395,13 @@ class TestRepozeWhoIdentityACLSecurityPolicy(unittest.TestCase, PlacelessSetup):
result = policy.authenticated_userid(request)
self.assertEqual(result, 'fred')
+ def test_authenticated_userid_no_who_ident(self):
+ context = DummyContext()
+ request = DummyRequest({})
+ policy = self._makeOne()
+ result = policy.authenticated_userid(request)
+ self.assertEqual(result, None)
+
def test_effective_principals(self):
context = DummyContext()
identity = {'repoze.who.identity':{'repoze.who.userid':'fred'}}
@@ -391,6 +412,13 @@ class TestRepozeWhoIdentityACLSecurityPolicy(unittest.TestCase, PlacelessSetup):
from repoze.bfg.security import Authenticated
self.assertEqual(result, [Everyone, Authenticated, 'fred'])
+ def test_effective_principals_no_who_ident(self):
+ context = DummyContext()
+ request = DummyRequest({})
+ policy = self._makeOne()
+ result = policy.effective_principals(request)
+ from repoze.bfg.security import Everyone
+ self.assertEqual(result, [Everyone])
class TestAPIFunctions(unittest.TestCase, PlacelessSetup):
def setUp(self):
@@ -472,6 +500,16 @@ class TestViewPermission(unittest.TestCase):
self.assertEqual(result, True)
self.assertEqual(secpol.checked, (context, request, 'repoze.view'))
+ def test_repr(self):
+ context = DummyContext()
+ request = DummyRequest({})
+ request.view_name = 'viewname'
+ secpol = DummySecurityPolicy(True)
+ permission = self._makeOne(context, request, 'repoze.view')
+ result = repr(permission)
+ self.failUnless(result.startswith('<Permission at '))
+ self.failUnless(result.endswith(" named 'repoze.view' for 'viewname'>"))
+
class TestViewPermissionFactory(unittest.TestCase):
def _getTargetClass(self):
from repoze.bfg.security import ViewPermissionFactory
diff --git a/repoze/bfg/tests/test_templating.py b/repoze/bfg/tests/test_templating.py
new file mode 100644
index 000000000..3429b0839
--- /dev/null
+++ b/repoze/bfg/tests/test_templating.py
@@ -0,0 +1,59 @@
+import unittest
+from zope.testing.cleanup import cleanUp
+
+from repoze.bfg import testing
+
+class TestRendererFromCache(unittest.TestCase):
+ def setUp(self):
+ cleanUp()
+
+ def tearDown(self):
+ cleanUp()
+
+ def _callFUT(self, path, factory, level=3, **kw):
+ from repoze.bfg.templating import renderer_from_cache
+ return renderer_from_cache(path, factory, level, **kw)
+
+ def test_relpath_found(self):
+ renderer = {}
+ from repoze.bfg.interfaces import ITemplateRenderer
+ testing.registerUtility(renderer, ITemplateRenderer, name='foo/bar')
+ result = self._callFUT('foo/bar', None)
+ self.failUnless(renderer is result)
+
+ def test_abspath_found(self):
+ import os
+ here = os.path.dirname(__file__)
+ abspath = os.path.join(here, 'foo/bar')
+ from repoze.bfg.interfaces import ITemplateRenderer
+ renderer = {}
+ testing.registerUtility(renderer, ITemplateRenderer, name=abspath)
+ result = self._callFUT('foo/bar', None)
+ self.failUnless(renderer is result)
+
+ def test_notfound_missing(self):
+ import os
+ here = os.path.dirname(__file__)
+ abspath = os.path.join(here, 'foo/bar')
+ renderer = {}
+ self.assertRaises(ValueError, self._callFUT, 'foo/bar', None)
+
+ def test_withfactory(self):
+ renderer = {}
+ factory = DummyFactory(renderer)
+ import os
+ here = os.path.dirname(__file__)
+ abspath = os.path.join(here, 'pp.pt')
+ from repoze.bfg.interfaces import ITemplateRenderer
+ testing.registerUtility(renderer, ITemplateRenderer, name=abspath)
+ result = self._callFUT('pp.pt', factory)
+ self.failUnless(renderer is result)
+
+class DummyFactory:
+ def __init__(self, renderer):
+ self.renderer = renderer
+
+ def __call__(self, path, **kw):
+ self.path = path
+ self.kw = kw
+ return self.renderer
diff --git a/repoze/bfg/tests/test_testing.py b/repoze/bfg/tests/test_testing.py
index 38d41be06..a92e340fc 100644
--- a/repoze/bfg/tests/test_testing.py
+++ b/repoze/bfg/tests/test_testing.py
@@ -311,7 +311,7 @@ class TestDummyModel(unittest.TestCase):
self.assertEqual(clone.__parent__, 'parent2')
self.assertEqual(clone.foo, 1)
- def test_keys_items_values(self):
+ def test_keys_items_values_len(self):
class Dummy:
pass
model = self._makeOne()
@@ -320,6 +320,11 @@ class TestDummyModel(unittest.TestCase):
self.assertEqual(model.values(), model.subs.values())
self.assertEqual(model.items(), model.subs.items())
self.assertEqual(model.keys(), model.subs.keys())
+ self.assertEqual(len(model), 2)
+
+ def test_nonzero(self):
+ model = self._makeOne()
+ self.assertEqual(model.__nonzero__(), True)
class TestDummyRequest(unittest.TestCase):
def _getTargetClass(self):
diff --git a/repoze/bfg/tests/test_wsgi.py b/repoze/bfg/tests/test_wsgi.py
index d905350d6..4c36850b6 100644
--- a/repoze/bfg/tests/test_wsgi.py
+++ b/repoze/bfg/tests/test_wsgi.py
@@ -18,6 +18,19 @@ class WSGIAppTests(unittest.TestCase):
self.assertEqual(response.headerlist, headerlist)
self.assertEqual(response.app_iter, [body])
+ def test_decorator_startresponse_uncalled(self):
+ body = 'Unauthorized'
+ headerlist = [ ('Content-Type', 'text/plain'),
+ ('Content-Length', len(body)) ]
+ status = '401 Unauthorized'
+ def real_wsgiapp(environ, start_response):
+ return [body]
+ from repoze.bfg.wsgi import wsgiapp
+ wrapped = wsgiapp(real_wsgiapp)
+ context = DummyContext()
+ request = DummyRequest({})
+ self.assertRaises(RuntimeError, wrapped, context, request)
+
class DummyContext:
pass