From 2dc38ce516a5f0f54e2d011e7e305811beb44d26 Mon Sep 17 00:00:00 2001 From: Tres Seaver <tseaver@palladion.com> Date: Mon, 05 Jun 2017 23:18:05 +0200 Subject: [PATCH] Ensure that instances of 'AllPermissionsList' are iterable. --- pyramid/tests/test_security.py | 24 ++++++++++++++++++++++-- pyramid/security.py | 5 ++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/pyramid/security.py b/pyramid/security.py index 82e6b73..035f09f 100644 --- a/pyramid/security.py +++ b/pyramid/security.py @@ -21,10 +21,13 @@ class AllPermissionsList(object): """ Stand in 'permission list' to represent all permissions """ + def __iter__(self): - return () + return iter(()) + def __contains__(self, other): return True + def __eq__(self, other): return isinstance(other, self.__class__) diff --git a/pyramid/tests/test_security.py b/pyramid/tests/test_security.py index 6d75ac8..5561a05 100644 --- a/pyramid/tests/test_security.py +++ b/pyramid/tests/test_security.py @@ -16,12 +16,32 @@ def _makeOne(self): return self._getTargetClass()() - def test_it(self): + def test_equality_w_self(self): thing = self._makeOne() self.assertTrue(thing.__eq__(thing)) - self.assertEqual(thing.__iter__(), ()) + + def test_equality_w_other_instances_of_class(self): + thing = self._makeOne() + other = self._makeOne() + self.assertTrue(thing.__eq__(other)) + + def test_equality_miss(self): + thing = self._makeOne() + other = object() + self.assertFalse(thing.__eq__(other)) + + def test_contains_w_string(self): + thing = self._makeOne() self.assertTrue('anything' in thing) + def test_contains_w_object(self): + thing = self._makeOne() + self.assertTrue(object() in thing) + + def test_iterable(self): + thing = self._makeOne() + self.assertEqual(list(thing), []) + def test_singleton(self): from pyramid.security import ALL_PERMISSIONS self.assertEqual(ALL_PERMISSIONS.__class__, self._getTargetClass()) -- Gitblit v1.9.3