diff options
| author | Chris McDonough <chrism@plope.com> | 2012-08-03 16:55:03 -0400 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2012-08-03 16:55:03 -0400 |
| commit | 4f0b02e36591d0cfbfa0e328e1e428b5a286c09c (patch) | |
| tree | 271360d8b989dab7aee28091371bb6678c9d53a6 | |
| parent | a00621e45ef29cde34469798144156c80a17a1e9 (diff) | |
| download | pyramid-4f0b02e36591d0cfbfa0e328e1e428b5a286c09c.tar.gz pyramid-4f0b02e36591d0cfbfa0e328e1e428b5a286c09c.tar.bz2 pyramid-4f0b02e36591d0cfbfa0e328e1e428b5a286c09c.zip | |
add some tests
| -rw-r--r-- | pyramid/config/predicates.py | 16 | ||||
| -rw-r--r-- | pyramid/tests/test_config/test_predicates.py | 143 |
2 files changed, 151 insertions, 8 deletions
diff --git a/pyramid/config/predicates.py b/pyramid/config/predicates.py index 24ec89c6b..6ea4b9ac8 100644 --- a/pyramid/config/predicates.py +++ b/pyramid/config/predicates.py @@ -18,26 +18,25 @@ class XHRPredicate(object): self.val = bool(val) def __text__(self): - return 'xhr = True' + return 'xhr = %s' % self.val def __phash__(self): - return 'xhr:%r' % (self.val,) + return 'xhr:%s' % self.val def __call__(self, context, request): - return request.is_xhr - + return bool(request.is_xhr) is self.val class RequestMethodPredicate(object): def __init__(self, val): self.val = as_sorted_tuple(val) def __text__(self): - return 'request method = %r' % (self.val,) + return 'request method = %s' % (','.join(self.val)) def __phash__(self): L = [] for v in self.val: - L.append('request_method:%r' % v) + L.append('request_method:%s' % v) return L def __call__(self, context, request): @@ -56,7 +55,7 @@ class PathInfoPredicate(object): return 'path_info = %s' % (self.orig,) def __phash__(self): - return 'path_info:%r' % (self.orig,) + return 'path_info:%s' % (self.orig,) def __call__(self, context, request): return self.val.match(request.upath_info) is not None @@ -67,6 +66,7 @@ class RequestParamPredicate(object): v = None if '=' in name: name, v = name.split('=', 1) + name, v = name.strip(), v.strip() if v is None: self.text = 'request_param %s' % (name,) else: @@ -78,7 +78,7 @@ class RequestParamPredicate(object): return self.text def __phash__(self): - return 'request_param:%r=%r' % (self.name, self.val) + return 'request_param:%s=%r' % (self.name, self.val) def __call__(self, context, request): if self.val is None: diff --git a/pyramid/tests/test_config/test_predicates.py b/pyramid/tests/test_config/test_predicates.py new file mode 100644 index 000000000..22d992404 --- /dev/null +++ b/pyramid/tests/test_config/test_predicates.py @@ -0,0 +1,143 @@ +import unittest + +from pyramid.compat import text_ + +class TestXHRPredicate(unittest.TestCase): + def _makeOne(self, val): + from pyramid.config.predicates import XHRPredicate + return XHRPredicate(val) + + def test___call___true(self): + inst = self._makeOne(True) + request = Dummy() + request.is_xhr = True + result = inst(None, request) + self.assertTrue(result) + + def test___call___false(self): + inst = self._makeOne(True) + request = Dummy() + request.is_xhr = False + result = inst(None, request) + self.assertFalse(result) + + def test___text__(self): + inst = self._makeOne(True) + self.assertEqual(inst.__text__(), 'xhr = True') + + def test___phash__(self): + inst = self._makeOne(True) + self.assertEqual(inst.__phash__(), 'xhr:True') + +class TestRequestMethodPredicate(unittest.TestCase): + def _makeOne(self, val): + from pyramid.config.predicates import RequestMethodPredicate + return RequestMethodPredicate(val) + + def test___call___true_single(self): + inst = self._makeOne('GET') + request = Dummy() + request.method = 'GET' + result = inst(None, request) + self.assertTrue(result) + + def test___call___true_multi(self): + inst = self._makeOne(('GET','HEAD')) + request = Dummy() + request.method = 'GET' + result = inst(None, request) + self.assertTrue(result) + + def test___call___false(self): + inst = self._makeOne(('GET','HEAD')) + request = Dummy() + request.method = 'POST' + result = inst(None, request) + self.assertFalse(result) + + def test___text__(self): + inst = self._makeOne(('HEAD','GET')) + self.assertEqual(inst.__text__(), 'request method = GET,HEAD') + + def test___phash__(self): + inst = self._makeOne(('HEAD','GET')) + self.assertEqual(inst.__phash__(), ['request_method:GET', + 'request_method:HEAD']) + +class TestPathInfoPredicate(unittest.TestCase): + def _makeOne(self, val): + from pyramid.config.predicates import PathInfoPredicate + return PathInfoPredicate(val) + + def test_ctor_compilefail(self): + from pyramid.exceptions import ConfigurationError + self.assertRaises(ConfigurationError, self._makeOne, '\\') + + def test___call___true(self): + inst = self._makeOne(r'/\d{2}') + request = Dummy() + request.upath_info = text_('/12') + result = inst(None, request) + self.assertTrue(result) + + def test___call___false(self): + inst = self._makeOne(r'/\d{2}') + request = Dummy() + request.upath_info = text_('/n12') + result = inst(None, request) + self.assertFalse(result) + + def test___text__(self): + inst = self._makeOne('/') + self.assertEqual(inst.__text__(), 'path_info = /') + + def test___phash__(self): + inst = self._makeOne('/') + self.assertEqual(inst.__phash__(), 'path_info:/') + +class TestRequestParamPredicate(unittest.TestCase): + def _makeOne(self, val): + from pyramid.config.predicates import RequestParamPredicate + return RequestParamPredicate(val) + + def test___call___true_exists(self): + inst = self._makeOne('abc') + request = Dummy() + request.params = {'abc':1} + result = inst(None, request) + self.assertTrue(result) + + def test___call___true_withval(self): + inst = self._makeOne('abc=1') + request = Dummy() + request.params = {'abc':'1'} + result = inst(None, request) + self.assertTrue(result) + + def test___call___false(self): + inst = self._makeOne('abc') + request = Dummy() + request.params = {} + result = inst(None, request) + self.assertFalse(result) + + def test___text__exists(self): + inst = self._makeOne('abc') + self.assertEqual(inst.__text__(), 'request_param abc') + + def test___text__withval(self): + inst = self._makeOne('abc= 1') + self.assertEqual(inst.__text__(), 'request_param abc = 1') + + def test___phash__exists(self): + inst = self._makeOne('abc') + self.assertEqual(inst.__phash__(), 'request_param:abc=None') + + def test___phash__withval(self): + inst = self._makeOne('abc= 1') + self.assertEqual(inst.__phash__(), "request_param:abc='1'") + +class Dummy(object): + def __init__(self, **kw): + self.__dict__.update(**kw) + |
