| 12345678910111213141516171819202122232425262728293031323334 |
- from __future__ import annotations
- from types import SimpleNamespace
- import pytest
- from pyrogram.enums import ChatMemberStatus
- def _member(status, **privileges):
- return SimpleNamespace(
- status=status,
- privileges=SimpleNamespace(**privileges) if privileges else None,
- )
- async def test_actor_and_bot_permissions_are_checked_at_execution(app_modules):
- service = app_modules.load("wbb.services.chat_management")
- app_modules.app.members[(-100, 999)] = _member(
- ChatMemberStatus.ADMINISTRATOR, can_restrict_members=True
- )
- app_modules.app.members[(-100, 10)] = _member(
- ChatMemberStatus.ADMINISTRATOR, can_restrict_members=True
- )
- await service.ensure_permission(-100, "can_restrict_members", actor_id=10)
- app_modules.app.members[(-100, 10)] = _member(ChatMemberStatus.MEMBER)
- with pytest.raises(service.ChatManagementError) as error:
- await service.ensure_permission(-100, "can_restrict_members", actor_id=10)
- assert error.value.code == "actor_permission_missing"
- app_modules.app.members[(-100, 999)] = _member(ChatMemberStatus.ADMINISTRATOR)
- with pytest.raises(service.ChatManagementError) as error:
- await service.ensure_permission(-100, "can_restrict_members", actor_id=None)
- assert error.value.code == "bot_permission_missing"
|