summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2012-08-03 16:55:03 -0400
committerChris McDonough <chrism@plope.com>2012-08-03 16:55:03 -0400
commit4f0b02e36591d0cfbfa0e328e1e428b5a286c09c (patch)
tree271360d8b989dab7aee28091371bb6678c9d53a6
parenta00621e45ef29cde34469798144156c80a17a1e9 (diff)
downloadpyramid-4f0b02e36591d0cfbfa0e328e1e428b5a286c09c.tar.gz
pyramid-4f0b02e36591d0cfbfa0e328e1e428b5a286c09c.tar.bz2
pyramid-4f0b02e36591d0cfbfa0e328e1e428b5a286c09c.zip
add some tests
-rw-r--r--pyramid/config/predicates.py16
-rw-r--r--pyramid/tests/test_config/test_predicates.py143
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)
+