summaryrefslogtreecommitdiff
path: root/tests/test_testing.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_testing.py')
-rw-r--r--tests/test_testing.py197
1 files changed, 138 insertions, 59 deletions
diff --git a/tests/test_testing.py b/tests/test_testing.py
index 51ffb9822..b5c689794 100644
--- a/tests/test_testing.py
+++ b/tests/test_testing.py
@@ -2,19 +2,23 @@ import unittest
from zope.component import getSiteManager
from pyramid import testing
+
class TestDummyRootFactory(unittest.TestCase):
def _makeOne(self, environ):
from pyramid.testing import DummyRootFactory
+
return DummyRootFactory(environ)
def test_it(self):
- environ = {'bfg.routes.matchdict':{'a':1}}
+ environ = {'bfg.routes.matchdict': {'a': 1}}
factory = self._makeOne(environ)
self.assertEqual(factory.a, 1)
+
class TestDummySecurityPolicy(unittest.TestCase):
def _getTargetClass(self):
from pyramid.testing import DummySecurityPolicy
+
return DummySecurityPolicy
def _makeOne(self, userid=None, groupids=(), permissive=True):
@@ -33,47 +37,55 @@ class TestDummySecurityPolicy(unittest.TestCase):
policy = self._makeOne('user', ('group1',))
from pyramid.security import Everyone
from pyramid.security import Authenticated
- self.assertEqual(policy.effective_principals(None),
- [Everyone, Authenticated, 'user', 'group1'])
+
+ self.assertEqual(
+ policy.effective_principals(None),
+ [Everyone, Authenticated, 'user', 'group1'],
+ )
def test_effective_principals_nouserid(self):
policy = self._makeOne()
from pyramid.security import Everyone
+
self.assertEqual(policy.effective_principals(None), [Everyone])
def test_permits(self):
policy = self._makeOne()
self.assertEqual(policy.permits(None, None, None), True)
-
+
def test_principals_allowed_by_permission(self):
policy = self._makeOne('user', ('group1',))
from pyramid.security import Everyone
from pyramid.security import Authenticated
+
result = policy.principals_allowed_by_permission(None, None)
self.assertEqual(result, [Everyone, Authenticated, 'user', 'group1'])
def test_forget(self):
policy = self._makeOne()
self.assertEqual(policy.forget(None), [])
-
+
def test_remember(self):
policy = self._makeOne()
self.assertEqual(policy.remember(None, None), [])
-
-
+
class TestDummyResource(unittest.TestCase):
def _getTargetClass(self):
from pyramid.testing import DummyResource
+
return DummyResource
def _makeOne(self, name=None, parent=None, **kw):
klass = self._getTargetClass()
return klass(name, parent, **kw)
- def test__setitem__and__getitem__and__delitem__and__contains__and_get(self):
+ def test__setitem__and__getitem__and__delitem__and__contains__and_get(
+ self
+ ):
class Dummy:
pass
+
dummy = Dummy()
resource = self._makeOne()
resource['abc'] = dummy
@@ -91,7 +103,7 @@ class TestDummyResource(unittest.TestCase):
def test_extra_params(self):
resource = self._makeOne(foo=1)
self.assertEqual(resource.foo, 1)
-
+
def test_clone(self):
resource = self._makeOne('name', 'parent', foo=1, bar=2)
clone = resource.clone('name2', 'parent2', bar=1)
@@ -103,6 +115,7 @@ class TestDummyResource(unittest.TestCase):
def test_keys_items_values_len(self):
class Dummy:
pass
+
resource = self._makeOne()
resource['abc'] = Dummy()
resource['def'] = Dummy()
@@ -119,24 +132,27 @@ class TestDummyResource(unittest.TestCase):
def test_bool(self):
resource = self._makeOne()
self.assertEqual(resource.__bool__(), True)
-
+
def test_ctor_with__provides__(self):
resource = self._makeOne(__provides__=IDummy)
self.assertTrue(IDummy.providedBy(resource))
+
class TestDummyRequest(unittest.TestCase):
def _getTargetClass(self):
from pyramid.testing import DummyRequest
+
return DummyRequest
def _makeOne(self, *arg, **kw):
return self._getTargetClass()(*arg, **kw)
def test_params(self):
- request = self._makeOne(params = {'say':'Hello'},
- environ = {'PATH_INFO':'/foo'},
- headers = {'X-Foo':'YUP'},
- )
+ request = self._makeOne(
+ params={'say': 'Hello'},
+ environ={'PATH_INFO': '/foo'},
+ headers={'X-Foo': 'YUP'},
+ )
self.assertEqual(request.params['say'], 'Hello')
self.assertEqual(request.GET['say'], 'Hello')
self.assertEqual(request.POST['say'], 'Hello')
@@ -146,6 +162,7 @@ class TestDummyRequest(unittest.TestCase):
def test_defaults(self):
from pyramid.threadlocal import get_current_registry
from pyramid.testing import DummySession
+
request = self._makeOne()
self.assertEqual(request.method, 'GET')
self.assertEqual(request.application_url, 'http://example.com')
@@ -174,25 +191,25 @@ class TestDummyRequest(unittest.TestCase):
self.assertEqual(request.session.__class__, DummySession)
def test_params_explicit(self):
- request = self._makeOne(params = {'foo':'bar'})
+ request = self._makeOne(params={'foo': 'bar'})
self.assertEqual(request.params['foo'], 'bar')
self.assertEqual(request.GET['foo'], 'bar')
self.assertEqual(request.POST['foo'], 'bar')
def test_environ_explicit(self):
- request = self._makeOne(environ = {'PATH_INFO':'/foo'})
+ request = self._makeOne(environ={'PATH_INFO': '/foo'})
self.assertEqual(request.environ['PATH_INFO'], '/foo')
def test_headers_explicit(self):
- request = self._makeOne(headers = {'X-Foo':'YUP'})
+ request = self._makeOne(headers={'X-Foo': 'YUP'})
self.assertEqual(request.headers['X-Foo'], 'YUP')
def test_path_explicit(self):
- request = self._makeOne(path = '/abc')
+ request = self._makeOne(path='/abc')
self.assertEqual(request.path, '/abc')
def test_cookies_explicit(self):
- request = self._makeOne(cookies = {'type': 'gingersnap'})
+ request = self._makeOne(cookies={'type': 'gingersnap'})
self.assertEqual(request.cookies['type'], 'gingersnap')
def test_post_explicit(self):
@@ -213,7 +230,7 @@ class TestDummyRequest(unittest.TestCase):
self.assertEqual(request.POST.get('foo'), None)
def test_kwargs(self):
- request = self._makeOne(water = 1)
+ request = self._makeOne(water=1)
self.assertEqual(request.water, 1)
def test_add_response_callback(self):
@@ -225,6 +242,7 @@ class TestDummyRequest(unittest.TestCase):
# see https://github.com/Pylons/pyramid/issues/165
from pyramid.registry import Registry
from pyramid.config import Configurator
+
request = self._makeOne()
try:
registry = Registry('this_test')
@@ -243,6 +261,7 @@ class TestDummyRequest(unittest.TestCase):
# see https://github.com/Pylons/pyramid/issues/165
from pyramid.registry import Registry
from pyramid.config import Configurator
+
request = self._makeOne()
request.registry = 'abc'
self.assertEqual(request.registry, 'abc')
@@ -258,32 +277,35 @@ class TestDummyRequest(unittest.TestCase):
def test_response_with_responsefactory(self):
from pyramid.registry import Registry
from pyramid.interfaces import IResponseFactory
+
registry = Registry('this_test')
+
class ResponseFactory(object):
pass
- registry.registerUtility(
- lambda r: ResponseFactory(), IResponseFactory
- )
+
+ registry.registerUtility(lambda r: ResponseFactory(), IResponseFactory)
request = self._makeOne()
request.registry = registry
resp = request.response
self.assertEqual(resp.__class__, ResponseFactory)
- self.assertTrue(request.response is resp) # reified
+ self.assertTrue(request.response is resp) # reified
def test_response_without_responsefactory(self):
from pyramid.registry import Registry
from pyramid.response import Response
+
registry = Registry('this_test')
request = self._makeOne()
request.registry = registry
resp = request.response
self.assertEqual(resp.__class__, Response)
- self.assertTrue(request.response is resp) # reified
-
+ self.assertTrue(request.response is resp) # reified
+
class TestDummyTemplateRenderer(unittest.TestCase):
- def _getTargetClass(self, ):
+ def _getTargetClass(self,):
from pyramid.testing import DummyTemplateRenderer
+
return DummyTemplateRenderer
def _makeOne(self, string_response=''):
@@ -298,29 +320,32 @@ class TestDummyTemplateRenderer(unittest.TestCase):
def test_getattr(self):
renderer = self._makeOne()
- renderer({'a':1})
+ renderer({'a': 1})
self.assertEqual(renderer.a, 1)
self.assertRaises(AttributeError, renderer.__getattr__, 'b')
def test_assert_(self):
renderer = self._makeOne()
- renderer({'a':1, 'b':2})
+ renderer({'a': 1, 'b': 2})
self.assertRaises(AssertionError, renderer.assert_, c=1)
self.assertRaises(AssertionError, renderer.assert_, b=3)
self.assertTrue(renderer.assert_(a=1, b=2))
-
+
def test_nondefault_string_response(self):
renderer = self._makeOne('abc')
- result = renderer({'a':1, 'b':2})
+ result = renderer({'a': 1, 'b': 2})
self.assertEqual(result, 'abc')
+
class Test_setUp(unittest.TestCase):
def _callFUT(self, **kw):
from pyramid.testing import setUp
+
return setUp(**kw)
def tearDown(self):
from pyramid.threadlocal import manager
+
manager.clear()
getSiteManager.reset()
@@ -332,6 +357,7 @@ class Test_setUp(unittest.TestCase):
from pyramid.threadlocal import manager
from pyramid.threadlocal import get_current_registry
from pyramid.registry import Registry
+
old = True
manager.push(old)
config = self._callFUT()
@@ -346,13 +372,15 @@ class Test_setUp(unittest.TestCase):
def test_it_with_registry(self):
from pyramid.registry import Registry
from pyramid.threadlocal import manager
+
registry = Registry()
self._callFUT(registry=registry)
current = manager.get()
self.assertEqual(current['registry'], registry)
-
+
def test_it_with_request(self):
from pyramid.threadlocal import manager
+
request = object()
self._callFUT(request=request)
current = manager.get()
@@ -364,6 +392,7 @@ class Test_setUp(unittest.TestCase):
def test_it_with_hook_zca_false(self):
from pyramid.registry import Registry
+
registry = Registry()
self._callFUT(registry=registry, hook_zca=False)
sm = getSiteManager()
@@ -371,26 +400,32 @@ class Test_setUp(unittest.TestCase):
def test_it_with_settings_passed_explicit_registry(self):
from pyramid.registry import Registry
+
registry = Registry()
self._callFUT(registry=registry, hook_zca=False, settings=dict(a=1))
self.assertEqual(registry.settings['a'], 1)
-
+
def test_it_with_settings_passed_implicit_registry(self):
config = self._callFUT(hook_zca=False, settings=dict(a=1))
self.assertEqual(config.registry.settings['a'], 1)
+
class Test_cleanUp(Test_setUp):
def _callFUT(self, *arg, **kw):
from pyramid.testing import cleanUp
+
return cleanUp(*arg, **kw)
-
+
+
class Test_tearDown(unittest.TestCase):
def _callFUT(self, **kw):
from pyramid.testing import tearDown
+
return tearDown(**kw)
def tearDown(self):
from pyramid.threadlocal import manager
+
manager.clear()
getSiteManager.reset()
@@ -403,8 +438,9 @@ class Test_tearDown(unittest.TestCase):
def test_defaults(self):
from pyramid.threadlocal import manager
+
registry = DummyRegistry()
- old = {'registry':registry}
+ old = {'registry': registry}
hook = lambda *arg: None
try:
self._setSMHook(hook)
@@ -419,14 +455,17 @@ class Test_tearDown(unittest.TestCase):
def test_registry_cannot_be_inited(self):
from pyramid.threadlocal import manager
+
registry = DummyRegistry()
+
def raiseit(name):
raise TypeError
+
registry.__init__ = raiseit
- old = {'registry':registry}
+ old = {'registry': registry}
try:
manager.push(old)
- self._callFUT() # doesn't blow up
+ self._callFUT() # doesn't blow up
current = manager.get()
self.assertNotEqual(current, old)
self.assertEqual(registry.inited, 1)
@@ -441,9 +480,11 @@ class Test_tearDown(unittest.TestCase):
finally:
self._assertSMHook(hook)
+
class TestDummyRendererFactory(unittest.TestCase):
def _makeOne(self, name, factory):
from pyramid.testing import DummyRendererFactory
+
return DummyRendererFactory(name, factory)
def test_add_no_colon(self):
@@ -460,30 +501,33 @@ class TestDummyRendererFactory(unittest.TestCase):
def test_call(self):
f = self._makeOne('name', None)
f.renderers['spec'] = 'renderer'
- info = DummyRendererInfo({'name':'spec'})
+ info = DummyRendererInfo({'name': 'spec'})
self.assertEqual(f(info), 'renderer')
-
+
def test_call2(self):
f = self._makeOne('name', None)
f.renderers['spec'] = 'renderer'
- info = DummyRendererInfo({'name':'spec:spec'})
+ info = DummyRendererInfo({'name': 'spec:spec'})
self.assertEqual(f(info), 'renderer')
def test_call3(self):
def factory(spec):
return 'renderer'
+
f = self._makeOne('name', factory)
- info = DummyRendererInfo({'name':'spec'})
+ info = DummyRendererInfo({'name': 'spec'})
self.assertEqual(f(info), 'renderer')
def test_call_miss(self):
f = self._makeOne('name', None)
- info = DummyRendererInfo({'name':'spec'})
+ info = DummyRendererInfo({'name': 'spec'})
self.assertRaises(KeyError, f, info)
+
class TestMockTemplate(unittest.TestCase):
def _makeOne(self, response):
from pyramid.testing import MockTemplate
+
return MockTemplate(response)
def test_getattr(self):
@@ -498,39 +542,52 @@ class TestMockTemplate(unittest.TestCase):
template = self._makeOne('123')
self.assertEqual(template(), '123')
+
class Test_skip_on(unittest.TestCase):
def setUp(self):
from pyramid.testing import skip_on
+
self.os_name = skip_on.os_name
skip_on.os_name = 'wrong'
def tearDown(self):
from pyramid.testing import skip_on
+
skip_on.os_name = self.os_name
-
+
def _callFUT(self, *platforms):
from pyramid.testing import skip_on
+
return skip_on(*platforms)
def test_wrong_platform(self):
- def foo(): return True
+ def foo():
+ return True
+
decorated = self._callFUT('wrong')(foo)
self.assertEqual(decorated(), None)
-
+
def test_ok_platform(self):
- def foo(): return True
+ def foo():
+ return True
+
decorated = self._callFUT('ok')(foo)
self.assertEqual(decorated(), True)
+
class TestDummySession(unittest.TestCase):
def _makeOne(self):
from pyramid.testing import DummySession
+
return DummySession()
- @testing.skip_on('pypy') # see https://github.com/Pylons/pyramid/issues/3237
+ @testing.skip_on(
+ 'pypy'
+ ) # see https://github.com/Pylons/pyramid/issues/3237
def test_instance_conforms(self):
from zope.interface.verify import verifyObject
from pyramid.interfaces import ISession
+
session = self._makeOne()
verifyObject(ISession, session)
@@ -549,7 +606,7 @@ class TestDummySession(unittest.TestCase):
session.flash('msg1')
session.flash('msg2')
self.assertEqual(session['_f_'], ['msg1', 'msg2'])
-
+
def test_flash_mixed(self):
session = self._makeOne()
session.flash('warn1', 'warn')
@@ -608,32 +665,39 @@ class TestDummySession(unittest.TestCase):
self.assertNotEqual(token, None)
self.assertTrue(len(token) >= 1)
+
from zope.interface import Interface
from zope.interface import implementer
-
+
+
class IDummy(Interface):
pass
+
@implementer(IDummy)
class DummyEvent:
pass
-
+
+
class DummyFactory:
def __init__(self, environ):
""" """
+
class DummyRegistry(object):
inited = 0
__name__ = 'name'
+
def __init__(self, name=''):
self.inited = self.inited + 1
-
+
+
class DummyRendererInfo(object):
def __init__(self, kw):
self.__dict__.update(kw)
-
-class Test_testConfig(unittest.TestCase):
+
+class Test_testConfig(unittest.TestCase):
def _setUp(self, **kw):
self._log.append(('setUp', kw))
return 'fake config'
@@ -643,6 +707,7 @@ class Test_testConfig(unittest.TestCase):
def setUp(self):
from pyramid import testing
+
self._log = []
self._orig_setUp = testing.setUp
testing.setUp = self._setUp
@@ -651,39 +716,53 @@ class Test_testConfig(unittest.TestCase):
def tearDown(self):
from pyramid import testing
+
testing.setUp = self._orig_setUp
testing.tearDown = self._orig_tearDown
def _callFUT(self, inner, **kw):
from pyramid.testing import testConfig
+
with testConfig(**kw) as config:
inner(config)
def test_ok_calls(self):
self.assertEqual(self._log, [])
+
def inner(config):
- self.assertEqual(self._log,
- [('setUp',
- {'autocommit': True,
+ self.assertEqual(
+ self._log,
+ [
+ (
+ 'setUp',
+ {
+ 'autocommit': True,
'hook_zca': True,
'registry': None,
'request': None,
- 'settings': None})])
+ 'settings': None,
+ },
+ )
+ ],
+ )
self._log.pop()
+
self._callFUT(inner)
- self.assertEqual(self._log,
- [('tearDown', {'unhook_zca': True})])
+ self.assertEqual(self._log, [('tearDown', {'unhook_zca': True})])
def test_teardown_called_on_exception(self):
class TestException(Exception):
pass
+
def inner(config):
self._log = []
raise TestException('oops')
+
self.assertRaises(TestException, self._callFUT, inner)
self.assertEqual(self._log[0][0], 'tearDown')
def test_ok_get_config(self):
def inner(config):
self.assertEqual(config, 'fake config')
+
self._callFUT(inner)