Пример #1
0
    def test_revoke_permission(self, app):
        """revoke_permission should remove perm if set.

        It should not change anything if the permission given isn't set.
        """
        user = User()
        user.permissions = 0b111
        user.revoke_permission(0b10)
        assert user.permissions == 0b101
        user.revoke_permission(0b1)
        assert user.permissions == 0b100
        # Revoking unset permissions shouldn't change anything.
        user.revoke_permission(0b10)
        assert user.permissions == 0b100
        user.revoke_permission(0b1)
        assert user.permissions == 0b100
Пример #2
0
    def test_can(self, app):
        """can should return True if user has permission, False if not.

        Note:
            Permissions are in the form of set bits in an integer. Since the
            actual Permission attributes may change in the future, we can
            more easily test can() with dummy permissions here, it works the
            same way as using Permission attributes insted.
        """
        user = User()
        perm1 = 0b1
        perm2 = 0b10
        perm3 = 0b100
        user.permissions = perm1 | perm3    # 0b101
        assert user.can(perm1)
        assert user.can(perm3)
        assert not user.can(perm2)
Пример #3
0
    def test_update_permission(self, app):
        """update_permission returns True if updated, false if not.

        It should also change the user's permission if updated.
        """
        user = User()
        user.permissions = 0
        perm1 = 0b1
        perm2 = 0b10
        assert update_permission(user, perm1, True, 'perm1')
        assert user.can(perm1)
        assert not update_permission(user, perm1, True, 'perm1')
        assert user.can(perm1)
        assert update_permission(user, perm2, True, 'perm2')
        assert user.can(perm2)
        assert update_permission(user, perm1, False, 'perm1')
        assert not user.can(perm1)
        assert user.can(perm2)
Пример #4
0
 def test_grant_permission(self, app):
     """grant_permission should set a permission and not unset it."""
     user = User()
     user.permissions = 0
     perm1 = 0b1
     perm2 = 0b10
     perm3 = 0b100
     user.grant_permission(perm1)
     assert user.permissions == 0b1
     user.grant_permission(perm3)
     assert user.permissions == 0b101
     user.grant_permission(perm2)
     assert user.permissions == 0b111
     # Already set permissions should remain unchanged.
     user.grant_permission(perm1)
     assert user.permissions == 0b111
     user.grant_permission(perm2)
     assert user.permissions == 0b111
     user.grant_permission(perm3)
     assert user.permissions == 0b111