summaryrefslogtreecommitdiff
path: root/tests/test_config
diff options
context:
space:
mode:
authorBert JW Regeer <xistence@0x58.com>2020-07-05 20:45:21 -0700
committerGitHub <noreply@github.com>2020-07-05 20:45:21 -0700
commit5269b28e728a470b94f194bf8febd46278b1f356 (patch)
treea7b0f7e1f227bae84baf33240d7ea1831c894ce7 /tests/test_config
parent48a04855ad4f1f1ae6af934090f35a4ad035ed67 (diff)
parent5f37acda1c8af7cb288e792e2c82f728fe254818 (diff)
downloadpyramid-5269b28e728a470b94f194bf8febd46278b1f356.tar.gz
pyramid-5269b28e728a470b94f194bf8febd46278b1f356.tar.bz2
pyramid-5269b28e728a470b94f194bf8febd46278b1f356.zip
Merge pull request #3598 from merwok/feature/is_authenticated
Add Request.is_authenticated and is_authenticated predicate
Diffstat (limited to 'tests/test_config')
-rw-r--r--tests/test_config/test_predicates.py53
-rw-r--r--tests/test_config/test_routes.py12
-rw-r--r--tests/test_config/test_views.py40
3 files changed, 100 insertions, 5 deletions
diff --git a/tests/test_config/test_predicates.py b/tests/test_config/test_predicates.py
index 8017fc898..7e2f32786 100644
--- a/tests/test_config/test_predicates.py
+++ b/tests/test_config/test_predicates.py
@@ -19,6 +19,7 @@ class TestPredicateList(unittest.TestCase):
('containment', predicates.ContainmentPredicate),
('request_type', predicates.RequestTypePredicate),
('match_param', predicates.MatchParamPredicate),
+ ('is_authenticated', predicates.IsAuthenticatedPredicate),
('custom', predicates.CustomPredicate),
('traverse', predicates.TraversePredicate),
):
@@ -38,6 +39,19 @@ class TestPredicateList(unittest.TestCase):
def test_ordering_number_of_predicates(self):
from pyramid.config.predicates import predvalseq
+ order0, _, _ = self._callFUT(
+ xhr='xhr',
+ request_method='request_method',
+ path_info='path_info',
+ request_param='param',
+ match_param='foo=bar',
+ header='header',
+ accept='accept',
+ is_authenticated=True,
+ containment='containment',
+ request_type='request_type',
+ custom=predvalseq([DummyCustomPredicate()]),
+ )
order1, _, _ = self._callFUT(
xhr='xhr',
request_method='request_method',
@@ -121,6 +135,7 @@ class TestPredicateList(unittest.TestCase):
)
order11, _, _ = self._callFUT(xhr='xhr')
order12, _, _ = self._callFUT()
+ self.assertTrue(order1 > order0)
self.assertEqual(order1, order2)
self.assertTrue(order3 > order2)
self.assertTrue(order4 > order3)
@@ -131,7 +146,7 @@ class TestPredicateList(unittest.TestCase):
self.assertTrue(order9 > order8)
self.assertTrue(order10 > order9)
self.assertTrue(order11 > order10)
- self.assertTrue(order12 > order10)
+ self.assertTrue(order12 > order11)
def test_ordering_importance_of_predicates(self):
from pyramid.config.predicates import predvalseq
@@ -145,7 +160,8 @@ class TestPredicateList(unittest.TestCase):
order7, _, _ = self._callFUT(containment='containment')
order8, _, _ = self._callFUT(request_type='request_type')
order9, _, _ = self._callFUT(match_param='foo=bar')
- order10, _, _ = self._callFUT(
+ order10, _, _ = self._callFUT(is_authenticated=True)
+ order11, _, _ = self._callFUT(
custom=predvalseq([DummyCustomPredicate()])
)
self.assertTrue(order1 > order2)
@@ -157,6 +173,7 @@ class TestPredicateList(unittest.TestCase):
self.assertTrue(order7 > order8)
self.assertTrue(order8 > order9)
self.assertTrue(order9 > order10)
+ self.assertTrue(order10 > order11)
def test_ordering_importance_and_number(self):
from pyramid.config.predicates import predvalseq
@@ -296,6 +313,7 @@ class TestPredicateList(unittest.TestCase):
]
),
match_param='foo=bar',
+ is_authenticated=False,
)
self.assertEqual(predicates[0].text(), 'xhr = True')
self.assertEqual(
@@ -308,9 +326,10 @@ class TestPredicateList(unittest.TestCase):
self.assertEqual(predicates[6].text(), 'containment = containment')
self.assertEqual(predicates[7].text(), 'request_type = request_type')
self.assertEqual(predicates[8].text(), "match_param foo=bar")
- self.assertEqual(predicates[9].text(), 'custom predicate')
- self.assertEqual(predicates[10].text(), 'classmethod predicate')
- self.assertTrue(predicates[11].text().startswith('custom predicate'))
+ self.assertEqual(predicates[9].text(), "is_authenticated = False")
+ self.assertEqual(predicates[10].text(), 'custom predicate')
+ self.assertEqual(predicates[11].text(), 'classmethod predicate')
+ self.assertTrue(predicates[12].text().startswith('custom predicate'))
def test_predicate_text_is_correct_when_multiple(self):
_, predicates, _ = self._callFUT(
@@ -434,6 +453,30 @@ class TestPredicateList(unittest.TestCase):
request.headers = {'foo': 'nobar', 'spamme': 'ham'}
self.assertFalse(predicates[0](Dummy(), request))
+ def test_is_authenticated_true_matches(self):
+ _, predicates, _ = self._callFUT(is_authenticated=True)
+ request = DummyRequest()
+ request.is_authenticated = True
+ self.assertTrue(predicates[0](Dummy(), request))
+
+ def test_is_authenticated_true_fails(self):
+ _, predicates, _ = self._callFUT(is_authenticated=True)
+ request = DummyRequest()
+ request.is_authenticated = False
+ self.assertFalse(predicates[0](Dummy(), request))
+
+ def test_is_authenticated_false_matches(self):
+ _, predicates, _ = self._callFUT(is_authenticated=False)
+ request = DummyRequest()
+ request.is_authenticated = False
+ self.assertTrue(predicates[0](Dummy(), request))
+
+ def test_is_authenticated_false_fails(self):
+ _, predicates, _ = self._callFUT(is_authenticated=False)
+ request = DummyRequest()
+ request.is_authenticated = True
+ self.assertFalse(predicates[0](Dummy(), request))
+
def test_unknown_predicate(self):
from pyramid.exceptions import ConfigurationError
diff --git a/tests/test_config/test_routes.py b/tests/test_config/test_routes.py
index 8227784ec..605f61857 100644
--- a/tests/test_config/test_routes.py
+++ b/tests/test_config/test_routes.py
@@ -184,6 +184,18 @@ class RoutesConfiguratorMixinTests(unittest.TestCase):
request.params = {}
self.assertEqual(predicate(None, request), False)
+ def test_add_route_with_is_authenticated(self):
+ config = self._makeOne(autocommit=True)
+ config.add_route('name', 'path', is_authenticated=True)
+ route = self._assertRoute(config, 'name', 'path', 1)
+ predicate = route.predicates[0]
+ request = self._makeRequest(config)
+ request.is_authenticated = True
+ self.assertEqual(predicate(None, request), True)
+ request = self._makeRequest(config)
+ request.is_authenticated = False
+ self.assertEqual(predicate(None, request), False)
+
def test_add_route_with_custom_predicates(self):
import warnings
diff --git a/tests/test_config/test_views.py b/tests/test_config/test_views.py
index 2a55ad45d..09714d82e 100644
--- a/tests/test_config/test_views.py
+++ b/tests/test_config/test_views.py
@@ -1742,6 +1742,46 @@ class TestViewsConfigurationMixin(unittest.TestCase):
request.is_xhr = False
self._assertNotFound(wrapper, None, request)
+ def test_add_view_with_is_authenticated_true_matches(self):
+ from pyramid.renderers import null_renderer as nr
+
+ view = lambda *arg: 'OK'
+ config = self._makeOne(autocommit=True)
+ config.add_view(view=view, is_authenticated=True, renderer=nr)
+ wrapper = self._getViewCallable(config)
+ request = self._makeRequest(config)
+ request.is_authenticated = True
+ self.assertEqual(wrapper(None, request), 'OK')
+
+ def test_add_view_with_is_authenticated_true_no_match(self):
+ view = lambda *arg: 'OK'
+ config = self._makeOne(autocommit=True)
+ config.add_view(view=view, is_authenticated=True)
+ wrapper = self._getViewCallable(config)
+ request = self._makeRequest(config)
+ request.is_authenticated = False
+ self._assertNotFound(wrapper, None, request)
+
+ def test_add_view_with_is_authenticated_false_matches(self):
+ from pyramid.renderers import null_renderer as nr
+
+ view = lambda *arg: 'OK'
+ config = self._makeOne(autocommit=True)
+ config.add_view(view=view, is_authenticated=False, renderer=nr)
+ wrapper = self._getViewCallable(config)
+ request = self._makeRequest(config)
+ request.is_authenticated = False
+ self.assertEqual(wrapper(None, request), 'OK')
+
+ def test_add_view_with_is_authenticated_false_no_match(self):
+ view = lambda *arg: 'OK'
+ config = self._makeOne(autocommit=True)
+ config.add_view(view=view, is_authenticated=False)
+ wrapper = self._getViewCallable(config)
+ request = self._makeRequest(config)
+ request.is_authenticated = True
+ self._assertNotFound(wrapper, None, request)
+
def test_add_view_with_header_badregex(self):
view = lambda *arg: 'OK'
config = self._makeOne()