test_permissions.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. """
  2. This test will use the default permissions found in
  3. flaskbb.utils.populate
  4. """
  5. import pytest
  6. from flaskbb.forum.models import Topic, Post
  7. from flaskbb.utils.permissions import *
  8. @pytest.fixture
  9. def topic_moderator(forum, moderator_user):
  10. topic = Topic(title="Test Topic Moderator")
  11. post = Post(content="Test Content Moderator")
  12. return topic.save(forum=forum, user=moderator_user, post=post)
  13. @pytest.fixture
  14. def topic_normal(forum, normal_user):
  15. topic = Topic(title="Test Topic Normal")
  16. post = Post(content="Test Content Normal")
  17. return topic.save(forum=forum, user=normal_user, post=post)
  18. def test_moderator_permissions_in_forum(
  19. forum, moderator_user, topic_normal, topic_moderator):
  20. """Test that the default groups are created correctly."""
  21. moderator_user.permissions = moderator_user.get_permissions()
  22. assert moderator_user in forum.moderators
  23. assert can_post_reply(moderator_user, forum)
  24. assert can_post_topic(moderator_user, forum)
  25. assert can_edit_post(moderator_user, topic_normal.user_id, forum)
  26. assert can_moderate(moderator_user, forum)
  27. assert can_delete_post(moderator_user, topic_normal.user_id, forum)
  28. assert can_delete_topic(moderator_user, topic_normal.user_id, forum)
  29. assert can_lock_topic(moderator_user, forum)
  30. assert can_merge_topic(moderator_user, forum)
  31. assert can_move_topic(moderator_user, forum)
  32. def test_moderator_permissions_without_forum(
  33. forum, moderator_user, topic_normal, topic_moderator):
  34. forum.moderators.remove(moderator_user)
  35. moderator_user.permissions = moderator_user.get_permissions()
  36. assert not moderator_user in forum.moderators
  37. assert not can_moderate(moderator_user, forum)
  38. assert can_post_reply(moderator_user, forum)
  39. assert can_post_topic(moderator_user, forum)
  40. assert not can_edit_post(moderator_user, topic_normal.user_id, forum)
  41. assert not can_delete_post(moderator_user, topic_normal.user_id, forum)
  42. assert not can_delete_topic(moderator_user, topic_normal.user_id, forum)
  43. assert not can_lock_topic(moderator_user, forum)
  44. assert not can_merge_topic(moderator_user, forum)
  45. assert not can_move_topic(moderator_user, forum)
  46. # Test with own topic
  47. assert can_delete_post(moderator_user, topic_moderator.user_id, forum)
  48. assert can_delete_topic(moderator_user, topic_moderator.user_id, forum)
  49. assert can_edit_post(moderator_user, topic_moderator.user_id, forum)
  50. def test_normal_permissions(forum, normal_user, topic_normal):
  51. normal_user.permissions = normal_user.get_permissions()
  52. assert not can_moderate(normal_user, forum)
  53. assert can_post_reply(normal_user, forum)
  54. assert can_post_topic(normal_user, forum)
  55. assert can_edit_post(normal_user, topic_normal.user_id, forum)
  56. assert not can_delete_post(normal_user, topic_normal.user_id, forum)
  57. assert not can_delete_topic(normal_user, topic_normal.user_id, forum)
  58. assert not can_lock_topic(normal_user, forum)
  59. assert not can_merge_topic(normal_user, forum)
  60. assert not can_move_topic(normal_user, forum)
  61. def test_admin_permissions(forum, admin_user, topic_normal):
  62. admin_user.permissions = admin_user.get_permissions()
  63. assert can_moderate(admin_user, forum)
  64. assert can_post_reply(admin_user, forum)
  65. assert can_post_topic(admin_user, forum)
  66. assert can_edit_post(admin_user, topic_normal.user_id, forum)
  67. assert can_delete_post(admin_user, topic_normal.user_id, forum)
  68. assert can_delete_topic(admin_user, topic_normal.user_id, forum)
  69. assert can_lock_topic(admin_user, forum)
  70. assert can_merge_topic(admin_user, forum)
  71. assert can_move_topic(admin_user, forum)
  72. def test_super_moderator_permissions(forum, super_moderator_user, topic_normal):
  73. super_moderator_user.permissions = super_moderator_user.get_permissions()
  74. assert can_moderate(super_moderator_user, forum)
  75. assert can_post_reply(super_moderator_user, forum)
  76. assert can_post_topic(super_moderator_user, forum)
  77. assert can_edit_post(super_moderator_user, topic_normal.user_id, forum)
  78. assert can_delete_post(super_moderator_user, topic_normal.user_id, forum)
  79. assert can_delete_topic(super_moderator_user, topic_normal.user_id, forum)
  80. assert can_lock_topic(super_moderator_user, forum)
  81. assert can_merge_topic(super_moderator_user, forum)
  82. assert can_move_topic(super_moderator_user, forum)