test_permissions.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. from __future__ import annotations
  2. from types import SimpleNamespace
  3. import pytest
  4. from pyrogram.enums import ChatMemberStatus
  5. def _member(status, **privileges):
  6. return SimpleNamespace(
  7. status=status,
  8. privileges=SimpleNamespace(**privileges) if privileges else None,
  9. )
  10. async def test_actor_and_bot_permissions_are_checked_at_execution(app_modules):
  11. service = app_modules.load("wbb.services.chat_management")
  12. app_modules.app.members[(-100, 999)] = _member(
  13. ChatMemberStatus.ADMINISTRATOR, can_restrict_members=True
  14. )
  15. app_modules.app.members[(-100, 10)] = _member(
  16. ChatMemberStatus.ADMINISTRATOR, can_restrict_members=True
  17. )
  18. await service.ensure_permission(-100, "can_restrict_members", actor_id=10)
  19. app_modules.app.members[(-100, 10)] = _member(ChatMemberStatus.MEMBER)
  20. with pytest.raises(service.ChatManagementError) as error:
  21. await service.ensure_permission(-100, "can_restrict_members", actor_id=10)
  22. assert error.value.code == "actor_permission_missing"
  23. app_modules.app.members[(-100, 999)] = _member(ChatMemberStatus.ADMINISTRATOR)
  24. with pytest.raises(service.ChatManagementError) as error:
  25. await service.ensure_permission(-100, "can_restrict_members", actor_id=None)
  26. assert error.value.code == "bot_permission_missing"