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
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)
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)
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