diff options
| author | Michael Merickel <michael@merickel.org> | 2018-10-15 01:55:54 -0500 |
|---|---|---|
| committer | Michael Merickel <michael@merickel.org> | 2018-10-15 09:24:07 -0500 |
| commit | 0c29cf2df41600d3906d521c72991c7686018b71 (patch) | |
| tree | ff907f90ec9467e12874c9b2c961549d0e7caf74 /tests/test_traversal.py | |
| parent | 851c368e3c158e264358de10446f5b5de240e534 (diff) | |
| download | pyramid-0c29cf2df41600d3906d521c72991c7686018b71.tar.gz pyramid-0c29cf2df41600d3906d521c72991c7686018b71.tar.bz2 pyramid-0c29cf2df41600d3906d521c72991c7686018b71.zip | |
format source using black
Diffstat (limited to 'tests/test_traversal.py')
| -rw-r--r-- | tests/test_traversal.py | 275 |
1 files changed, 183 insertions, 92 deletions
diff --git a/tests/test_traversal.py b/tests/test_traversal.py index 437fe46df..8521844b0 100644 --- a/tests/test_traversal.py +++ b/tests/test_traversal.py @@ -3,17 +3,13 @@ import unittest from pyramid.testing import cleanUp -from pyramid.compat import ( - text_, - native_, - text_type, - url_quote, - PY2, - ) +from pyramid.compat import text_, native_, text_type, url_quote, PY2 + class TraversalPathTests(unittest.TestCase): def _callFUT(self, path): from pyramid.traversal import traversal_path + return traversal_path(path) def test_utf8(self): @@ -26,6 +22,7 @@ class TraversalPathTests(unittest.TestCase): def test_utf16(self): from pyramid.exceptions import URLDecodeError + la = text_(b'La Pe\xc3\xb1a', 'utf-8').encode('utf-16') encoded = url_quote(la) path = '/'.join([encoded, encoded]) @@ -33,20 +30,26 @@ class TraversalPathTests(unittest.TestCase): def test_unicode_highorder_chars(self): path = text_('/%E6%B5%81%E8%A1%8C%E8%B6%8B%E5%8A%BF') - self.assertEqual(self._callFUT(path), - (text_('\u6d41\u884c\u8d8b\u52bf', 'unicode_escape'),)) + self.assertEqual( + self._callFUT(path), + (text_('\u6d41\u884c\u8d8b\u52bf', 'unicode_escape'),), + ) def test_element_urllquoted(self): - self.assertEqual(self._callFUT('/foo/space%20thing/bar'), - (text_('foo'), text_('space thing'), text_('bar'))) + self.assertEqual( + self._callFUT('/foo/space%20thing/bar'), + (text_('foo'), text_('space thing'), text_('bar')), + ) def test_unicode_undecodeable_to_ascii(self): path = text_(b'/La Pe\xc3\xb1a', 'utf-8') self.assertRaises(UnicodeEncodeError, self._callFUT, path) + class TraversalPathInfoTests(unittest.TestCase): def _callFUT(self, path): from pyramid.traversal import traversal_path_info + return traversal_path_info(path) def test_path_startswith_endswith(self): @@ -56,8 +59,9 @@ class TraversalPathInfoTests(unittest.TestCase): self.assertEqual(self._callFUT('foo///'), (text_('foo'),)) def test_onedot(self): - self.assertEqual(self._callFUT('foo/./bar'), - (text_('foo'), text_('bar'))) + self.assertEqual( + self._callFUT('foo/./bar'), (text_('foo'), text_('bar')) + ) def test_twodots(self): self.assertEqual(self._callFUT('foo/../bar'), (text_('bar'),)) @@ -88,10 +92,12 @@ class TraversalPathInfoTests(unittest.TestCase): def test_highorder_undecodeable(self): from pyramid.exceptions import URLDecodeError + la = text_(b'La Pe\xc3\xb1a', 'utf-8') notlatin1 = native_(la) self.assertRaises(URLDecodeError, self._callFUT, notlatin1) + class ResourceTreeTraverserTests(unittest.TestCase): def setUp(self): cleanUp() @@ -101,6 +107,7 @@ class ResourceTreeTraverserTests(unittest.TestCase): def _getTargetClass(self): from pyramid.traversal import ResourceTreeTraverser + return ResourceTreeTraverser def _makeOne(self, *arg, **kw): @@ -115,11 +122,13 @@ class ResourceTreeTraverserTests(unittest.TestCase): def test_class_conforms_to_ITraverser(self): from zope.interface.verify import verifyClass from pyramid.interfaces import ITraverser + verifyClass(ITraverser, self._getTargetClass()) def test_instance_conforms_to_ITraverser(self): from zope.interface.verify import verifyObject from pyramid.interfaces import ITraverser + context = DummyContext() verifyObject(ITraverser, self._makeOne(context)) @@ -249,12 +258,14 @@ class ResourceTreeTraverserTests(unittest.TestCase): self.assertEqual(result['context'], baz) self.assertEqual(result['view_name'], '') self.assertEqual(result['subpath'], ()) - self.assertEqual(result['traversed'], - (text_('foo'), text_('bar'), text_('baz'))) + self.assertEqual( + result['traversed'], (text_('foo'), text_('bar'), text_('baz')) + ) self.assertEqual(result['root'], root) self.assertEqual(result['virtual_root'], bar) - self.assertEqual(result['virtual_root_path'], - (text_('foo'), text_('bar'))) + self.assertEqual( + result['virtual_root_path'], (text_('foo'), text_('bar')) + ) def test_call_with_vh_root2(self): environ = self._getEnviron(HTTP_X_VHM_ROOT='/foo') @@ -268,8 +279,9 @@ class ResourceTreeTraverserTests(unittest.TestCase): self.assertEqual(result['context'], baz) self.assertEqual(result['view_name'], '') self.assertEqual(result['subpath'], ()) - self.assertEqual(result['traversed'], - (text_('foo'), text_('bar'), text_('baz'))) + self.assertEqual( + result['traversed'], (text_('foo'), text_('bar'), text_('baz')) + ) self.assertEqual(result['root'], root) self.assertEqual(result['virtual_root'], foo) self.assertEqual(result['virtual_root_path'], (text_('foo'),)) @@ -286,8 +298,9 @@ class ResourceTreeTraverserTests(unittest.TestCase): self.assertEqual(result['context'], baz) self.assertEqual(result['view_name'], '') self.assertEqual(result['subpath'], ()) - self.assertEqual(result['traversed'], - (text_('foo'), text_('bar'), text_('baz'))) + self.assertEqual( + result['traversed'], (text_('foo'), text_('bar'), text_('baz')) + ) self.assertEqual(result['root'], root) self.assertEqual(result['virtual_root'], root) self.assertEqual(result['virtual_root_path'], ()) @@ -304,12 +317,15 @@ class ResourceTreeTraverserTests(unittest.TestCase): self.assertEqual(result['context'], baz) self.assertEqual(result['view_name'], '') self.assertEqual(result['subpath'], ()) - self.assertEqual(result['traversed'], - (text_('foo'), text_('bar'), text_('baz'))) + self.assertEqual( + result['traversed'], (text_('foo'), text_('bar'), text_('baz')) + ) self.assertEqual(result['root'], root) self.assertEqual(result['virtual_root'], baz) - self.assertEqual(result['virtual_root_path'], - (text_('foo'), text_('bar'), text_('baz'))) + self.assertEqual( + result['virtual_root_path'], + (text_('foo'), text_('bar'), text_('baz')), + ) def test_call_with_vh_root_path_root(self): policy = self._makeOne(None) @@ -340,19 +356,14 @@ class ResourceTreeTraverserTests(unittest.TestCase): self.assertEqual(result['context'], bar) self.assertEqual(result['view_name'], '') self.assertEqual(result['subpath'], ()) - self.assertEqual( - result['traversed'], - (path, text_('bar')) - ) + self.assertEqual(result['traversed'], (path, text_('bar'))) self.assertEqual(result['root'], policy.root) self.assertEqual(result['virtual_root'], foo) - self.assertEqual( - result['virtual_root_path'], - (path,) - ) + self.assertEqual(result['virtual_root_path'], (path,)) def test_path_info_raises_unicodedecodeerror(self): from pyramid.exceptions import URLDecodeError + foo = DummyContext() root = DummyContext(foo) policy = self._makeOne(root) @@ -379,13 +390,13 @@ class ResourceTreeTraverserTests(unittest.TestCase): def test_withroute_with_subpath_string(self): resource = DummyContext() traverser = self._makeOne(resource) - matchdict = {'subpath':'/a/b/c'} + matchdict = {'subpath': '/a/b/c'} request = DummyRequest({}) request.matchdict = matchdict result = traverser(request) self.assertEqual(result['context'], resource) self.assertEqual(result['view_name'], '') - self.assertEqual(result['subpath'], ('a', 'b','c')) + self.assertEqual(result['subpath'], ('a', 'b', 'c')) self.assertEqual(result['traversed'], ()) self.assertEqual(result['root'], resource) self.assertEqual(result['virtual_root'], resource) @@ -394,13 +405,13 @@ class ResourceTreeTraverserTests(unittest.TestCase): def test_withroute_with_subpath_tuple(self): resource = DummyContext() traverser = self._makeOne(resource) - matchdict = {'subpath':('a', 'b', 'c')} + matchdict = {'subpath': ('a', 'b', 'c')} request = DummyRequest({}) request.matchdict = matchdict result = traverser(request) self.assertEqual(result['context'], resource) self.assertEqual(result['view_name'], '') - self.assertEqual(result['subpath'], ('a', 'b','c')) + self.assertEqual(result['subpath'], ('a', 'b', 'c')) self.assertEqual(result['traversed'], ()) self.assertEqual(result['root'], resource) self.assertEqual(result['virtual_root'], resource) @@ -409,7 +420,7 @@ class ResourceTreeTraverserTests(unittest.TestCase): def test_withroute_and_traverse_string(self): resource = DummyContext() traverser = self._makeOne(resource) - matchdict = {'traverse':text_('foo/bar')} + matchdict = {'traverse': text_('foo/bar')} request = DummyRequest({}) request.matchdict = matchdict result = traverser(request) @@ -424,7 +435,7 @@ class ResourceTreeTraverserTests(unittest.TestCase): def test_withroute_and_traverse_tuple(self): resource = DummyContext() traverser = self._makeOne(resource) - matchdict = {'traverse':('foo', 'bar')} + matchdict = {'traverse': ('foo', 'bar')} request = DummyRequest({}) request.matchdict = matchdict result = traverser(request) @@ -439,7 +450,7 @@ class ResourceTreeTraverserTests(unittest.TestCase): def test_withroute_and_traverse_empty(self): resource = DummyContext() traverser = self._makeOne(resource) - matchdict = {'traverse':''} + matchdict = {'traverse': ''} request = DummyRequest({}) request.matchdict = matchdict result = traverser(request) @@ -457,7 +468,7 @@ class ResourceTreeTraverserTests(unittest.TestCase): environ = self._getEnviron(HTTP_X_VHM_ROOT='/abc') request = DummyRequest(environ) traverser = self._makeOne(resource) - matchdict = {'traverse':text_('/foo/bar')} + matchdict = {'traverse': text_('/foo/bar')} request.matchdict = matchdict result = traverser(request) self.assertEqual(result['context'], abc) @@ -467,10 +478,12 @@ class ResourceTreeTraverserTests(unittest.TestCase): self.assertEqual(result['root'], resource) self.assertEqual(result['virtual_root'], abc) self.assertEqual(result['virtual_root_path'], ('abc',)) - + + class FindInterfaceTests(unittest.TestCase): def _callFUT(self, context, iface): from pyramid.traversal import find_interface + return find_interface(context, iface) def test_it_interface(self): @@ -488,8 +501,10 @@ class FindInterfaceTests(unittest.TestCase): baz.__name__ = 'baz' from zope.interface import directlyProvides from zope.interface import Interface + class IFoo(Interface): pass + directlyProvides(root, IFoo) result = self._callFUT(baz, IFoo) self.assertEqual(result.__name__, 'root') @@ -498,6 +513,7 @@ class FindInterfaceTests(unittest.TestCase): class DummyRoot(object): def __init__(self, child): self.child = child + baz = DummyContext() bar = DummyContext(baz) foo = DummyContext(bar) @@ -513,9 +529,11 @@ class FindInterfaceTests(unittest.TestCase): result = self._callFUT(baz, DummyRoot) self.assertEqual(result.__name__, 'root') + class FindRootTests(unittest.TestCase): def _callFUT(self, context): from pyramid.traversal import find_root + return find_root(context) def test_it(self): @@ -528,21 +546,25 @@ class FindRootTests(unittest.TestCase): result = self._callFUT(baz) self.assertEqual(result, dummy) + class FindResourceTests(unittest.TestCase): def _callFUT(self, context, name): from pyramid.traversal import find_resource + return find_resource(context, name) def _registerTraverser(self, traverser): from pyramid.threadlocal import get_current_registry + reg = get_current_registry() from pyramid.interfaces import ITraverser from zope.interface import Interface + reg.registerAdapter(traverser, (Interface,), ITraverser) def test_list(self): resource = DummyContext() - traverser = make_traverser({'context':resource, 'view_name':''}) + traverser = make_traverser({'context': resource, 'view_name': ''}) self._registerTraverser(traverser) result = self._callFUT(resource, ['']) self.assertEqual(result, resource) @@ -550,17 +572,19 @@ class FindResourceTests(unittest.TestCase): def test_generator(self): resource = DummyContext() - traverser = make_traverser({'context':resource, 'view_name':''}) + traverser = make_traverser({'context': resource, 'view_name': ''}) self._registerTraverser(traverser) + def foo(): yield '' + result = self._callFUT(resource, foo()) self.assertEqual(result, resource) self.assertEqual(resource.request.environ['PATH_INFO'], '/') def test_self_string_found(self): resource = DummyContext() - traverser = make_traverser({'context':resource, 'view_name':''}) + traverser = make_traverser({'context': resource, 'view_name': ''}) self._registerTraverser(traverser) result = self._callFUT(resource, '') self.assertEqual(result, resource) @@ -568,7 +592,7 @@ class FindResourceTests(unittest.TestCase): def test_self_tuple_found(self): resource = DummyContext() - traverser = make_traverser({'context':resource, 'view_name':''}) + traverser = make_traverser({'context': resource, 'view_name': ''}) self._registerTraverser(traverser) result = self._callFUT(resource, ()) self.assertEqual(result, resource) @@ -577,7 +601,7 @@ class FindResourceTests(unittest.TestCase): def test_relative_string_found(self): resource = DummyContext() baz = DummyContext() - traverser = make_traverser({'context':baz, 'view_name':''}) + traverser = make_traverser({'context': baz, 'view_name': ''}) self._registerTraverser(traverser) result = self._callFUT(resource, 'baz') self.assertEqual(result, baz) @@ -586,7 +610,7 @@ class FindResourceTests(unittest.TestCase): def test_relative_tuple_found(self): resource = DummyContext() baz = DummyContext() - traverser = make_traverser({'context':baz, 'view_name':''}) + traverser = make_traverser({'context': baz, 'view_name': ''}) self._registerTraverser(traverser) result = self._callFUT(resource, ('baz',)) self.assertEqual(result, baz) @@ -595,7 +619,7 @@ class FindResourceTests(unittest.TestCase): def test_relative_string_notfound(self): resource = DummyContext() baz = DummyContext() - traverser = make_traverser({'context':baz, 'view_name':'bar'}) + traverser = make_traverser({'context': baz, 'view_name': 'bar'}) self._registerTraverser(traverser) self.assertRaises(KeyError, self._callFUT, resource, 'baz') self.assertEqual(resource.request.environ['PATH_INFO'], 'baz') @@ -603,7 +627,7 @@ class FindResourceTests(unittest.TestCase): def test_relative_tuple_notfound(self): resource = DummyContext() baz = DummyContext() - traverser = make_traverser({'context':baz, 'view_name':'bar'}) + traverser = make_traverser({'context': baz, 'view_name': 'bar'}) self._registerTraverser(traverser) self.assertRaises(KeyError, self._callFUT, resource, ('baz',)) self.assertEqual(resource.request.environ['PATH_INFO'], 'baz') @@ -613,7 +637,7 @@ class FindResourceTests(unittest.TestCase): resource = DummyContext() resource.__parent__ = root resource.__name__ = 'baz' - traverser = make_traverser({'context':root, 'view_name':''}) + traverser = make_traverser({'context': root, 'view_name': ''}) self._registerTraverser(traverser) result = self._callFUT(resource, '/') self.assertEqual(result, root) @@ -625,7 +649,7 @@ class FindResourceTests(unittest.TestCase): resource = DummyContext() resource.__parent__ = root resource.__name__ = 'baz' - traverser = make_traverser({'context':root, 'view_name':''}) + traverser = make_traverser({'context': root, 'view_name': ''}) self._registerTraverser(traverser) result = self._callFUT(resource, ('',)) self.assertEqual(result, root) @@ -637,7 +661,7 @@ class FindResourceTests(unittest.TestCase): resource = DummyContext() resource.__parent__ = root resource.__name__ = 'baz' - traverser = make_traverser({'context':root, 'view_name':'fuz'}) + traverser = make_traverser({'context': root, 'view_name': 'fuz'}) self._registerTraverser(traverser) self.assertRaises(KeyError, self._callFUT, resource, '/') self.assertEqual(root.wascontext, True) @@ -648,7 +672,7 @@ class FindResourceTests(unittest.TestCase): resource = DummyContext() resource.__parent__ = root resource.__name__ = 'baz' - traverser = make_traverser({'context':root, 'view_name':'fuz'}) + traverser = make_traverser({'context': root, 'view_name': 'fuz'}) self._registerTraverser(traverser) self.assertRaises(KeyError, self._callFUT, resource, ('',)) self.assertEqual(root.wascontext, True) @@ -669,24 +693,27 @@ class FindResourceTests(unittest.TestCase): # solution: encode string to ascii in pyramid.traversal.traverse # before passing it along to webob as path_info from pyramid.traversal import ResourceTreeTraverser + unprintable = DummyContext() root = DummyContext(unprintable) unprintable.__parent__ = root unprintable.__name__ = text_( - b'/\xe6\xb5\x81\xe8\xa1\x8c\xe8\xb6\x8b\xe5\x8a\xbf', 'utf-8') + b'/\xe6\xb5\x81\xe8\xa1\x8c\xe8\xb6\x8b\xe5\x8a\xbf', 'utf-8' + ) root.__parent__ = None root.__name__ = None traverser = ResourceTreeTraverser self._registerTraverser(traverser) result = self._callFUT( - root, - text_(b'/%E6%B5%81%E8%A1%8C%E8%B6%8B%E5%8A%BF') - ) + root, text_(b'/%E6%B5%81%E8%A1%8C%E8%B6%8B%E5%8A%BF') + ) self.assertEqual(result, unprintable) + class ResourcePathTests(unittest.TestCase): def _callFUT(self, resource, *elements): from pyramid.traversal import resource_path + return resource_path(resource, *elements) def test_it(self): @@ -724,7 +751,7 @@ class ResourcePathTests(unittest.TestCase): root.__parent__ = None root.__name__ = 'flubadub' result = self._callFUT(root) - self.assertEqual(result, 'flubadub') # insane case + self.assertEqual(result, 'flubadub') # insane case def test_root_object_nonnull_name_indirect(self): root = DummyContext() @@ -734,7 +761,7 @@ class ResourcePathTests(unittest.TestCase): other.__parent__ = root other.__name__ = 'barker' result = self._callFUT(other) - self.assertEqual(result, 'flubadub/barker') # insane case + self.assertEqual(result, 'flubadub/barker') # insane case def test_nonroot_default(self): root = DummyContext() @@ -759,9 +786,11 @@ class ResourcePathTests(unittest.TestCase): result = self._callFUT(other2) self.assertEqual(result, '//other2') + class ResourcePathTupleTests(unittest.TestCase): def _callFUT(self, resource, *elements): from pyramid.traversal import resource_path_tuple + return resource_path_tuple(resource, *elements) def test_it(self): @@ -778,8 +807,9 @@ class ResourcePathTupleTests(unittest.TestCase): baz.__parent__ = bar baz.__name__ = 'baz' result = self._callFUT(baz, 'this/theotherthing', 'that') - self.assertEqual(result, ('','foo ', 'bar', 'baz', 'this/theotherthing', - 'that')) + self.assertEqual( + result, ('', 'foo ', 'bar', 'baz', 'this/theotherthing', 'that') + ) def test_root_default(self): root = DummyContext() @@ -796,7 +826,7 @@ class ResourcePathTupleTests(unittest.TestCase): other.__parent__ = root other.__name__ = 'other' result = self._callFUT(other) - self.assertEqual(result, ('', 'other',)) + self.assertEqual(result, ('', 'other')) def test_nonroot_default(self): root = DummyContext() @@ -821,9 +851,11 @@ class ResourcePathTupleTests(unittest.TestCase): result = self._callFUT(other2) self.assertEqual(result, ('', '', 'other2')) + class QuotePathSegmentTests(unittest.TestCase): def _callFUT(self, s): from pyramid.traversal import quote_path_segment + return quote_path_segment(s) def test_unicode(self): @@ -840,10 +872,11 @@ class QuotePathSegmentTests(unittest.TestCase): s = 12345 result = self._callFUT(s) self.assertEqual(result, '12345') - + def test_long(self): from pyramid.compat import long import sys + s = long(sys.maxsize + 1) result = self._callFUT(s) expected = str(s) @@ -853,27 +886,32 @@ class QuotePathSegmentTests(unittest.TestCase): class Foo(object): def __str__(self): return 'abc' + s = Foo() result = self._callFUT(s) self.assertEqual(result, 'abc') + class ResourceURLTests(unittest.TestCase): def _makeOne(self, context, url): return self._getTargetClass()(context, url) def _getTargetClass(self): from pyramid.traversal import ResourceURL + return ResourceURL def test_instance_conforms_to_IResourceURL(self): from pyramid.interfaces import IResourceURL from zope.interface.verify import verifyObject + context = DummyContext() request = DummyRequest() verifyObject(IResourceURL, self._makeOne(context, request)) def test_IResourceURL_attributes_with_vroot(self): from pyramid.interfaces import VH_ROOT_KEY + root = DummyContext() root.__parent__ = None root.__name__ = None @@ -883,16 +921,19 @@ class ResourceURLTests(unittest.TestCase): two = DummyContext() two.__parent__ = one two.__name__ = 'two' - environ = {VH_ROOT_KEY:'/one'} + environ = {VH_ROOT_KEY: '/one'} request = DummyRequest(environ) context_url = self._makeOne(two, request) self.assertEqual(context_url.physical_path, '/one/two/') self.assertEqual(context_url.virtual_path, '/two/') - self.assertEqual(context_url.physical_path_tuple, ('', 'one', 'two','')) + self.assertEqual( + context_url.physical_path_tuple, ('', 'one', 'two', '') + ) self.assertEqual(context_url.virtual_path_tuple, ('', 'two', '')) - + def test_IResourceURL_attributes_vroot_ends_with_slash(self): from pyramid.interfaces import VH_ROOT_KEY + root = DummyContext() root.__parent__ = None root.__name__ = None @@ -902,14 +943,16 @@ class ResourceURLTests(unittest.TestCase): two = DummyContext() two.__parent__ = one two.__name__ = 'two' - environ = {VH_ROOT_KEY:'/one/'} + environ = {VH_ROOT_KEY: '/one/'} request = DummyRequest(environ) context_url = self._makeOne(two, request) self.assertEqual(context_url.physical_path, '/one/two/') self.assertEqual(context_url.virtual_path, '/two/') - self.assertEqual(context_url.physical_path_tuple, ('', 'one', 'two','')) + self.assertEqual( + context_url.physical_path_tuple, ('', 'one', 'two', '') + ) self.assertEqual(context_url.virtual_path_tuple, ('', 'two', '')) - + def test_IResourceURL_attributes_no_vroot(self): root = DummyContext() root.__parent__ = None @@ -925,8 +968,13 @@ class ResourceURLTests(unittest.TestCase): context_url = self._makeOne(two, request) self.assertEqual(context_url.physical_path, '/one/two/') self.assertEqual(context_url.virtual_path, '/one/two/') - self.assertEqual(context_url.physical_path_tuple, ('', 'one', 'two','')) - self.assertEqual(context_url.virtual_path_tuple, ('', 'one', 'two', '')) + self.assertEqual( + context_url.physical_path_tuple, ('', 'one', 'two', '') + ) + self.assertEqual( + context_url.virtual_path_tuple, ('', 'one', 'two', '') + ) + class TestVirtualRoot(unittest.TestCase): def setUp(self): @@ -937,13 +985,16 @@ class TestVirtualRoot(unittest.TestCase): def _callFUT(self, resource, request): from pyramid.traversal import virtual_root + return virtual_root(resource, request) def _registerTraverser(self, traverser): from pyramid.threadlocal import get_current_registry + reg = get_current_registry() from pyramid.interfaces import ITraverser from zope.interface import Interface + reg.registerAdapter(traverser, (Interface,), ITraverser) def test_virtual_root_no_virtual_root_path(self): @@ -967,15 +1018,16 @@ class TestVirtualRoot(unittest.TestCase): def test_virtual_root_with_virtual_root_path(self): from pyramid.interfaces import VH_ROOT_KEY + root = DummyContext() root.__parent__ = None context = DummyContext() context.__name__ = 'one' context.__parent__ = root traversed_to = DummyContext() - environ = {VH_ROOT_KEY:'/one'} + environ = {VH_ROOT_KEY: '/one'} request = DummyRequest(environ) - traverser = make_traverser({'context':traversed_to, 'view_name':''}) + traverser = make_traverser({'context': traversed_to, 'view_name': ''}) self._registerTraverser(traverser) result = self._callFUT(context, request) self.assertEqual(result, traversed_to) @@ -996,6 +1048,7 @@ class TestVirtualRoot(unittest.TestCase): result = self._callFUT(context, request) self.assertEqual(result, context) + class TraverseTests(unittest.TestCase): def setUp(self): cleanUp() @@ -1005,56 +1058,62 @@ class TraverseTests(unittest.TestCase): def _callFUT(self, context, name): from pyramid.traversal import traverse + return traverse(context, name) def _registerTraverser(self, traverser): from pyramid.threadlocal import get_current_registry + reg = get_current_registry() from pyramid.interfaces import ITraverser from zope.interface import Interface + reg.registerAdapter(traverser, (Interface,), ITraverser) def test_request_has_registry(self): from pyramid.threadlocal import get_current_registry + resource = DummyContext() - traverser = make_traverser({'context':resource, 'view_name':''}) + traverser = make_traverser({'context': resource, 'view_name': ''}) self._registerTraverser(traverser) self._callFUT(resource, ['']) self.assertEqual(resource.request.registry, get_current_registry()) def test_list(self): resource = DummyContext() - traverser = make_traverser({'context':resource, 'view_name':''}) + traverser = make_traverser({'context': resource, 'view_name': ''}) self._registerTraverser(traverser) self._callFUT(resource, ['']) self.assertEqual(resource.request.environ['PATH_INFO'], '/') def test_generator(self): resource = DummyContext() - traverser = make_traverser({'context':resource, 'view_name':''}) + traverser = make_traverser({'context': resource, 'view_name': ''}) self._registerTraverser(traverser) + def foo(): yield '' + self._callFUT(resource, foo()) self.assertEqual(resource.request.environ['PATH_INFO'], '/') def test_self_string_found(self): resource = DummyContext() - traverser = make_traverser({'context':resource, 'view_name':''}) + traverser = make_traverser({'context': resource, 'view_name': ''}) self._registerTraverser(traverser) self._callFUT(resource, '') self.assertEqual(resource.request.environ['PATH_INFO'], '') def test_self_unicode_found(self): resource = DummyContext() - traverser = make_traverser({'context':resource, 'view_name':''}) + traverser = make_traverser({'context': resource, 'view_name': ''}) self._registerTraverser(traverser) self._callFUT(resource, text_('')) self.assertEqual(resource.request.environ['PATH_INFO'], '') def test_self_tuple_found(self): resource = DummyContext() - traverser = make_traverser({'context':resource, 'view_name':''}) + traverser = make_traverser({'context': resource, 'view_name': ''}) self._registerTraverser(traverser) self._callFUT(resource, ()) self.assertEqual(resource.request.environ['PATH_INFO'], '') @@ -1062,7 +1121,7 @@ class TraverseTests(unittest.TestCase): def test_relative_string_found(self): resource = DummyContext() baz = DummyContext() - traverser = make_traverser({'context':baz, 'view_name':''}) + traverser = make_traverser({'context': baz, 'view_name': ''}) self._registerTraverser(traverser) self._callFUT(resource, 'baz') self.assertEqual(resource.request.environ['PATH_INFO'], 'baz') @@ -1070,7 +1129,7 @@ class TraverseTests(unittest.TestCase): def test_relative_tuple_found(self): resource = DummyContext() baz = DummyContext() - traverser = make_traverser({'context':baz, 'view_name':''}) + traverser = make_traverser({'context': baz, 'view_name': ''}) self._registerTraverser(traverser) self._callFUT(resource, ('baz',)) self.assertEqual(resource.request.environ['PATH_INFO'], 'baz') @@ -1080,7 +1139,7 @@ class TraverseTests(unittest.TestCase): resource = DummyContext() resource.__parent__ = root resource.__name__ = 'baz' - traverser = make_traverser({'context':root, 'view_name':''}) + traverser = make_traverser({'context': root, 'view_name': ''}) self._registerTraverser(traverser) self._callFUT(resource, '/') self.assertEqual(root.wascontext, True) @@ -1091,7 +1150,7 @@ class TraverseTests(unittest.TestCase): resource = DummyContext() resource.__parent__ = root resource.__name__ = 'baz' - traverser = make_traverser({'context':root, 'view_name':''}) + traverser = make_traverser({'context': root, 'view_name': ''}) self._registerTraverser(traverser) self._callFUT(resource, ('',)) self.assertEqual(root.wascontext, True) @@ -1102,7 +1161,7 @@ class TraverseTests(unittest.TestCase): resource = DummyContext() resource.__parent__ = root resource.__name__ = 'baz' - traverser = make_traverser({'context':root, 'view_name':''}) + traverser = make_traverser({'context': root, 'view_name': ''}) self._registerTraverser(traverser) self._callFUT(resource, []) self.assertEqual(resource.wascontext, True) @@ -1118,19 +1177,24 @@ class TraverseTests(unittest.TestCase): from pyramid.interfaces import IRequestFactory from pyramid.request import Request from pyramid.threadlocal import get_current_registry + reg = get_current_registry() + class MyRequest(Request): pass + reg.registerUtility(MyRequest, IRequestFactory) resource = DummyContext() - traverser = make_traverser({'context':resource, 'view_name':''}) + traverser = make_traverser({'context': resource, 'view_name': ''}) self._registerTraverser(traverser) self._callFUT(resource, ['']) self.assertEqual(resource.request.__class__, MyRequest) + class TestDefaultRootFactory(unittest.TestCase): def _getTargetClass(self): from pyramid.traversal import DefaultRootFactory + return DefaultRootFactory def _makeOne(self, environ): @@ -1139,13 +1203,16 @@ class TestDefaultRootFactory(unittest.TestCase): def test_it(self): class DummyRequest(object): pass + root = self._makeOne(DummyRequest()) self.assertEqual(root.__parent__, None) self.assertEqual(root.__name__, None) + class Test__join_path_tuple(unittest.TestCase): def _callFUT(self, tup): from pyramid.traversal import _join_path_tuple + return _join_path_tuple(tup) def test_empty_tuple(self): @@ -1158,12 +1225,25 @@ class Test__join_path_tuple(unittest.TestCase): self.assertEqual(result, 'x') def test_segments_with_unsafes(self): - safe_segments = tuple(u"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-._~!$&'()*+,;=:@") + safe_segments = tuple( + u"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-._~!$&'()*+,;=:@" + ) result = self._callFUT(safe_segments) self.assertEqual(result, u'/'.join(safe_segments)) - unsafe_segments = tuple(chr(i) for i in range(0x20, 0x80) if not chr(i) in safe_segments) + (u'あ',) + unsafe_segments = tuple( + chr(i) for i in range(0x20, 0x80) if not chr(i) in safe_segments + ) + (u'あ',) result = self._callFUT(unsafe_segments) - self.assertEqual(result, u'/'.join(''.join('%%%02X' % (ord(c) if isinstance(c, str) else c) for c in unsafe_segment.encode('utf-8')) for unsafe_segment in unsafe_segments)) + self.assertEqual( + result, + u'/'.join( + ''.join( + '%%%02X' % (ord(c) if isinstance(c, str) else c) + for c in unsafe_segment.encode('utf-8') + ) + for unsafe_segment in unsafe_segments + ), + ) def make_traverser(result): @@ -1171,13 +1251,17 @@ def make_traverser(result): def __init__(self, context): self.context = context context.wascontext = True + def __call__(self, request): self.context.request = request return result + return DummyTraverser + class DummyContext(object): __parent__ = None + def __init__(self, next=None, name=None): self.next = next self.__name__ = name @@ -1188,11 +1272,17 @@ class DummyContext(object): return self.next def __repr__(self): - return '<DummyContext with name %s at id %s>'%(self.__name__, id(self)) + return '<DummyContext with name %s at id %s>' % ( + self.__name__, + id(self), + ) + class DummyRequest: - application_url = 'http://example.com:5432' # app_url never ends with slash + application_url = ( + 'http://example.com:5432' + ) # app_url never ends with slash matchdict = None matched_route = None @@ -1212,10 +1302,11 @@ class DummyRequest: self._path_info = v path_info = property(_get_path_info, _set_path_info) - + def _makeRequest(environ=None): from pyramid.registry import Registry + request = DummyRequest() request.registry = Registry() return request |
