Tres Seaver
2017-06-05 2dc38ce516a5f0f54e2d011e7e305811beb44d26
Ensure that instances of 'AllPermissionsList' are iterable.

Cherry-pick 1814cda1f5ec85c24651bfd29645e4057ae5200e from master.

Closes #3073.
2 files modified
29 ■■■■ changed files
pyramid/security.py 5 ●●●● patch | view | raw | blame | history
pyramid/tests/test_security.py 24 ●●●●● patch | view | raw | blame | history
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__)
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())