diff options
| author | Chris McDonough <chrism@plope.com> | 2010-10-25 10:29:31 -0400 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2010-10-25 10:29:31 -0400 |
| commit | 64372401084889a440c9d990a0febc221e3e4b5c (patch) | |
| tree | c8939a341505d19f19fa6918d264b4e1d95326f8 /repoze/bfg/tests/test_url.py | |
| parent | c8e78c2037806f3e5dab57de635bf80865b7061d (diff) | |
| download | pyramid-64372401084889a440c9d990a0febc221e3e4b5c.tar.gz pyramid-64372401084889a440c9d990a0febc221e3e4b5c.tar.bz2 pyramid-64372401084889a440c9d990a0febc221e3e4b5c.zip | |
first pass at converting bfg to pyramid namespace
Diffstat (limited to 'repoze/bfg/tests/test_url.py')
| -rw-r--r-- | repoze/bfg/tests/test_url.py | 304 |
1 files changed, 0 insertions, 304 deletions
diff --git a/repoze/bfg/tests/test_url.py b/repoze/bfg/tests/test_url.py deleted file mode 100644 index 1b6f7814c..000000000 --- a/repoze/bfg/tests/test_url.py +++ /dev/null @@ -1,304 +0,0 @@ -import unittest - -from repoze.bfg.testing import cleanUp - -class ModelURLTests(unittest.TestCase): - def setUp(self): - cleanUp() - - def tearDown(self): - cleanUp() - - def _callFUT(self, model, request, *elements, **kw): - from repoze.bfg.url import model_url - return model_url(model, request, *elements, **kw) - - def _registerContextURL(self, reg): - from repoze.bfg.interfaces import IContextURL - from zope.interface import Interface - class DummyContextURL(object): - def __init__(self, context, request): - pass - def __call__(self): - return 'http://example.com/context/' - reg.registerAdapter(DummyContextURL, (Interface, Interface), - IContextURL) - - def test_root_default(self): - request = _makeRequest() - self._registerContextURL(request.registry) - root = DummyContext() - result = self._callFUT(root, request) - self.assertEqual(result, 'http://example.com/context/') - - def test_extra_args(self): - request = _makeRequest() - self._registerContextURL(request.registry) - context = DummyContext() - result = self._callFUT(context, request, 'this/theotherthing', 'that') - self.assertEqual( - result, - 'http://example.com/context/this%2Ftheotherthing/that') - - def test_unicode_in_element_names(self): - request = _makeRequest() - self._registerContextURL(request.registry) - uc = unicode('La Pe\xc3\xb1a', 'utf-8') - context = DummyContext() - result = self._callFUT(context, request, uc) - self.assertEqual(result, - 'http://example.com/context/La%20Pe%C3%B1a') - - def test_element_names_url_quoted(self): - request = _makeRequest() - self._registerContextURL(request.registry) - context = DummyContext() - result = self._callFUT(context, request, 'a b c') - self.assertEqual(result, 'http://example.com/context/a%20b%20c') - - def test_with_query_dict(self): - request = _makeRequest() - self._registerContextURL(request.registry) - context = DummyContext() - uc = unicode('La Pe\xc3\xb1a', 'utf-8') - result = self._callFUT(context, request, 'a', query={'a':uc}) - self.assertEqual(result, - 'http://example.com/context/a?a=La+Pe%C3%B1a') - - def test_with_query_seq(self): - request = _makeRequest() - self._registerContextURL(request.registry) - context = DummyContext() - uc = unicode('La Pe\xc3\xb1a', 'utf-8') - result = self._callFUT(context, request, 'a', query=[('a', 'hi there'), - ('b', uc)]) - self.assertEqual(result, - 'http://example.com/context/a?a=hi+there&b=La+Pe%C3%B1a') - - def test_anchor_is_after_root_when_no_elements(self): - request = _makeRequest() - self._registerContextURL(request.registry) - context = DummyContext() - result = self._callFUT(context, request, anchor='a') - self.assertEqual(result, - 'http://example.com/context/#a') - - def test_anchor_is_after_elements_when_no_qs(self): - request = _makeRequest() - self._registerContextURL(request.registry) - context = DummyContext() - result = self._callFUT(context, request, 'a', anchor='b') - self.assertEqual(result, - 'http://example.com/context/a#b') - - def test_anchor_is_after_qs_when_qs_is_present(self): - request = _makeRequest() - self._registerContextURL(request.registry) - context = DummyContext() - result = self._callFUT(context, request, 'a', - query={'b':'c'}, anchor='d') - self.assertEqual(result, - 'http://example.com/context/a?b=c#d') - - def test_anchor_is_encoded_utf8_if_unicode(self): - request = _makeRequest() - self._registerContextURL(request.registry) - context = DummyContext() - uc = unicode('La Pe\xc3\xb1a', 'utf-8') - result = self._callFUT(context, request, anchor=uc) - self.assertEqual(result, - 'http://example.com/context/#La Pe\xc3\xb1a') - - def test_anchor_is_not_urlencoded(self): - request = _makeRequest() - self._registerContextURL(request.registry) - context = DummyContext() - result = self._callFUT(context, request, anchor=' /#') - self.assertEqual(result, - 'http://example.com/context/# /#') - - def test_no_IContextURL_registered(self): - # falls back to TraversalContextURL - root = DummyContext() - root.__name__ = '' - root.__parent__ = None - request = _makeRequest() - request.environ = {} - result = self._callFUT(root, request) - self.assertEqual(result, 'http://example.com:5432/') - - def test_no_registry_on_request(self): - from repoze.bfg.threadlocal import get_current_registry - reg = get_current_registry() - request = DummyRequest() - self._registerContextURL(reg) - root = DummyContext() - result = self._callFUT(root, request) - self.assertEqual(result, 'http://example.com/context/') - -class TestRouteUrl(unittest.TestCase): - def setUp(self): - cleanUp() - - def tearDown(self): - cleanUp() - - def _callFUT(self, *arg, **kw): - from repoze.bfg.url import route_url - return route_url(*arg, **kw) - - def test_with_elements(self): - from repoze.bfg.interfaces import IRoutesMapper - request = _makeRequest() - mapper = DummyRoutesMapper(route=DummyRoute('/1/2/3')) - request.registry.registerUtility(mapper, IRoutesMapper) - result = self._callFUT('flub', request, 'extra1', 'extra2', - a=1, b=2, c=3, _query={'a':1}, - _anchor=u"foo") - self.assertEqual(result, - 'http://example.com:5432/1/2/3/extra1/extra2?a=1#foo') - - def test_no_elements(self): - from repoze.bfg.interfaces import IRoutesMapper - request = _makeRequest() - mapper = DummyRoutesMapper(route=DummyRoute('/1/2/3')) - request.registry.registerUtility(mapper, IRoutesMapper) - result = self._callFUT('flub', request, a=1, b=2, c=3, _query={'a':1}, - _anchor=u"foo") - self.assertEqual(result, - 'http://example.com:5432/1/2/3?a=1#foo') - - def test_it_generation_error(self): - from repoze.bfg.interfaces import IRoutesMapper - request = _makeRequest() - mapper = DummyRoutesMapper(raise_exc=KeyError) - request.registry.registerUtility(mapper, IRoutesMapper) - mapper.raise_exc = KeyError - self.assertRaises(KeyError, self._callFUT, 'flub', request, a=1) - - def test_generate_doesnt_receive_query_or_anchor(self): - from repoze.bfg.interfaces import IRoutesMapper - route = DummyRoute(result='') - mapper = DummyRoutesMapper(route=route) - from zope.component import getSiteManager - sm = getSiteManager() - sm.registerUtility(mapper, IRoutesMapper) - request = DummyRequest() - result = self._callFUT('flub', request, _query=dict(name='some_name')) - self.assertEqual(route.kw, {}) # shouldnt have anchor/query - self.assertEqual(result, 'http://example.com:5432?name=some_name') - - def test_with_app_url(self): - from repoze.bfg.interfaces import IRoutesMapper - request = _makeRequest() - mapper = DummyRoutesMapper(route=DummyRoute(result='/1/2/3')) - request.registry.registerUtility(mapper, IRoutesMapper) - result = self._callFUT('flub', request, _app_url='http://example2.com') - self.assertEqual(result, 'http://example2.com/1/2/3') - - def test_with_pregenerator(self): - from repoze.bfg.interfaces import IRoutesMapper - request = _makeRequest() - route = DummyRoute(result='/1/2/3') - def pregenerator(request, elements, kw): - return ('a',), {'_app_url':'http://example2.com'} - route.pregenerator = pregenerator - mapper = DummyRoutesMapper(route=route) - request.registry.registerUtility(mapper, IRoutesMapper) - result = self._callFUT('flub', request) - self.assertEqual(result, 'http://example2.com/1/2/3/a') - self.assertEqual(route.kw, {}) # shouldnt have anchor/query - -class TestStaticUrl(unittest.TestCase): - def setUp(self): - cleanUp() - - def tearDown(self): - cleanUp() - - def _callFUT(self, *arg, **kw): - from repoze.bfg.url import static_url - return static_url(*arg, **kw) - - def test_staticurlinfo_notfound(self): - request = _makeRequest() - self.assertRaises(ValueError, self._callFUT, 'static/foo.css', request) - - def test_abspath(self): - request = _makeRequest() - self.assertRaises(ValueError, self._callFUT, '/static/foo.css', request) - - def test_found_rel(self): - from repoze.bfg.interfaces import IStaticURLInfo - request = _makeRequest() - info = DummyStaticURLInfo('abc') - request.registry.registerUtility(info, IStaticURLInfo) - result = self._callFUT('static/foo.css', request) - self.assertEqual(result, 'abc') - self.assertEqual(info.args, - ('repoze.bfg.tests:static/foo.css', request, {}) ) - - def test_found_abs(self): - from repoze.bfg.interfaces import IStaticURLInfo - request = _makeRequest() - info = DummyStaticURLInfo('abc') - request.registry.registerUtility(info, IStaticURLInfo) - result = self._callFUT('repoze.bfg.tests:static/foo.css', request) - self.assertEqual(result, 'abc') - self.assertEqual(info.args, - ('repoze.bfg.tests:static/foo.css', request, {}) ) - - def test_found_abs_no_registry_on_request(self): - from repoze.bfg.threadlocal import get_current_registry - from repoze.bfg.interfaces import IStaticURLInfo - request = DummyRequest() - registry = get_current_registry() - info = DummyStaticURLInfo('abc') - registry.registerUtility(info, IStaticURLInfo) - result = self._callFUT('repoze.bfg.tests:static/foo.css', request) - self.assertEqual(result, 'abc') - self.assertEqual(info.args, - ('repoze.bfg.tests:static/foo.css', request, {}) ) - -class DummyContext(object): - def __init__(self, next=None): - self.next = next - -class DummyRequest: - application_url = 'http://example.com:5432' # app_url never ends with slash - def __init__(self, environ=None): - if environ is None: - environ = {} - self.environ = environ - -class DummyRoutesMapper: - raise_exc = None - def __init__(self, route=None, raise_exc=False): - self.route = route - - def get_route(self, route_name): - return self.route - -class DummyRoute: - pregenerator = None - def __init__(self, result='/1/2/3'): - self.result = result - - def generate(self, kw): - self.kw = kw - return self.result - -def _makeRequest(environ=None): - from repoze.bfg.registry import Registry - request = DummyRequest(environ) - request.registry = Registry() - return request - -class DummyStaticURLInfo: - def __init__(self, result): - self.result = result - - def generate(self, path, request, **kw): - self.args = path, request, kw - return self.result - |
